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 @@
-
+
+
@@ -85,13 +86,13 @@
-
+
+
+
-
-
+
-
-
+
\ 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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