diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/org/connectbot/ActionBarWrapper.java | 75 | ||||
| -rw-r--r-- | src/org/connectbot/ConsoleActivity.java | 22 | ||||
| -rw-r--r-- | src/org/connectbot/util/PreferenceConstants.java | 7 | 
3 files changed, 100 insertions, 4 deletions
| 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"; | 
