// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.oliodevices.assist.app.fragments; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import butterknife.ButterKnife; import com.olio.communication.messages.MessageBuilder; import com.olio.communication.messages.MessagePayload; import com.olio.communication.requests.DeviceStatusRequest; import com.olio.data.object.bluetooth_status.BluetoothNotificationObserver; import com.olio.data.object.bluetooth_status.BluetoothStatus; import com.olio.data.object.transfer.FileTransfer; import com.olio.data.object.transfer.FileTransferObserver; import com.olio.data.object.unit.DeviceStatus; import com.olio.data.object.unit.DeviceStatusBuilder; import com.olio.olios.model.loaders.DataCreator; import com.olio.olios.model.loaders.OnUpdate; import com.olio.olios.model.loaders.UnitLoaderConfig; import com.olio.util.ALog; import com.olio.util.SharedUtils; import com.oliodevices.assist.app.api.UserManager; import com.oliodevices.assist.app.core.Utils; import com.oliodevices.assist.app.detectors.BroadcastDelegate; import com.oliodevices.assist.app.detectors.firmware.FirmwareUpdateHelper; import com.oliodevices.assist.app.views.BatteryLevelView; import java.io.Serializable; import java.util.concurrent.TimeUnit; // Referenced classes of package com.oliodevices.assist.app.fragments: // BaseFragment, TitleChanger public class AboutFragment extends BaseFragment implements TitleChanger { private class BatteryObserver extends BroadcastReceiver { final AboutFragment this$0; public void onReceive(Context context, Intent intent) { ALog.v("onReceive -- setBatteryLevel", new Object[0]); if (intent != null) { int i = intent.getIntExtra("battery_level", 0); setBatteryLevel(i); boolean flag = intent.getBooleanExtra("battery_charge_indicator", false); setCharging(flag); } } private BatteryObserver() { this$0 = AboutFragment.this; super(); } } private class FirmwareDetailsObserver extends BroadcastReceiver { final AboutFragment this$0; public void onReceive(Context context, Intent intent) { ALog.v("onReceive", new Object[0]); setFirmwareDetails(intent); } private FirmwareDetailsObserver() { this$0 = AboutFragment.this; super(); } } private class FirmwareTransferObserver implements FileTransferObserver, Serializable { private static final long serialVersionUID = 0x95215fce51dbf246L; final AboutFragment this$0; public void didStartDownload(FileTransfer filetransfer) { } public void downloadProgress(FileTransfer filetransfer) { ALog.d("downloadProgress -- %d percent", new Object[] { Integer.valueOf(transferPercent(filetransfer)) }); filetransfer.getStatus(); JVM INSTR tableswitch 1 3: default 52 // 1 327 // 2 52 // 3 53; goto _L1 _L2 _L1 _L3 _L1: return; _L3: mTransferIcon.setActivated(false); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(transferPercent(filetransfer))).append('%').toString()); mTransferStatus.setText(0x7f0601aa); if (!mIsConnected) goto _L5; else goto _L4 _L4: filetransfer.getPausedReason(); JVM INSTR tableswitch 1 6: default 168 // 1 222 // 2 237 // 3 252 // 4 267 // 5 282 // 6 297; goto _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L6: mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(0); mIsPaused = true; return; _L7: mTransferInstructions.setText(0x7f0601a1); goto _L6 _L8: mTransferInstructions.setText(0x7f0601a2); goto _L6 _L9: mTransferInstructions.setText(0x7f0601a5); goto _L6 _L10: mTransferInstructions.setText(0x7f0601a7); goto _L6 _L11: mTransferInstructions.setText(0x7f0601a3); goto _L6 _L12: mTransferInstructions.setText(0x7f0601a8); goto _L6 _L5: mTransferInstructions.setText(0x7f0601a4); goto _L6 _L2: mTransferIcon.setActivated(true); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(transferPercent(filetransfer))).append('%').toString()); mTransferStatus.setText(0x7f0601a0); mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(8); mIsPaused = false; return; } public String getFileName() { return null; } public String getIncomingFileDestination() { return null; } public void processFile(FileTransfer filetransfer) { } public void setContext(Context context) { } public void transferComplete(FileTransfer filetransfer) { ALog.d("transferComplete", new Object[0]); mTransferIcon.setActivated(true); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(transferPercent(filetransfer))).append('%').toString()); mTransferStatus.setText(0x7f06019f); mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(8); } public int transferType() { return 1; } private FirmwareTransferObserver() { this$0 = AboutFragment.this; super(); } } private static final long DEVICE_STATUS_REQUEST_MINIMUM_TIME; private static final String LEGAL_PAGE_URL = "https://www.oliodevices.com/terms"; private static final int MAX_BATTERY_LEVEL = 100; private static final int WATCH_STATUS_LOADER = 0; private boolean loaderByPassFlag; TextView mAppVersion; private String mAvailableFirmwareName; private String mAvailableFirmwareVersion; ImageView mBatteryChargingIcon; BatteryLevelView mBatteryLevelProgress; FrameLayout mBatteryLevelProgressContainer; TextView mBatteryLevelText; private BatteryObserver mBatteryObserver; LinearLayout mBatteryStatus; private BluetoothNotificationObserver mBluetoothConnectionObserver; ImageView mBluetoothConnectionStatusIcon; private String mCurrentWatchFWName; private String mCurrentWatchFWVersion; private boolean mDeviceStatusThreadInitialized; private FirmwareDetailsObserver mFirmwareDetailsObserver; private FileTransfer mFirmwareTransfer; private FirmwareTransferObserver mFirmwareTransferObserver; private boolean mIsConnected; private boolean mIsPaused; TextView mSerialNumber; TextView mSoftwareVersion; ImageView mTransferIcon; TextView mTransferInstructions; TextView mTransferProgress; TextView mTransferStatus; public AboutFragment() { mFirmwareTransfer = null; mAvailableFirmwareVersion = "unknown"; mAvailableFirmwareName = "unknown"; mCurrentWatchFWVersion = "unknown"; mCurrentWatchFWName = "unknown"; mIsConnected = false; mIsPaused = false; loaderByPassFlag = true; mDeviceStatusThreadInitialized = false; } private void initWatchLoader() { if (!mDeviceStatusThreadInitialized) { (new UnitLoaderConfig()).type("device-status").loaderId(0).activity(getActivity()).creator(new DataCreator() { final AboutFragment this$0; public volatile MessagePayload create() { return create(); } public DeviceStatus create() { return DeviceStatusBuilder.aDeviceStatus().setUnitId(UserManager.getInstance().getUnitId()).build(); } { this$0 = AboutFragment.this; super(); } }).updater(new OnUpdate() { final AboutFragment this$0; public void onUpdate(DeviceStatus devicestatus) { if (devicestatus == null) { return; } AboutFragment aboutfragment = AboutFragment.this; boolean flag; if (mIsConnected && devicestatus.isCharging()) { flag = true; } else { flag = false; } aboutfragment.setCharging(flag); setBatteryLevel(devicestatus.getBatteryLevel()); } public volatile void onUpdate(Object obj) { onUpdate((DeviceStatus)obj); } { this$0 = AboutFragment.this; super(); } }).key(UserManager.getInstance().getUnitId()).register(); mDeviceStatusThreadInitialized = true; } } private void setFirmwareDetails(Intent intent) { ALog.v("setFirmwareDetails", new Object[0]); if (intent != null) { String s = intent.getAction(); if ("com.oliodevices.assist.intent.action.FIRMWARE_AVAILABLE".equals(s)) { mAvailableFirmwareVersion = intent.getStringExtra("available_firmware_version"); mAvailableFirmwareName = intent.getStringExtra("available_firmware_name"); if (mAvailableFirmwareVersion != null && mAvailableFirmwareName != null) { ALog.d("received firmware update: %s %s", new Object[] { mAvailableFirmwareName, mAvailableFirmwareVersion }); intent = FirmwareUpdateHelper.getInstance(); mFirmwareTransfer = intent.getFirmwareTransfer(); if (mFirmwareTransfer != null) { ALog.d("transfer: %s", new Object[] { mFirmwareTransfer.toString() }); if (mFirmwareTransfer.getStatus() != 4) { ALog.d("setting transfer observer", new Object[0]); intent.setFirmwareTransferObserver(mFirmwareTransferObserver); } } setFirmwareInstructions(mAvailableFirmwareVersion, mAvailableFirmwareName, mCurrentWatchFWVersion, mCurrentWatchFWName); } } else if ("com.oliodevices.assist.intent.action.WATCH_VERSION".equals(s)) { mCurrentWatchFWVersion = intent.getStringExtra("watch_fw_version"); mCurrentWatchFWName = intent.getStringExtra("watch_fw_name"); if (mCurrentWatchFWVersion != null) { ALog.d("received watch version: %s %s", new Object[] { mCurrentWatchFWName, mCurrentWatchFWVersion }); mSoftwareVersion.setText(mCurrentWatchFWVersion); return; } } } } private void setFirmwareInstructions(String s, String s1, String s2, String s3) { int i = SharedUtils.getBuildNumberFromVersionString(s); int k = SharedUtils.getBuildNumberFromVersionString(s2); if (s2.equals(s) && s3.equals(s1)) { ALog.d("watch firmware already updated", new Object[0]); mTransferInstructions.setText(0x7f0601a9); mTransferIcon.setVisibility(8); mTransferProgress.setVisibility(8); mTransferStatus.setVisibility(8); mTransferInstructions.setVisibility(0); } else { ALog.d("tell user %s %s is available", new Object[] { s1, s }); if (mFirmwareTransfer == null) { s = "not found"; } else { s = "found"; } ALog.d("Transfer %s", new Object[] { s }); if (mFirmwareTransfer == null) { if (k != i || !s3.equals(s1)) { ALog.e("Transfer not found.", new Object[0]); mTransferProgress.setText(0x7f06019e); mTransferInstructions.setText(0x7f0601a6); mTransferProgress.setVisibility(0); mTransferInstructions.setVisibility(0); } else { ALog.e("This should NOT happen!", new Object[0]); mTransferInstructions.setText(0x7f0601a9); mTransferInstructions.setVisibility(0); mTransferProgress.setVisibility(8); } mTransferIcon.setVisibility(8); mTransferStatus.setVisibility(8); return; } if (mFirmwareTransfer.getStatus() == 3) { mIsPaused = true; mTransferIcon.setActivated(false); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(transferPercent(mFirmwareTransfer))).append('%').toString()); mTransferStatus.setText(0x7f0601aa); if (mIsConnected) { mTransferInstructions.setText(0x7f0601a1); } else { mTransferInstructions.setText(0x7f0601a4); } mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(0); return; } if (mFirmwareTransfer.getStatus() == 0) { boolean flag = BluetoothStatus.isBluetoothConnected(getActivity().getContentResolver(), com.olio.data.object.bluetooth_status.BluetoothNotificationObserver.Platform.PHONE); mTransferProgress.setText(0x7f06019e); s = mTransferInstructions; int j; if (flag) { j = 0x7f0601a1; } else { j = 0x7f0601a4; } s.setText(j); mTransferIcon.setVisibility(8); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(8); mTransferInstructions.setVisibility(0); return; } if (mFirmwareTransfer.getStatus() == 1) { ALog.d("downloadProgress -- %d percent", new Object[] { Integer.valueOf(transferPercent(mFirmwareTransfer)) }); mTransferIcon.setActivated(true); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(transferPercent(mFirmwareTransfer))).append('%').toString()); mTransferStatus.setText(0x7f0601a0); mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(8); return; } if (mFirmwareTransfer.getStatus() == 4) { ALog.w("The handler for transfer complete should have removed this transfer and applied the update. Try rebooting watch.", new Object[0]); return; } } } private int transferPercent(FileTransfer filetransfer) { return (int)(((long)filetransfer.getBytesTransferred() * 100L) / (long)filetransfer.getFileSize()); } public void onActivityCreated(Bundle bundle) { super.onActivityCreated(bundle); setActivityTitle(getActivity()); } public void onCreate(Bundle bundle) { ALog.v("onCreate", new Object[0]); super.onCreate(bundle); mFirmwareTransferObserver = new FirmwareTransferObserver(); mFirmwareDetailsObserver = new FirmwareDetailsObserver(); mBatteryObserver = new BatteryObserver(); mBluetoothConnectionObserver = new BluetoothNotificationObserver(getActivity().getContentResolver(), new Handler(getActivity().getMainLooper()), com.olio.data.object.bluetooth_status.BluetoothNotificationObserver.Platform.PHONE) { final AboutFragment this$0; public void connectionStatusUpdate(com.olio.data.object.bluetooth_status.BluetoothNotificationObserver.ConnectionStatusChange connectionstatuschange) { if (connectionstatuschange == com.olio.data.object.bluetooth_status.BluetoothNotificationObserver.ConnectionStatusChange.CONNECTED) { ALog.i("connectionStatusUpdate CONNECTED", new Object[0]); setConnected(true); } else if (connectionstatuschange == com.olio.data.object.bluetooth_status.BluetoothNotificationObserver.ConnectionStatusChange.DISCONNECTED) { ALog.i("connectionStatusUpdate DISCONNECTED", new Object[0]); setConnected(false); connectionstatuschange = FirmwareUpdateHelper.getInstance(); mFirmwareTransfer = connectionstatuschange.getFirmwareTransfer(); if (mFirmwareTransfer != null) { if (mFirmwareTransfer.getStatus() == 1) { ALog.d("pausing transfer", new Object[0]); connectionstatuschange.updateFirmwareTransfer(3, mFirmwareTransfer.getBytesTransferred(), 6); mIsPaused = true; int i = (int)(((long)mFirmwareTransfer.getBytesTransferred() * 100L) / (long)mFirmwareTransfer.getFileSize()); mTransferIcon.setActivated(false); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(i)).append('%').toString()); mTransferStatus.setText(0x7f0601aa); mTransferInstructions.setText(0x7f0601a4); mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(0); return; } if (mFirmwareTransfer.getStatus() == 0) { mTransferInstructions.setText(0x7f0601a4); mTransferIcon.setVisibility(8); mTransferProgress.setVisibility(8); mTransferStatus.setVisibility(8); mTransferInstructions.setVisibility(0); return; } if (mFirmwareTransfer.getStatus() == 3) { int j = (int)(((long)mFirmwareTransfer.getBytesTransferred() * 100L) / (long)mFirmwareTransfer.getFileSize()); mTransferIcon.setActivated(false); mTransferProgress.setText((new StringBuilder()).append(String.valueOf(j)).append('%').toString()); mTransferStatus.setText(0x7f0601aa); mTransferInstructions.setText(0x7f0601a4); mTransferIcon.setVisibility(0); mTransferProgress.setVisibility(0); mTransferStatus.setVisibility(0); mTransferInstructions.setVisibility(0); mIsPaused = true; return; } } } else { ALog.w("connectionStatusUpdate UNKNOWN", new Object[0]); return; } } public void statusUpdate(BluetoothStatus bluetoothstatus) { ALog.v("statusUpdate", new Object[0]); } { this$0 = AboutFragment.this; super(contentresolver, handler, platform); } }; } public View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) { layoutinflater = layoutinflater.inflate(0x7f030025, viewgroup, false); ButterKnife.inject(this, layoutinflater); return layoutinflater; } public void onDestroy() { mFirmwareTransferObserver = null; mBluetoothConnectionObserver = null; super.onDestroy(); } public void onLegalClick() { Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("https://www.oliodevices.com/terms")); if (intent.resolveActivity(getActivity().getPackageManager()) != null) { startActivity(intent); return; } else { Utils.showToastMessage(getActivity(), getString(0x7f0601b2)); return; } } public void onPause() { ALog.d("onPause -- clearing observers", new Object[0]); FirmwareUpdateHelper.getInstance().setFirmwareTransferObserver(null); ALog.i("Unregistering Firmware Details observer", new Object[0]); getActivity().unregisterReceiver(mFirmwareDetailsObserver); if (loaderByPassFlag) { ALog.i("Unregistering Battery observer", new Object[0]); getActivity().unregisterReceiver(mBatteryObserver); } ALog.i("Unregistering BT observer", new Object[0]); mBluetoothConnectionObserver.unregister(); super.onPause(); } public void onResume() { ALog.v("onResume", new Object[0]); super.onResume(); ALog.i("Registering BT observer", new Object[0]); mBluetoothConnectionObserver.register(); IntentFilter intentfilter; boolean flag; if (BluetoothStatus.bluetoothStatus(getActivity().getContentResolver()).getBluetooth3ConnectionStatus() == 3) { flag = true; } else { flag = false; } setConnected(flag); mAppVersion.setText("1.7.54"); mSerialNumber.setText(UserManager.getInstance().getUnitId()); intentfilter = new IntentFilter("com.oliodevices.assist.intent.action.FIRMWARE_AVAILABLE"); setFirmwareDetails(getActivity().registerReceiver(null, intentfilter)); intentfilter = new IntentFilter("com.oliodevices.assist.intent.action.WATCH_VERSION"); setFirmwareDetails(getActivity().registerReceiver(null, intentfilter)); ALog.i("Registering Firmware Details observer", new Object[0]); intentfilter = new IntentFilter("com.oliodevices.assist.intent.action.FIRMWARE_AVAILABLE"); intentfilter.addAction("com.oliodevices.assist.intent.action.WATCH_VERSION"); getActivity().registerReceiver(mFirmwareDetailsObserver, intentfilter); if (loaderByPassFlag) { IntentFilter intentfilter1 = new IntentFilter("com.oliodevices.assist.intent.action.UPDATE_BATTERY"); getActivity().registerReceiver(mBatteryObserver, intentfilter1); } (new AsyncTask() { final AboutFragment this$0; protected volatile Object doInBackground(Object aobj[]) { return doInBackground((Context[])aobj); } protected transient Void doInBackground(Context acontext[]) { acontext = acontext[0]; DeviceStatus devicestatus = DeviceStatus.get(acontext.getContentResolver()); if (devicestatus.getDateModified() == null || Math.abs(System.currentTimeMillis() - devicestatus.getDateModified().longValue()) > AboutFragment.DEVICE_STATUS_REQUEST_MINIMUM_TIME) { (new BroadcastDelegate(acontext)).sendMessage((new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setDestination("watch").setSource("phone").setPayload(new DeviceStatusRequest()).build()); } return null; } { this$0 = AboutFragment.this; super(); } }).execute(new Context[] { getActivity().getApplicationContext() }); } public void setActivityTitle(Activity activity) { activity.setTitle(0x7f0600f4); } public void setBatteryLevel(int i) { i = Math.max(i, 0); mBatteryLevelProgress.setMax(100); mBatteryLevelProgress.setProgress(i); mBatteryLevelText.setText(String.format("%d%%", new Object[] { Integer.valueOf(i) })); } public void setCharging(boolean flag) { ImageView imageview = mBatteryChargingIcon; int i; if (flag) { i = 0; } else { i = 8; } imageview.setVisibility(i); mBatteryLevelProgress.setCharging(flag); } public void setConnected(boolean flag) { mIsConnected = flag; } public void setLoaderByPassFlag(boolean flag) { loaderByPassFlag = flag; } static { DEVICE_STATUS_REQUEST_MINIMUM_TIME = TimeUnit.MINUTES.toMillis(5L); } /* static FileTransfer access$302(AboutFragment aboutfragment, FileTransfer filetransfer) { aboutfragment.mFirmwareTransfer = filetransfer; return filetransfer; } */ /* static boolean access$402(AboutFragment aboutfragment, boolean flag) { aboutfragment.mIsPaused = flag; return flag; } */ }