From a20fff1f133d0674dd8d44d8dba36384f83f8d9f Mon Sep 17 00:00:00 2001 From: Alexandre Macabies Date: Fri, 9 Dec 2016 19:37:02 +0100 Subject: [PATCH] Add preference to disable auto-hiding the top action bar; fixes #243 --- .travis.yml | 3 ++- .../com/ubergeek42/WeechatAndroid/service/P.java | 4 +++- .../ubergeek42/WeechatAndroid/utils/Constants.java | 1 + .../WeechatAndroid/utils/ToolbarController.java | 12 +++++++++++- weechat-android/src/main/res/values-fr/strings.xml | 2 ++ weechat-android/src/main/res/values/strings.xml | 2 ++ weechat-android/src/main/res/xml/preferences.xml | 1 + 7 files changed, 22 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 03467eef6..e898a3582 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,8 @@ addons: - python-openssl before_script: - - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && PATH="$HOME/.local/bin:$PATH" pip install --user google-api-python-client' + - 'export PATH="$HOME/.local/bin:$PATH"' + - pip install --user google-api-python-client # broken, see below with git depth 99999 # - git fetch --unshallow diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java index 71d42469d..0b50a9c8b 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java @@ -61,7 +61,7 @@ public static void init(@NonNull Context context) { ///////////////////////////////////////////////////////////////////////////////////////////// ui public static boolean sortBuffers, showTitle, filterBuffers, optimizeTraffic; - public static boolean filterLines; + public static boolean filterLines, autoHideActionbar; public static int maxWidth; public static boolean encloseNick, dimDownNonHumanLines; public static @Nullable DateFormat dateFormat; @@ -85,6 +85,7 @@ public static void loadUIPreferences() { // buffer-wide preferences filterLines = p.getBoolean(PREF_FILTER_LINES, PREF_FILTER_LINES_D); + autoHideActionbar = p.getBoolean(PREF_AUTO_HIDE_ACTIONBAR, PREF_AUTO_HIDE_ACTIONBAR_D); maxWidth = Integer.parseInt(p.getString(PREF_MAX_WIDTH, PREF_MAX_WIDTH_D)); encloseNick = p.getBoolean(PREF_ENCLOSE_NICK, PREF_ENCLOSE_NICK_D); dimDownNonHumanLines = p.getBoolean(PREF_DIM_DOWN, PREF_DIM_DOWN_D); @@ -182,6 +183,7 @@ public static void loadConnectionPreferences() { case PREF_SORT_BUFFERS: sortBuffers = p.getBoolean(key, PREF_SORT_BUFFERS_D); break; case PREF_SHOW_BUFFER_TITLES: showTitle = p.getBoolean(key, PREF_SHOW_BUFFER_TITLES_D); break; case PREF_FILTER_NONHUMAN_BUFFERS: filterBuffers = p.getBoolean(key, PREF_FILTER_NONHUMAN_BUFFERS_D); break; + case PREF_AUTO_HIDE_ACTIONBAR: autoHideActionbar = p.getBoolean(key, PREF_AUTO_HIDE_ACTIONBAR_D); break; // buffer-wide preferences case PREF_FILTER_LINES: filterLines = p.getBoolean(key, PREF_FILTER_LINES_D); break; diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/Constants.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/Constants.java index ca108cf6a..b4b12aa52 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/Constants.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/Constants.java @@ -53,6 +53,7 @@ public class Constants { // look & feel final static public String PREF_LOOKFEEL_GROUP = "lookfeel_group"; public static final String PREF_TEXT_SIZE = "text_size"; final public static String PREF_TEXT_SIZE_D = "12"; + public static final String PREF_AUTO_HIDE_ACTIONBAR = "auto_hide_actionbar"; public static final boolean PREF_AUTO_HIDE_ACTIONBAR_D = true; public static final String PREF_FILTER_LINES = "chatview_filters"; final public static boolean PREF_FILTER_LINES_D = true; public static final String PREF_PREFIX_ALIGN = "prefix_align"; final public static String PREF_PREFIX_ALIGN_D = "right"; final static public String PREF_MAX_WIDTH = "prefix_max_width"; final public static String PREF_MAX_WIDTH_D = "7"; diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/ToolbarController.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/ToolbarController.java index b2ae7c756..dbe288faf 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/ToolbarController.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/utils/ToolbarController.java @@ -9,6 +9,7 @@ import android.view.animation.DecelerateInterpolator; import com.ubergeek42.WeechatAndroid.R; +import com.ubergeek42.WeechatAndroid.service.P; public class ToolbarController implements ViewTreeObserver.OnGlobalLayoutListener { final Toolbar toolbar; @@ -26,6 +27,7 @@ public ToolbarController(AppCompatActivity activity) { } public void onUserScroll(int bottomHidden, int prevBottomHidden) { + if (!canAutoHide()) return; if (bottomHidden > prevBottomHidden) hide(); else if (bottomHidden < prevBottomHidden) show(); } @@ -35,15 +37,22 @@ public void onPageChangedOrSelected() { } public void onSoftwareKeyboardStateChanged(boolean visible) { + if (!canAutoHide()) return; if (keyboardVisible == visible) return; keyboardVisible = visible; if (visible) hide(); else show(); } + private boolean canAutoHide() { + if (P.autoHideActionbar) + return true; + show(); + return false; + } private void show() { - if (shown || keyboardVisible) return; + if (shown) return; shown = true; if (android.os.Build.VERSION.SDK_INT >= 14) toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start(); @@ -63,6 +72,7 @@ private void hide() { //////////////////////////////////////////////////////////////////////////////////////////////// @Override public void onGlobalLayout() { + if (!canAutoHide()) return; // if more than 300 pixels, its probably a keyboard... int heightDiff = root.getRootView().getHeight() - root.getHeight(); if (heightDiff > 300) diff --git a/weechat-android/src/main/res/values-fr/strings.xml b/weechat-android/src/main/res/values-fr/strings.xml index 2f1303c3d..fd5d9b5e1 100644 --- a/weechat-android/src/main/res/values-fr/strings.xml +++ b/weechat-android/src/main/res/values-fr/strings.xml @@ -179,4 +179,6 @@ Non aligné Aligné à droite Aligné sur l\'heure + Cacher la barre d\'action + Cacher la barre d\'action lorsque le clavier est affiché ou lors du défilement vers le haut diff --git a/weechat-android/src/main/res/values/strings.xml b/weechat-android/src/main/res/values/strings.xml index 8743558d5..e6ea3afc5 100644 --- a/weechat-android/src/main/res/values/strings.xml +++ b/weechat-android/src/main/res/values/strings.xml @@ -196,6 +196,8 @@ Look & feel Text Size + Hide action bar + Hide the top action bar when the keyboard is open or when scrolling up Filter messages Hide messages filtered by WeeChat (e.g. irc_smart_filter) Prefix alignment diff --git a/weechat-android/src/main/res/xml/preferences.xml b/weechat-android/src/main/res/xml/preferences.xml index 7db4a8f5e..7cb996b10 100644 --- a/weechat-android/src/main/res/xml/preferences.xml +++ b/weechat-android/src/main/res/xml/preferences.xml @@ -58,6 +58,7 @@ +