From 93e2bb2d3b61122ff70484890f7e62d740848502 Mon Sep 17 00:00:00 2001 From: Aleksander Nowakowski Date: Thu, 4 Jun 2015 17:17:25 +0200 Subject: [PATCH] Version 1.14.0 Switching to AppCompatActivity, better Navigation drawer, DFU bug fixed. --- app/app.iml | 15 +- app/build.gradle | 7 +- app/src/main/AndroidManifest.xml | 5 +- .../android/nrftoolbox/AppHelpFragment.java | 6 +- .../android/nrftoolbox/FeaturesActivity.java | 18 +- .../app/ExpandableListActivity.java | 11 +- .../android/nrftoolbox/bpm/BPMActivity.java | 2 +- .../csc/settings/SettingsActivity.java | 12 +- .../android/nrftoolbox/dfu/DfuActivity.java | 23 +- .../nrftoolbox/dfu/DfuInitiatorActivity.java | 6 +- .../dfu/fragment/UploadCancelFragment.java | 8 +- .../dfu/fragment/ZipInfoFragment.java | 6 +- .../dfu/settings/SettingsActivity.java | 14 +- .../dfu/settings/SettingsFragment.java | 12 +- .../nrftoolbox/gls/GlucoseManager.java | 2 +- .../android/nrftoolbox/hrs/HRSActivity.java | 3 +- .../hts/settings/SettingsActivity.java | 14 +- .../nrftoolbox/parser/TemplateParser.java | 3 - .../profile/BleProfileActivity.java | 16 +- .../BleProfileExpandableListActivity.java | 9 +- .../BleProfileServiceReadyActivity.java | 16 +- .../proximity/LinklossFragment.java | 8 +- .../proximity/ProximityActivity.java | 6 +- .../android/nrftoolbox/rsc/RSCActivity.java | 18 +- .../rsc/settings/SettingsActivity.java | 14 +- .../nrftoolbox/scanner/ScannerFragment.java | 8 +- .../template/settings/SettingsActivity.java | 14 +- .../android/nrftoolbox/uart/UARTActivity.java | 9 +- .../nrftoolbox/uart/UARTControlFragment.java | 2 +- .../nrftoolbox/uart/UARTEditDialog.java | 8 +- .../nrftoolbox/uart/UARTLogFragment.java | 10 +- .../android/nrftoolbox/uart/UARTManager.java | 6 + .../android/nrftoolbox/uart/UARTService.java | 26 +- .../widget/ForegroundLinearLayout.java | 148 +++++ .../widget/ForegroundRelativeLayout.java | 148 +++++ .../menu_text.xml} | 10 +- app/src/main/res/drawable-hdpi/ic_drawer.png | Bin 2755 -> 0 bytes .../main/res/drawable-hdpi/ic_menu_about.png | Bin 759 -> 0 bytes .../res/drawable-hdpi/ic_menu_settings.png | Bin 1540 -> 0 bytes .../res/drawable-hdpi/ic_permission_log.png | Bin 1386 -> 0 bytes .../res/drawable-hdpi/ic_stat_notify_dfu.png | Bin 993 -> 0 bytes .../list_divider_holo_light.9.png | Bin 76 -> 0 bytes app/src/main/res/drawable-xhdpi/ic_drawer.png | Bin 2767 -> 0 bytes .../main/res/drawable-xhdpi/ic_menu_about.png | Bin 951 -> 0 bytes .../res/drawable-xhdpi/ic_menu_settings.png | Bin 1641 -> 0 bytes .../res/drawable-xhdpi/ic_permission_log.png | Bin 1446 -> 0 bytes .../res/drawable-xhdpi/ic_stat_notify_dfu.png | Bin 1272 -> 0 bytes .../list_divider_holo_light.9.png | Bin 83 -> 0 bytes .../res/drawable-xhdpi/nordic_logo_horiz.png | Bin 23546 -> 0 bytes .../drawable-xhdpi/nordic_logo_horiz_dark.png | Bin 0 -> 18215 bytes .../drawable-xxhdpi/action_bar_shadow.9.png | Bin 0 -> 139 bytes .../res/layout-land/activity_feature_bpm.xml | 452 ++++++++------- .../res/layout-land/activity_feature_csc.xml | 390 +++++++------ .../res/layout-land/activity_feature_dfu.xml | 430 +++++++------- .../res/layout-land/activity_feature_gls.xml | 330 ++++++----- .../res/layout-land/activity_feature_hrs.xml | 218 +++---- .../res/layout-land/activity_feature_hts.xml | 149 ++--- .../activity_feature_proximity.xml | 168 +++--- .../res/layout-land/activity_feature_rsc.xml | 548 +++++++++--------- .../res/layout-land/activity_feature_uart.xml | 52 +- .../activity_feature_bpm.xml | 456 ++++++++------- .../activity_feature_csc.xml | 434 +++++++------- .../activity_feature_dfu.xml | 406 ++++++------- .../activity_feature_hrs.xml | 218 +++---- .../activity_feature_rsc.xml | 476 +++++++-------- .../main/res/layout/activity_feature_bpm.xml | 466 +++++++-------- .../main/res/layout/activity_feature_csc.xml | 434 +++++++------- .../main/res/layout/activity_feature_dfu.xml | 410 ++++++------- .../main/res/layout/activity_feature_gls.xml | 329 ++++++----- .../main/res/layout/activity_feature_hrs.xml | 222 +++---- .../main/res/layout/activity_feature_hts.xml | 149 ++--- .../res/layout/activity_feature_proximity.xml | 162 +++--- .../main/res/layout/activity_feature_rsc.xml | 476 +++++++-------- .../res/layout/activity_feature_template.xml | 204 +++---- .../main/res/layout/activity_feature_uart.xml | 47 +- app/src/main/res/layout/activity_features.xml | 77 ++- app/src/main/res/layout/activity_settings.xml | 40 ++ app/src/main/res/layout/drawer.xml | 87 ++- app/src/main/res/layout/drawer_plugin.xml | 10 +- app/src/main/res/layout/fragment_zip_info.xml | 1 - .../toolbar.xml} | 19 +- app/src/main/res/menu/help.xml | 3 +- app/src/main/res/menu/settings_and_about.xml | 8 +- app/src/main/res/values-sw600dp/dimens.xml | 3 +- .../main/res/values-sw720dp-land/dimens.xml | 1 - app/src/main/res/values-v21/dimens.xml | 9 +- app/src/main/res/values-v21/styles.xml | 25 +- .../attrs.xml} | 12 +- app/src/main/res/values/dimens.xml | 14 +- app/src/main/res/values/strings.xml | 3 - app/src/main/res/values/styles.xml | 100 ++-- app/src/main/res/xml/settings_rsc.xml | 4 +- nRFToolbox.iml | 6 +- 93 files changed, 4711 insertions(+), 3980 deletions(-) create mode 100644 app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundLinearLayout.java create mode 100644 app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundRelativeLayout.java rename app/src/main/res/{drawable/item_background_light.xml => color/menu_text.xml} (80%) delete mode 100644 app/src/main/res/drawable-hdpi/ic_drawer.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_menu_about.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_menu_settings.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_permission_log.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_stat_notify_dfu.png delete mode 100644 app/src/main/res/drawable-hdpi/list_divider_holo_light.9.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_drawer.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_menu_about.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_menu_settings.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_permission_log.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_stat_notify_dfu.png delete mode 100644 app/src/main/res/drawable-xhdpi/list_divider_holo_light.9.png delete mode 100644 app/src/main/res/drawable-xhdpi/nordic_logo_horiz.png create mode 100644 app/src/main/res/drawable-xhdpi/nordic_logo_horiz_dark.png create mode 100644 app/src/main/res/drawable-xxhdpi/action_bar_shadow.9.png create mode 100644 app/src/main/res/layout/activity_settings.xml rename app/src/main/res/{color/text_color_primary.xml => layout/toolbar.xml} (66%) rename app/src/main/res/{layout/dialog_about_text.xml => values/attrs.xml} (87%) diff --git a/app/app.iml b/app/app.iml index a5482ec1..a4d4a813 100644 --- a/app/app.iml +++ b/app/app.iml @@ -1,5 +1,5 @@ - + @@ -12,8 +12,9 @@ - - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index cc59358c..19fce4e2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "no.nordicsemi.android.nrftoolbox" minSdkVersion 18 targetSdkVersion 22 - versionCode 32 - versionName "1.13.1" + versionCode 33 + versionName "1.14.0" } buildTypes { release { @@ -20,7 +20,8 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:22.1.1' + compile 'com.android.support:appcompat-v7:22.2.0' + compile 'com.android.support:design:22.2.0' compile project(':..:DFULibrary:dfu') compile files('libs/achartengine-1.1.0.jar') compile files('libs/nrf-logger-v2.0.jar') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2547c9ff..e2de82ac 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,8 +23,8 @@ + android:versionCode="33" + android:versionName="1.14.1" > diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/AppHelpFragment.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/AppHelpFragment.java index 174eed8a..ea5e299c 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/AppHelpFragment.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/AppHelpFragment.java @@ -21,11 +21,12 @@ */ package no.nordicsemi.android.nrftoolbox; -import android.app.AlertDialog; import android.app.Dialog; -import android.app.DialogFragment; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.DialogFragment; +import android.support.v7.app.AlertDialog; public class AppHelpFragment extends DialogFragment { private static final String ARG_TEXT = "ARG_TEXT"; @@ -54,6 +55,7 @@ public class AppHelpFragment extends DialogFragment { } @Override + @NonNull public Dialog onCreateDialog(final Bundle savedInstanceState) { final Bundle args = getArguments(); final StringBuilder text = new StringBuilder(getString(args.getInt(ARG_TEXT))); diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/FeaturesActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/FeaturesActivity.java index 05cea846..af608004 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/FeaturesActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/FeaturesActivity.java @@ -34,8 +34,9 @@ import android.net.Uri; import android.os.Bundle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; -import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -50,7 +51,7 @@ import java.util.List; import no.nordicsemi.android.nrftoolbox.adapter.AppAdapter; -public class FeaturesActivity extends ActionBarActivity { +public class FeaturesActivity extends AppCompatActivity { private static final String MCP_CATEGORY = "no.nordicsemi.android.nrftoolbox.LAUNCHER"; private static final String UTILS_CATEGORY = "no.nordicsemi.android.nrftoolbox.UTILS"; private static final String MCP_PACKAGE = "no.nordicsemi.android.mcp"; @@ -65,6 +66,9 @@ public class FeaturesActivity extends ActionBarActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_features); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); + setSupportActionBar(toolbar); + // ensure that Bluetooth exists if (!ensureBLEExists()) finish(); @@ -73,7 +77,13 @@ public class FeaturesActivity extends ActionBarActivity { drawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); // Set the drawer toggle as the DrawerListener - mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close); + mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { + @Override + public void onDrawerSlide(final View drawerView, final float slideOffset) { + // Disable the Hamburger icon animation + super.onDrawerSlide(drawerView, 0); + } + }; drawer.setDrawerListener(mDrawerToggle); // setup plug-ins in the drawer @@ -117,7 +127,7 @@ public class FeaturesActivity extends ActionBarActivity { switch (item.getItemId()) { case R.id.action_about: final AppHelpFragment fragment = AppHelpFragment.getInstance(R.string.about_text, true); - fragment.show(getFragmentManager(), null); + fragment.show(getSupportFragmentManager(), null); break; } return true; diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/app/ExpandableListActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/app/ExpandableListActivity.java index aabd9fad..1e80c4ed 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/app/ExpandableListActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/app/ExpandableListActivity.java @@ -19,7 +19,8 @@ package no.nordicsemi.android.nrftoolbox.app; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; @@ -132,7 +133,7 @@ import no.nordicsemi.android.nrftoolbox.R; * @see #setListAdapter * @see android.widget.ExpandableListView */ -public class ExpandableListActivity extends ActionBarActivity implements +public class ExpandableListActivity extends AppCompatActivity implements OnCreateContextMenuListener, ExpandableListView.OnChildClickListener, ExpandableListView.OnGroupCollapseListener, ExpandableListView.OnGroupExpandListener { @@ -182,7 +183,7 @@ public class ExpandableListActivity extends ActionBarActivity implements * @see Activity#onRestoreInstanceState(Bundle) */ @Override - protected void onRestoreInstanceState(Bundle state) { + protected void onRestoreInstanceState(@NonNull Bundle state) { ensureList(); super.onRestoreInstanceState(state); } @@ -190,10 +191,10 @@ public class ExpandableListActivity extends ActionBarActivity implements /** * Updates the screen state (current list and other views) when the content changes. * - * @see ActionBarActivity#onSupportContentChanged() + * @see android.support.v7.app.AppCompatActivity#onContentChanged() */ @Override - public void onSupportContentChanged() { + public void onContentChanged() { super.onContentChanged(); View emptyView = findViewById(R.id.empty); mList = (ExpandableListView) findViewById(R.id.list); diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/bpm/BPMActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/bpm/BPMActivity.java index 7070575b..253d96f5 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/bpm/BPMActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/bpm/BPMActivity.java @@ -46,7 +46,7 @@ public class BPMActivity extends BleProfileActivity implements BPMManagerCallbac private TextView mTimestampView; @Override - protected void onCreateView(Bundle savedInstanceState) { + protected void onCreateView(final Bundle savedInstanceState) { setContentView(R.layout.activity_feature_bpm); setGUI(); } diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/settings/SettingsActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/settings/SettingsActivity.java index a88e50a0..b4e60d1d 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/settings/SettingsActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/csc/settings/SettingsActivity.java @@ -23,19 +23,25 @@ package no.nordicsemi.android.nrftoolbox.csc.settings; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.MenuItem; -public class SettingsActivity extends ActionBarActivity { +import no.nordicsemi.android.nrftoolbox.R; + +public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); + setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Display the fragment as the main content. - getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); + getFragmentManager().beginTransaction().replace(R.id.content, new SettingsFragment()).commit(); } @Override diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/dfu/DfuActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/dfu/DfuActivity.java index bb01dc25..a60d85bd 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/dfu/DfuActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/dfu/DfuActivity.java @@ -23,8 +23,6 @@ package no.nordicsemi.android.nrftoolbox.dfu; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; -import android.app.AlertDialog; -import android.app.FragmentManager; import android.app.LoaderManager.LoaderCallbacks; import android.app.NotificationManager; import android.bluetooth.BluetoothAdapter; @@ -47,8 +45,9 @@ import android.os.Handler; import android.preference.PreferenceManager; import android.provider.MediaStore; import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AlertDialog; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.Menu; import android.view.MenuItem; @@ -81,7 +80,7 @@ import no.nordicsemi.android.nrftoolbox.utility.DebugLogger; * DeviceScannerFragment.OnDeviceSelectedListener callback to receive callback when device is selected from scanning dialog The activity supports portrait and * landscape orientations */ -public class DfuActivity extends ActionBarActivity implements LoaderCallbacks, ScannerFragment.OnDeviceSelectedListener, +public class DfuActivity extends AppCompatActivity implements LoaderCallbacks, ScannerFragment.OnDeviceSelectedListener, UploadCancelFragment.CancelFragmentListener { private static final String TAG = "DfuActivity"; @@ -197,8 +196,9 @@ public class DfuActivity extends ActionBarActivity implements LoaderCallbacks 200) { diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/gls/GlucoseManager.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/gls/GlucoseManager.java index d940b4c0..9f3e6925 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/gls/GlucoseManager.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/gls/GlucoseManager.java @@ -512,7 +512,7 @@ public class GlucoseManager extends BleManager { /** * Sends the request to delete all data from the device. A Record Access Control Point indication with status code ({@link #RESPONSE_SUCCESS} (or other in case of error) will be send. * - * @FIXME This method is not supported by Nordic Semiconductor Glucose Service in SDK 4.4.2. + * FIXME This method is not supported by Nordic Semiconductor Glucose Service in SDK 4.4.2. */ public void deleteAllRecords() { if (mRecordAccessControlPointCharacteristic == null) diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/hrs/HRSActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/hrs/HRSActivity.java index 7817a32a..9c229e28 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/hrs/HRSActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/hrs/HRSActivity.java @@ -24,6 +24,7 @@ package no.nordicsemi.android.nrftoolbox.hrs; import android.graphics.Point; import android.os.Bundle; import android.os.Handler; +import android.support.annotation.NonNull; import android.view.ViewGroup; import android.widget.TextView; @@ -83,7 +84,7 @@ public class HRSActivity extends BleProfileActivity implements HRSManagerCallbac } @Override - protected void onRestoreInstanceState(final Bundle savedInstanceState) { + protected void onRestoreInstanceState(@NonNull final Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState != null) { diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/hts/settings/SettingsActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/hts/settings/SettingsActivity.java index 3c548fce..77d0a20b 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/hts/settings/SettingsActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/hts/settings/SettingsActivity.java @@ -23,19 +23,25 @@ package no.nordicsemi.android.nrftoolbox.hts.settings; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.MenuItem; -public class SettingsActivity extends ActionBarActivity { +import no.nordicsemi.android.nrftoolbox.R; + +public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.activity_settings); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); + setSupportActionBar(toolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Display the fragment as the main content. - getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); + getFragmentManager().beginTransaction().replace(R.id.content, new SettingsFragment()).commit(); } @Override diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/parser/TemplateParser.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/parser/TemplateParser.java index df136172..6d244353 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/parser/TemplateParser.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/parser/TemplateParser.java @@ -23,9 +23,6 @@ package no.nordicsemi.android.nrftoolbox.parser; import android.bluetooth.BluetoothGattCharacteristic; -import java.util.ArrayList; -import java.util.List; - // TODO this method may be used for developing purposes to log the data from your device using the nRF Logger application. public class TemplateParser { // TODO add some flags, if needed diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileActivity.java index 0f8de736..c7b04289 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileActivity.java @@ -29,7 +29,9 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -47,7 +49,7 @@ import no.nordicsemi.android.nrftoolbox.R; import no.nordicsemi.android.nrftoolbox.scanner.ScannerFragment; import no.nordicsemi.android.nrftoolbox.utility.DebugLogger; -public abstract class BleProfileActivity extends ActionBarActivity implements BleManagerCallbacks, ScannerFragment.OnDeviceSelectedListener { +public abstract class BleProfileActivity extends AppCompatActivity implements BleManagerCallbacks, ScannerFragment.OnDeviceSelectedListener { private static final String TAG = "BaseProfileActivity"; private static final String CONNECTION_STATUS = "connection_status"; @@ -82,6 +84,10 @@ public abstract class BleProfileActivity extends ActionBarActivity implements Bl mBleManager = initializeManager(); onInitialize(savedInstanceState); onCreateView(savedInstanceState); + + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); + setSupportActionBar(toolbar); + onViewCreated(savedInstanceState); } @@ -128,7 +134,7 @@ public abstract class BleProfileActivity extends ActionBarActivity implements Bl } @Override - protected void onRestoreInstanceState(final Bundle savedInstanceState) { + protected void onRestoreInstanceState(@NonNull final Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); mDeviceConnected = savedInstanceState.getBoolean(CONNECTION_STATUS); mDeviceName = savedInstanceState.getString(DEVICE_NAME); @@ -167,7 +173,7 @@ public abstract class BleProfileActivity extends ActionBarActivity implements Bl break; case R.id.action_about: final AppHelpFragment fragment = AppHelpFragment.getInstance(getAboutTextId()); - fragment.show(getFragmentManager(), "help_fragment"); + fragment.show(getSupportFragmentManager(), "help_fragment"); break; default: return onOptionsItemSelected(id); @@ -407,7 +413,7 @@ public abstract class BleProfileActivity extends ActionBarActivity implements Bl @Override public void run() { final ScannerFragment dialog = ScannerFragment.getInstance(BleProfileActivity.this, filter, discoverableRequired); - dialog.show(getFragmentManager(), "scan_fragment"); + dialog.show(getSupportFragmentManager(), "scan_fragment"); } }); } diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileExpandableListActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileExpandableListActivity.java index c9433866..edddbeb2 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileExpandableListActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileExpandableListActivity.java @@ -29,6 +29,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -82,6 +83,10 @@ public abstract class BleProfileExpandableListActivity extends ExpandableListAct mBleManager = initializeManager(); onInitialize(savedInstanceState); onCreateView(savedInstanceState); + + final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar); + setSupportActionBar(toolbar); + onViewCreated(savedInstanceState); } @@ -165,7 +170,7 @@ public abstract class BleProfileExpandableListActivity extends ExpandableListAct break; case R.id.action_about: final AppHelpFragment fragment = AppHelpFragment.getInstance(getAboutTextId()); - fragment.show(getFragmentManager(), "help_fragment"); + fragment.show(getSupportFragmentManager(), "help_fragment"); break; default: return onOptionsItemSelected(id); @@ -413,7 +418,7 @@ public abstract class BleProfileExpandableListActivity extends ExpandableListAct @Override public void run() { final ScannerFragment dialog = ScannerFragment.getInstance(BleProfileExpandableListActivity.this, filter, discoverableRequired); - dialog.show(getFragmentManager(), "scan_fragment"); + dialog.show(getSupportFragmentManager(), "scan_fragment"); } }); } diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileServiceReadyActivity.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileServiceReadyActivity.java index 7858eab0..d7121aa3 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileServiceReadyActivity.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/profile/BleProfileServiceReadyActivity.java @@ -36,8 +36,10 @@ import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.os.IBinder; +import android.support.annotation.NonNull; import android.support.v4.content.LocalBroadcastManager; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -67,7 +69,7 @@ import no.nordicsemi.android.nrftoolbox.utility.DebugLogger; * listens for it. When entering back to the activity, activity will to bind to the service and refresh UI. *

*/ -public abstract class BleProfileServiceReadyActivity extends ActionBarActivity implements +public abstract class BleProfileServiceReadyActivity extends AppCompatActivity implements ScannerFragment.OnDeviceSelectedListener, BleManagerCallbacks { private static final String TAG = "BleProfileServiceReadyActivity"; @@ -213,6 +215,10 @@ public abstract class BleProfileServiceReadyActivity { +public class UARTLogFragment extends ListFragment implements LoaderManager.LoaderCallbacks { private static final String SIS_LOG_SCROLL_POSITION = "sis_scroll_position"; private static final int LOG_SCROLL_NULL = -1; private static final int LOG_SCROLLED_TO_BOTTOM = -2; diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java index 62360698..65b9c25f 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTManager.java @@ -93,6 +93,12 @@ public class UARTManager extends BleManager { } }; + @Override + protected boolean shouldAutoConnect() { + // We want the connection to be kept + return true; + } + /** * Sends the given text to TH characteristic. * @param text the text to be sent diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTService.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTService.java index c76f41b1..eb547808 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTService.java +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/uart/UARTService.java @@ -192,14 +192,32 @@ public class UARTService extends BleProfileService implements UARTManagerCallbac }; /** - * Broadcast receiver that listens for {@link #ACTION_SEND} from other apps. Sends the String content of the {@link Intent#EXTRA_TEXT} extra to the remote device. + * Broadcast receiver that listens for {@link #ACTION_SEND} from other apps. Sends the String or int content of the {@link Intent#EXTRA_TEXT} extra to the remote device. + * The integer content will be sent as String (65 -> "65", not 65 -> "A"). */ private BroadcastReceiver mIntentBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) { - Logger.i(getLogSession(), "[Broadcast] Disconnect action pressed"); - final String message = intent.getStringExtra(Intent.EXTRA_TEXT); - mManager.send(message); + final boolean hasMessage = intent.hasExtra(Intent.EXTRA_TEXT); + if (hasMessage) { + String message = intent.getStringExtra(Intent.EXTRA_TEXT); + if (message == null) { + final int intValue = intent.getIntExtra(Intent.EXTRA_TEXT, Integer.MIN_VALUE); // how big is the chance of such data? + if (intValue != Integer.MIN_VALUE) + message = String.valueOf(intValue); + } + + if (message != null) { + Logger.i(getLogSession(), "[Broadcast] " + ACTION_SEND + " broadcast received with data: \"" + message + "\""); + mManager.send(message); + return; + } + } + // No data od incompatible type of EXTRA_TEXT + if (!hasMessage) + Logger.i(getLogSession(), "[Broadcast] " + ACTION_SEND + " broadcast received no data."); + else + Logger.i(getLogSession(), "[Broadcast] " + ACTION_SEND + " broadcast received incompatible data type. Only String and int are supported."); } }; diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundLinearLayout.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundLinearLayout.java new file mode 100644 index 00000000..42950e70 --- /dev/null +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundLinearLayout.java @@ -0,0 +1,148 @@ +/************************************************************************************************************************************************* + * Copyright (c) 2015, Nordic Semiconductor + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ************************************************************************************************************************************************/ + +package no.nordicsemi.android.nrftoolbox.widget; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.NinePatchDrawable; +import android.os.Build; +import android.support.annotation.NonNull; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import no.nordicsemi.android.nrftoolbox.R; + +public class ForegroundLinearLayout extends LinearLayout { + + private Drawable mForegroundSelector; + private Rect mRectPadding; + private boolean mUseBackgroundPadding = false; + + public ForegroundLinearLayout(Context context) { + super(context); + } + + public ForegroundLinearLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ForegroundLinearLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundRelativeLayout, + defStyle, 0); + + final Drawable d = a.getDrawable(R.styleable.ForegroundRelativeLayout_foreground); + if (d != null) { + setForeground(d); + } + + a.recycle(); + + if (this.getBackground() instanceof NinePatchDrawable) { + final NinePatchDrawable npd = (NinePatchDrawable) this.getBackground(); + mRectPadding = new Rect(); + if (npd.getPadding(mRectPadding)) { + mUseBackgroundPadding = true; + } + } + } + + @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + + if (mForegroundSelector != null && mForegroundSelector.isStateful()) { + mForegroundSelector.setState(getDrawableState()); + } + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + if (mForegroundSelector != null) { + if (mUseBackgroundPadding) { + mForegroundSelector.setBounds(mRectPadding.left, mRectPadding.top, w - mRectPadding.right, h - mRectPadding.bottom); + } else { + mForegroundSelector.setBounds(0, 0, w, h); + } + } + } + + @Override + protected void dispatchDraw(@NonNull Canvas canvas) { + super.dispatchDraw(canvas); + + if (mForegroundSelector != null) { + mForegroundSelector.draw(canvas); + } + } + + @Override + protected boolean verifyDrawable(Drawable who) { + return super.verifyDrawable(who) || (who == mForegroundSelector); + } + + @Override + public void jumpDrawablesToCurrentState() { + super.jumpDrawablesToCurrentState(); + if (mForegroundSelector != null) mForegroundSelector.jumpToCurrentState(); + } + + public void setForeground(Drawable drawable) { + if (mForegroundSelector != drawable) { + if (mForegroundSelector != null) { + mForegroundSelector.setCallback(null); + unscheduleDrawable(mForegroundSelector); + } + + mForegroundSelector = drawable; + + if (drawable != null) { + setWillNotDraw(false); + drawable.setCallback(this); + if (drawable.isStateful()) { + drawable.setState(getDrawableState()); + } + } else { + setWillNotDraw(true); + } + requestLayout(); + invalidate(); + } + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + @Override + public void drawableHotspotChanged(float x, float y) { + super.drawableHotspotChanged(x, y); + if (mForegroundSelector != null) { + mForegroundSelector.setHotspot(x, y); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundRelativeLayout.java b/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundRelativeLayout.java new file mode 100644 index 00000000..a0e3ab6c --- /dev/null +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/widget/ForegroundRelativeLayout.java @@ -0,0 +1,148 @@ +/************************************************************************************************************************************************* + * Copyright (c) 2015, Nordic Semiconductor + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ************************************************************************************************************************************************/ + +package no.nordicsemi.android.nrftoolbox.widget; + +import android.annotation.TargetApi; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.NinePatchDrawable; +import android.os.Build; +import android.support.annotation.NonNull; +import android.util.AttributeSet; +import android.widget.RelativeLayout; + +import no.nordicsemi.android.nrftoolbox.R; + +public class ForegroundRelativeLayout extends RelativeLayout { + + private Drawable mForegroundSelector; + private Rect mRectPadding; + private boolean mUseBackgroundPadding = false; + + public ForegroundRelativeLayout(Context context) { + super(context); + } + + public ForegroundRelativeLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public ForegroundRelativeLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ForegroundRelativeLayout, + defStyle, 0); + + final Drawable d = a.getDrawable(R.styleable.ForegroundRelativeLayout_foreground); + if (d != null) { + setForeground(d); + } + + a.recycle(); + + if (this.getBackground() instanceof NinePatchDrawable) { + final NinePatchDrawable npd = (NinePatchDrawable) this.getBackground(); + mRectPadding = new Rect(); + if (npd.getPadding(mRectPadding)) { + mUseBackgroundPadding = true; + } + } + } + + @Override + protected void drawableStateChanged() { + super.drawableStateChanged(); + + if (mForegroundSelector != null && mForegroundSelector.isStateful()) { + mForegroundSelector.setState(getDrawableState()); + } + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + + if (mForegroundSelector != null) { + if (mUseBackgroundPadding) { + mForegroundSelector.setBounds(mRectPadding.left, mRectPadding.top, w - mRectPadding.right, h - mRectPadding.bottom); + } else { + mForegroundSelector.setBounds(0, 0, w, h); + } + } + } + + @Override + protected void dispatchDraw(@NonNull Canvas canvas) { + super.dispatchDraw(canvas); + + if (mForegroundSelector != null) { + mForegroundSelector.draw(canvas); + } + } + + @Override + protected boolean verifyDrawable(Drawable who) { + return super.verifyDrawable(who) || (who == mForegroundSelector); + } + + @Override + public void jumpDrawablesToCurrentState() { + super.jumpDrawablesToCurrentState(); + if (mForegroundSelector != null) mForegroundSelector.jumpToCurrentState(); + } + + public void setForeground(Drawable drawable) { + if (mForegroundSelector != drawable) { + if (mForegroundSelector != null) { + mForegroundSelector.setCallback(null); + unscheduleDrawable(mForegroundSelector); + } + + mForegroundSelector = drawable; + + if (drawable != null) { + setWillNotDraw(false); + drawable.setCallback(this); + if (drawable.isStateful()) { + drawable.setState(getDrawableState()); + } + } else { + setWillNotDraw(true); + } + requestLayout(); + invalidate(); + } + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + @Override + public void drawableHotspotChanged(float x, float y) { + super.drawableHotspotChanged(x, y); + if (mForegroundSelector != null) { + mForegroundSelector.setHotspot(x, y); + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/item_background_light.xml b/app/src/main/res/color/menu_text.xml similarity index 80% rename from app/src/main/res/drawable/item_background_light.xml rename to app/src/main/res/color/menu_text.xml index b1d87923..c6d777f2 100644 --- a/app/src/main/res/drawable/item_background_light.xml +++ b/app/src/main/res/color/menu_text.xml @@ -1,5 +1,5 @@ - + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--> - - - - + + diff --git a/app/src/main/res/drawable-hdpi/ic_drawer.png b/app/src/main/res/drawable-hdpi/ic_drawer.png deleted file mode 100644 index bb40b7230dfee7aac8f56d0d0a27d9d075b5ceab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2755 zcmV;!3Ox0RP)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGf6951U69E94oEQKA05C~JK~zY`V_+ES zfbswT|NqI>%*e<{NDULMeK7Pb7zHB$jApdaj5Z2JGunvAXaHe~3>G=PQJnw)002ov JPDHLkV1g5}IgJ1S diff --git a/app/src/main/res/drawable-hdpi/ic_menu_about.png b/app/src/main/res/drawable-hdpi/ic_menu_about.png deleted file mode 100644 index c643fa54d6f557562948e3cd954a8aeb6dd1428b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmV6jHg@^|)F0u-H@R0WAAtwn^QcKLCPA_YbVBK+dXC=*kFyId3 z`!VnB_uk9`IB?*=!JP!9^n_A+!fXEC0N4FPwOZX5MNv#75<6b6*AgS9(<$`({a>;y z%jI&p&BcLQtrjAL~Z4EF+UNoFSb8e2u<2%fZfJhOM>a78Q z4*)RMlQ-ABs!r%ez~^I6eM%`ZIywXZzZJSyIZ!w7{vC5ER*0|Gb^sAi4Yn8$D5Y*n zsY`1UwsKJxi3*Pl$NV!vPoAgKxY9>#~qZi~-=C9y76YzMG1G9}zE>7_`em zqh?d6Zh`!N6|ILXG|Iw4TUN8sqVda8$LhliuN2C!Fn)X&9Ka>UKhcc$+u{I+bLyp0 z<2T7di#W2i4y=0fSvGCS+*=d!>UKxqrPd3%=Y0_XJU7wIo!Z$80RRwfa0ky$@oyc_ z&I!l1z5^y%=y0(PXul6P(hE%{6C*ljjB}=S>$1>bFu1meh1Tv!=eiA@$mWn`SuxrBb$CYyklDdcCW3I{n6yUPw_CX*3#L+hzP{G`dz4MPgaYbT`^) zG=4-Pk?*tFED;O_w>j_p&vv{0xlkw!4RwurkR<6@GMN-(vDmhi*XydP-l(c77mLL+ paKKnx%zjF`_n(&>IB@VE;16CbHSDphs15)C002ovPDHLkV1ijBR6PIy diff --git a/app/src/main/res/drawable-hdpi/ic_menu_settings.png b/app/src/main/res/drawable-hdpi/ic_menu_settings.png deleted file mode 100644 index 3e4580e0534c913abc5560067866b162e2972945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1540 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)$k4*r&A`yq$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OnfUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dHn#w6 zH+MC{Z5~u_3U0R;;B<>V&@uX;s6~oum=G}ifSB-v3*^9)erg^ty%zx!wp~edHv^DGL3_8x3M>HM>74`sP?u&i^;e1!olzNpA@uje7l2lq4t4XhL7>= zJysKrgx(i;l6IN5aoXW9cGIe#*Cf7arL5B7OBBc`es=Upt>hN5O|NHaJrMe!k{G@$ zYszwF-jjDG{ynfo!2kRLVe3gMn;KLdCQbT$YxRuJyO>#L&wJTx^K#Cj7F(-ou{6FE zi_lflZ8qUEk9e8(-52l*sF9izn&)9*CD^du_ufqvr42kcn0pM}f2k*&b&UJNu#E9} z&)Rs&rcaM1gs=Sfc5cLy)?FcH$xPN)EZ=YOc5Inoqq_YwCofaK3oNTbR^G_p zTKbZEs>k^!5}JY2wuGyx{`u0n=?d4(V$El7tWN1YODUaVWZI=&_G+_!%Jsk%>-|dJ zai=cYH=#u=sBoqEuP?2~Wc9wT+j1d~p(<_imq{z83aiVSp3E@VV*4m_;f}*Co<~`9 zI-Aceu?#+T|JXFuN%~4m<{`I2wu{}jU|%p-rR~Ht#XMav;T4i|?3O(G*Z<l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)(#YA^#MRZ*$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1O$kUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnrq& zG!Lpb1-DyVaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zu6S6tl7WHoj;D)b zNX4x;GxvKPaS%ARxx89VJxP&6Eb4~Fin&Y8%J#Li7H#ddYv@nVOj`WNxMS}RK6Ng! zuxbAslP7iGKOl1=G4Wd(+o89I)_a$IzkSAhre{p#G|##2$}4|%FfD4(Sn%v{_>MA3 z9Y*#oMeh^dRbQAawt;ik9*=lKC65C$+Zc9jOIA6M-6G%{qrt6Fuc-H6eZ|y!dscO} zo8K1``yi`yh`p)T0YddvTarCi6fsMI2}Ba zIoEei-2ZtVb?ppa%XVqxeG!;&4Qwk$7adUDtz z^=~%miGogBUPcyZylLdu7Phuq8Q%JDN#IrHsb+~^z(G}b6Mw<&;$U$7x5hc diff --git a/app/src/main/res/drawable-hdpi/ic_stat_notify_dfu.png b/app/src/main/res/drawable-hdpi/ic_stat_notify_dfu.png deleted file mode 100644 index 261078de2792d5a84deb8ef741a4f49a8ad30a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 993 zcmV<710MW|P)zHpNjf>DxzX;BNwaObj>`h)sF@TBPglGNKXBNOUAbx{M}PlE5X`bQ@BvD(=x zm^td^OzAi3gZ01^seP?@W>W^{O|`p;$5jxu-TXqu`|wI;{3iW2Lr7=#A=|U*wrp&pW{S z`1u-eD5~RTU@kBW>`W>B7GJ&&SP}dufH#2KfZu^_K!5CSO(~72gQ06Fa1XF~DzUDr z$JMK2?Gp89mQ(xHdx157?AangGUw=ce$?Sgf6j^)n%BX6oq}*8yD(0Rf%B6*1pZ*h|1zN@)<- z4GgGrYlc!v@1>M>1c1qCTZ|n*ZyBI=V0p|xDpB}Fi!4ieXV*CpbuoHL`Xqy6{3E+4Zm4<-KVqJC+*7mBIN4^A(6mq2zrL4kFmz8}r zkS_#Q0be&zxHQJ$+DE07)G0Ji``z-XPE zF)D0+N@*PE4lh(Qo}SG1S7m@kfxTH77Y!{24n&?klTxY{b;Q~pV5Pbx4%wlCCmxRR zK-erj81Gb1Mdx>GtX&*^&cQg;?u%}qO?^roDd^}^cgNxPy*iNHXA9I{WABAYZ~f?j z4u`<&@w=ifR2LQRpJ*j6tfOb1x}?}UsgFdHH>&ne^%8t2yAH0M#>;g{cv*FOvz_8+ zA^4-ZY8t?FMJrQlgZr9QaH)DEYeQDI0Oo?i1K@^#t7sr%t@^XNHg51c)N7{L%C1!R zWS)7vRaXy0GgYIv)$LJ<8%z4}>(p1W4^rKzwoOMe_GZr;3s0iw8pu46@%_|F$QyyG zMDsRO2iS`Z9+uy#kE!#{=2N;SdzHQuAbV!)&jxk1x*@{Yaqd5!|2_Q)D6}K%9+>qS P00000NkvXXu0mjfInv_8 diff --git a/app/src/main/res/drawable-hdpi/list_divider_holo_light.9.png b/app/src/main/res/drawable-hdpi/list_divider_holo_light.9.png deleted file mode 100644 index 0279e17a123f8cbb3c7e3a9ce5c5af8e693b6977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmeAS@N?(olHy`uVBq!ia0vp^%plCc1|-8Yw(bW~!k#XUAsp9}6B-)+^LX%RmN2q0 Ycy4A9FVZ~13zTN?boFyt=akR{01+Y(GXMYp diff --git a/app/src/main/res/drawable-xhdpi/ic_drawer.png b/app/src/main/res/drawable-xhdpi/ic_drawer.png deleted file mode 100644 index 0f04c4972d0507acaf96fb519b44760375e8b4e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2767 zcmV;=3NZDFP)|D^_ww@lRz|vCuzLs)$;-`! zo*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!& zC1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2hoGcOF60t^# zFqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTXa!E_i;d2ub z1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqKG_|(0G&D0Z z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl z*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY_n(^h55xYX z#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^bXThc7C4-yr zInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qjZ=)yBuQ3=5 z4Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK%>{;v(b^`kb zN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<)0>40zCTJ7v z2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01)S~6}jY?%U? zgEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j*2tcg9i<^O zEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfK zTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761jmyXF)a;mc z^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQqHZJR2&bcD4 z9Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^TY0bZ?)4%0 z1p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK8LKk71XR(_ zRKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS<&CX#T35dw zS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@qL5!WvekBL z-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW%ue3U;av{9 z4wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#o zSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%oZ=0JGnu?n~ z9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8No_-(u{qS+0 z<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-UsyQuty7Ua; zOu?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimkUAw*F_TX^n z@STz9kDQ$NC=!KfXWC z8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgUAAWQEt$#LR zcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6?<+s(e(3(_ z^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGf6951U69E94oEQKA06a-VK~z}7?bX2v z05AvyK`;IHe5oN2@H6`sSp?Y`ER(kVx-iMh{Mo($f#VGTEzkl2-T=@7Eg-NhZ~=*U V3>+Y!q<;Va002ovPDHLkV1fc~JN^Iw diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_about.png b/app/src/main/res/drawable-xhdpi/ic_menu_about.png deleted file mode 100644 index e4be458dd39a5fd4bc2cae830fb5b5db8d753143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951 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 HoD!M<*h&8R diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_notify_dfu.png b/app/src/main/res/drawable-xhdpi/ic_stat_notify_dfu.png deleted file mode 100644 index 6009fd1bdb39fbc7ab1383f90132072a329da9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1272 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 diff --git a/app/src/main/res/drawable-xhdpi/nordic_logo_horiz_dark.png b/app/src/main/res/drawable-xhdpi/nordic_logo_horiz_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..89309efe38da62801697521e5f1788f1487e8b06 GIT binary patch literal 18215 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 - - + - - - - - - - + android:layout_height="match_parent"> - + - + android:layout_centerVertical="true" + android:layout_marginLeft="@dimen/bpm_feature_title_long_margin" + android:rotation="270" + android:text="@string/bpm_feature_title_long" + android:textColor="@color/darkGray" + android:textSize="32dp" + android:textStyle="bold" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginTop="@dimen/feature_device_name_margin_top" + android:layout_toRightOf="@+id/battery" + android:ellipsize="end" + android:freezesText="true" + android:maxLines="1" + android:text="@string/bpm_default_name" + android:textAllCaps="true" + android:textAppearance="?android:attr/textAppearanceLarge" /> - + + + + android:text="@string/bpm_section_bp_header" /> - - + - + - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + android:layout_marginTop="@dimen/feature_vertical_margin_top" + android:layout_marginLeft="4dp" + android:layout_marginRight="4dp" + style="@style/Widget.List" + android:orientation="vertical" > - + + + + + + + + + + + + + + + android:layout_marginBottom="@dimen/activity_vertical_margin_bottom" + android:layout_marginTop="15dp" + android:layout_marginLeft="4dp" + android:layout_marginRight="4dp" + style="@style/Widget.List" + android:orientation="vertical" > + + + + + - -