aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@wolfpuppy.org.uk>2012-10-27 21:21:48 +0100
committerTorne (Richard Coles) <torne@wolfpuppy.org.uk>2012-10-27 21:21:48 +0100
commitd59ed74b91d261197e3f9bc00eddfead61abb9f7 (patch)
treed87109c75671a344b720db54252896c06733a75a
parent7e55e7a846cbc86cb8e47cd04343218988a32093 (diff)
downloadconnectbot-d59ed74b91d261197e3f9bc00eddfead61abb9f7.tar.gz
connectbot-d59ed74b91d261197e3f9bc00eddfead61abb9f7.tar.bz2
connectbot-d59ed74b91d261197e3f9bc00eddfead61abb9f7.zip
Auto-hide the action bar.
On honeycomb and later devices, hide the action bar and only show it when the screen is touched, the same way as the ctrl/esc keys work. This avoids using up a chunk of screen space all the time just to have a menu button.
-rw-r--r--res/values-v11/styles.xml6
-rw-r--r--src/org/connectbot/ActionBarWrapper.java75
-rw-r--r--src/org/connectbot/ConsoleActivity.java22
-rw-r--r--src/org/connectbot/util/PreferenceConstants.java7
4 files changed, 106 insertions, 4 deletions
diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml
index cf9636b..0b509ab 100644
--- a/res/values-v11/styles.xml
+++ b/res/values-v11/styles.xml
@@ -20,5 +20,11 @@
<resources>
<style name="NoTitle" parent="android:Theme.Holo">
<item name="android:windowContentOverlay">@null</item>
+ <item name="android:windowActionBarOverlay">true</item>
+ <item name="android:actionBarStyle">@style/SolidActionBar</item>
+ </style>
+
+ <style name="SolidActionBar" parent="android:Widget.Holo.ActionBar">
+ <item name="android:background">#222222</item>
</style>
</resources>
diff --git a/src/org/connectbot/ActionBarWrapper.java b/src/org/connectbot/ActionBarWrapper.java
new file mode 100644
index 0000000..e3b517c
--- /dev/null
+++ b/src/org/connectbot/ActionBarWrapper.java
@@ -0,0 +1,75 @@
+/*
+ * ConnectBot: simple, powerful, open-source SSH client for Android
+ * Copyright 2007 Kenny Root, Jeffrey Sharkey
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.connectbot;
+
+import org.connectbot.util.PreferenceConstants;
+
+import android.app.Activity;
+import android.app.ActionBar;
+
+public abstract class ActionBarWrapper {
+ public interface OnMenuVisibilityListener {
+ public void onMenuVisibilityChanged(boolean isVisible);
+ }
+
+ public static ActionBarWrapper getActionBar(Activity activity) {
+ if (PreferenceConstants.PRE_HONEYCOMB)
+ return new DummyActionBar();
+ else
+ return new RealActionBar(activity);
+ }
+
+ public void hide() {
+ }
+
+ public void show() {
+ }
+
+ public void addOnMenuVisibilityListener(OnMenuVisibilityListener listener) {
+ }
+
+ private static class DummyActionBar extends ActionBarWrapper {
+ }
+
+ private static class RealActionBar extends ActionBarWrapper {
+ private final ActionBar actionBar;
+
+ public RealActionBar(Activity activity) {
+ actionBar = activity.getActionBar();
+ }
+
+ @Override
+ public void hide() {
+ actionBar.hide();
+ }
+
+ @Override
+ public void show() {
+ actionBar.show();
+ }
+
+ @Override
+ public void addOnMenuVisibilityListener(final OnMenuVisibilityListener listener) {
+ actionBar.addOnMenuVisibilityListener(new ActionBar.OnMenuVisibilityListener() {
+ public void onMenuVisibilityChanged(boolean isVisible) {
+ listener.onMenuVisibilityChanged(isVisible);
+ }
+ });
+ }
+ }
+}
diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java
index 5882a84..b63e042 100644
--- a/src/org/connectbot/ConsoleActivity.java
+++ b/src/org/connectbot/ConsoleActivity.java
@@ -131,6 +131,9 @@ public class ConsoleActivity extends Activity {
private ImageView mKeyboardButton;
+ private ActionBarWrapper actionBar;
+ private boolean inActionBarMenu = false;
+
private ServiceConnection connection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
bound = ((TerminalManager.TerminalBinder) service).getService();
@@ -366,6 +369,7 @@ public class ConsoleActivity extends Activity {
inputManager.showSoftInput(flip, InputMethodManager.SHOW_FORCED);
keyboardGroup.setVisibility(View.GONE);
+ actionBar.hide();
}
});
@@ -380,6 +384,7 @@ public class ConsoleActivity extends Activity {
handler.metaPress(TerminalKeyListener.META_CTRL_ON);
keyboardGroup.setVisibility(View.GONE);
+ actionBar.hide();
}
});
@@ -394,6 +399,19 @@ public class ConsoleActivity extends Activity {
handler.sendEscape();
keyboardGroup.setVisibility(View.GONE);
+ actionBar.hide();
+ }
+ });
+
+ actionBar = ActionBarWrapper.getActionBar(this);
+ actionBar.hide();
+ actionBar.addOnMenuVisibilityListener(new ActionBarWrapper.OnMenuVisibilityListener() {
+ public void onMenuVisibilityChanged(boolean isVisible) {
+ inActionBarMenu = isVisible;
+ if (isVisible == false) {
+ keyboardGroup.setVisibility(View.GONE);
+ actionBar.hide();
+ }
}
});
@@ -563,14 +581,16 @@ public class ConsoleActivity extends Activity {
&& Math.abs(event.getY() - lastY) < MAX_CLICK_DISTANCE) {
keyboardGroup.startAnimation(keyboard_fade_in);
keyboardGroup.setVisibility(View.VISIBLE);
+ actionBar.show();
handler.postDelayed(new Runnable() {
public void run() {
- if (keyboardGroup.getVisibility() == View.GONE)
+ if (keyboardGroup.getVisibility() == View.GONE || inActionBarMenu)
return;
keyboardGroup.startAnimation(keyboard_fade_out);
keyboardGroup.setVisibility(View.GONE);
+ actionBar.hide();
}
}, KEYBOARD_DISPLAY_TIME);
}
diff --git a/src/org/connectbot/util/PreferenceConstants.java b/src/org/connectbot/util/PreferenceConstants.java
index 9e37017..2ff8dd4 100644
--- a/src/org/connectbot/util/PreferenceConstants.java
+++ b/src/org/connectbot/util/PreferenceConstants.java
@@ -24,9 +24,10 @@ import android.os.Build;
*
*/
public class PreferenceConstants {
- public static final boolean PRE_ECLAIR = (Integer.parseInt(Build.VERSION.SDK) <= 4);
- public static final boolean PRE_FROYO = PRE_ECLAIR ? true :
- (Integer.parseInt(Build.VERSION.SDK) <= 7);
+ public static final int SDK_INT = Integer.parseInt(Build.VERSION.SDK);
+ public static final boolean PRE_ECLAIR = SDK_INT < 5;
+ public static final boolean PRE_FROYO = SDK_INT < 8;
+ public static final boolean PRE_HONEYCOMB = SDK_INT < 11;
public static final String MEMKEYS = "memkeys";
public static final String UPDATE = "update";