From 78f6c7e6e2458c791e09469058626ac25ab7030f Mon Sep 17 00:00:00 2001 From: Gregor Santner Date: Sun, 7 Aug 2016 02:28:37 +0200 Subject: [PATCH] Optionally allow exit button in nav drawer --- .../activity/MainActivity.java | 19 +++++++++++++++++-- .../activity/SettingsActivity.java | 17 +++++++++++++++++ .../diaspora_android/data/AppSettings.java | 4 ++++ .../res/drawable/ic_cancel_black_48px.xml | 4 ++++ app/src/main/res/menu/main__navdrawer.xml | 6 ++++++ .../main/res/values/strings-preferences.xml | 11 +++++++++-- app/src/main/res/values/strings.xml | 1 - app/src/main/res/xml/preferences.xml | 6 ++++++ 8 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 app/src/main/res/drawable/ic_cancel_black_48px.xml diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index ea87ed23..4d910e3c 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -114,6 +114,7 @@ public class MainActivity extends AppCompatActivity public static final String ACTION_CHANGE_ACCOUNT = "com.github.dfa.diaspora_android.MainActivity.change_account"; public static final String ACTION_CLEAR_CACHE = "com.github.dfa.diaspora_android.MainActivity.clear_cache"; public static final String ACTION_UPDATE_TITLE_FROM_URL = "com.github.dfa.diaspora_android.MainActivity.set_title"; + public static final String ACTION_RELOAD_ACTIVITY = "com.github.dfa.diaspora_android.MainActivity.reload_activity"; public static final String URL_MESSAGE = "URL_MESSAGE"; public static final String EXTRA_URL = "com.github.dfa.diaspora_android.extra_url"; @@ -408,6 +409,10 @@ public class MainActivity extends AppCompatActivity app.getAvatarImageLoader().startImageDownload(navheaderImage, appSettings.getAvatarUrl()); } } + + Menu navMenu = navView.getMenu(); + navMenu.findItem(R.id.nav_exit).setVisible(appSettings.isShowExitButtonInNavAlso()); + } @OnClick(R.id.toolbar) @@ -454,6 +459,9 @@ public class MainActivity extends AppCompatActivity Helpers.animateToActivity(MainActivity.this, PodSelectionActivity.class, true); } else if (ACTION_CLEAR_CACHE.equals(action)) { webView.clearCache(true); + } else if (ACTION_RELOAD_ACTIVITY.equals(action)) { + recreate(); + return; } else if (Intent.ACTION_SEND.equals(action) && type != null) { switch (type) { case "text/plain": @@ -1062,8 +1070,8 @@ public class MainActivity extends AppCompatActivity } else { snackbarNoInternet.show(); } + break; } - break; case R.id.nav_public: { if (Helpers.isOnline(MainActivity.this)) { @@ -1071,8 +1079,15 @@ public class MainActivity extends AppCompatActivity } else { snackbarNoInternet.show(); } + break; + } + + + case R.id.nav_exit: { + moveTaskToBack(true); + finish(); + break; } - break; case R.id.nav_settings_app: { startActivity(new Intent(this, SettingsActivity.class)); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index c5d40ac0..87f429b0 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -38,6 +38,7 @@ import com.github.dfa.diaspora_android.R; public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { private SharedPreferences sharedPreferences; + private boolean activityRestartRequired = false; @Override public void onCreate(Bundle savedInstanceState) { @@ -124,6 +125,12 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer intent.setAction(MainActivity.ACTION_CLEAR_CACHE); break; } + case R.string.pref_title__show_exit_button_in_nav_also: + case R.string.pref_title__intellihide_toolbars: { + activityRestartRequired = true; + return true; + } + default: { intent = null; break; @@ -136,4 +143,14 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer } return super.onPreferenceTreeClick(screen, preference); } + + @Override + protected void onStop() { + super.onStop(); + if (activityRestartRequired){ + Intent intent = new Intent(this, MainActivity.class); + intent.setAction(MainActivity.ACTION_RELOAD_ACTIVITY); + startActivity(intent); + } + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 938e8bfd..82daf248 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -234,4 +234,8 @@ public class AppSettings { public boolean isIntellihideToolbars() { return getBoolean(prefApp, R.string.pref_key__intellihide_toolbars, true); } + + public boolean isShowExitButtonInNavAlso(){ + return getBoolean(prefApp, R.string.pref_key__show_exit_button_in_nav_also, false); + } } diff --git a/app/src/main/res/drawable/ic_cancel_black_48px.xml b/app/src/main/res/drawable/ic_cancel_black_48px.xml new file mode 100644 index 00000000..789bf6f4 --- /dev/null +++ b/app/src/main/res/drawable/ic_cancel_black_48px.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/menu/main__navdrawer.xml b/app/src/main/res/menu/main__navdrawer.xml index a9fff831..35569e1e 100644 --- a/app/src/main/res/menu/main__navdrawer.xml +++ b/app/src/main/res/menu/main__navdrawer.xml @@ -45,6 +45,12 @@ android:id="@+id/nav_public" android:icon="@drawable/jb_aspects" android:title="@string/nav_public_activities" /> + + diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index d3afc808..864b90bd 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -14,6 +14,8 @@ pref_key_category_network pref_key_load_images pref_key_clear_cache + pref_key__show_exit_button_in_nav_also + pref_key_append_shared_via_app pref_key_proxy_enabled pref_key_proxy_host @@ -21,6 +23,8 @@ wasProxyEnabled + + podUserProfile_avatar podUserProfile_name podUserProfile_guid @@ -55,11 +59,13 @@ Enable Proxy Proxy Diaspora\'s traffic to circumvent firewalls.\nMay require restart - Host - Port + Exit button in navigation slider + Adds an additional »Exit App« button to the navigation slider + + Personal settings Open your diaspora account settings @@ -83,4 +89,5 @@ Append shared-by-notice Append a reference to this app ("shared by…") to shared texts + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9bb88634..ab79e952 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -169,7 +169,6 @@ <i>The splashscreen images can be found on flickr: https://www.flickr.com/photos/129581906@N06/sets/72157651933980136/with/16594947123. They were published by \"Lydia\" and are licensed under cc by-nc-sa.</i> - diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index f1c8778a..336ac6df 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -24,6 +24,12 @@ android:summary="@string/pref_desc__append_shared_via_app" android:title="@string/pref_title__append_shared_via_app"/> + +