diff options
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | build.xml | 3 | ||||
-rw-r--r-- | res/layout/wiz_eula.xml | 5 | ||||
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | res/values/styles.xml | 5 | ||||
-rw-r--r-- | res/xml/preferences.xml | 10 | ||||
-rw-r--r-- | src/org/connectbot/ConsoleActivity.java | 3 | ||||
-rw-r--r-- | src/org/connectbot/TerminalView.java | 2 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 42 |
9 files changed, 60 insertions, 14 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 374c452..7292c7b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -31,7 +31,7 @@ <service android:name="org.connectbot.service.TerminalManager" android:configChanges="keyboardHidden|orientation" /> - <activity android:name=".ConsoleActivity" android:configChanges="keyboardHidden|orientation"> + <activity android:name=".ConsoleActivity" android:configChanges="keyboardHidden|orientation" android:theme="@style/NoTitle"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> @@ -43,6 +43,7 @@ </application> <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> @@ -282,7 +282,7 @@ </exec> <loadfile property="android.manifest" srcFile="${basedir}/AndroidManifest.xml" encoding="${encoding}" /> - +<!-- <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${lib.dir}/ant/ant-contrib.jar"/> <propertyregex property="version.number" input="${android.manifest}" select="\1" regexp='android:versionName="([0-9\.]+)"' @@ -296,6 +296,7 @@ replace='\1${ant.project.name} ${version.number} (r${svn.revision} ${build.date})\2' /> <echo>Updated "msg_version" to: ${ant.project.name} ${version.number} (r${svn.revision} ${build.date})</echo> +--> </target> </project> diff --git a/res/layout/wiz_eula.xml b/res/layout/wiz_eula.xml index dc3911b..e0df10b 100644 --- a/res/layout/wiz_eula.xml +++ b/res/layout/wiz_eula.xml @@ -34,7 +34,6 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ConnectBot is a simple, powerful, open-source Secure Shell (SSH) client for your Android device." - android:paddingTop="10dip" android:textAppearance="?android:attr/textAppearanceMedium" /> @@ -77,7 +76,7 @@ android:layout_height="wrap_content" android:paddingTop="10dip" android:autoLink="web" - android:text="Copyright \u00a9 2007-2008 Kenny Root http://the-b.org, Jeffrey Sharkey http://jsharkey.org\n\nBased in part on the Trilead SSH2 client, provided under a BSD-style license. Copyright \u00a9 2007 Trilead AG. http://www.trilead.com\n\nAlso based on JTA Telnet/SSH client, provided under the GPLv2 license. Copyright \u00a9 Matthias L. Jugel, Marcus Meiner 1996-2005. http://www.javassh.org\n\nAlso based in part on the JSOCKS library, provided under the GNU LGPL license. http://jsocks.sourceforge.net/\n\nAlso based in part on JZlib provided under a BSD-style license. Copyright \u00a9 JCraft, Inc., 2000-20004 http://www.jcraft.com" + android:text="Copyright \u00a9 2007-2008 Kenny Root http://the-b.org, Jeffrey Sharkey http://jsharkey.org\n\nBased in part on the Trilead SSH2 client, provided under a BSD-style license. Copyright \u00a9 2007 Trilead AG. http://www.trilead.com\n\nAlso based on JTA Telnet/SSH client, provided under the GPLv2 license. Copyright \u00a9 Matthias L. Jugel, Marcus Meiner 1996-2005. http://www.javassh.org\n\nAlso based in part on the JSOCKS library, provided under the GNU LGPL license. http://jsocks.sourceforge.net\n\nAlso based in part on JZlib provided under a BSD-style license. Copyright \u00a9 JCraft, Inc., 2000-20004 http://www.jcraft.com" android:textSize="14sp" android:textColor="#bebebe" /> @@ -93,4 +92,4 @@ </LinearLayout> -</ScrollView>
\ No newline at end of file +</ScrollView> diff --git a/res/values/strings.xml b/res/values/strings.xml index da920cb..91bd96a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -90,6 +90,7 @@ <string name="pref_lastchecked">lastchecked</string> <string name="pref_fullscreen">fullscreen</string> <string name="pref_wifilock">wifilock</string> + <string name="pref_bumpyarrows">bumpyarrows</string> <string name="list_keymode_right">Use right-side keys</string> <string name="list_keymode_left">Use left-side keys</string> diff --git a/res/values/styles.xml b/res/values/styles.xml new file mode 100644 index 0000000..459ee80 --- /dev/null +++ b/res/values/styles.xml @@ -0,0 +1,5 @@ +<resources> + <style name="NoTitle" parent="android:Theme"> + <item name="android:windowNoTitle">true</item> + </style> +</resources> diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml index 8b6da2c..676d866 100644 --- a/res/xml/preferences.xml +++ b/res/xml/preferences.xml @@ -106,6 +106,14 @@ android:summary="Prevent Wi-Fi from turning off when a session is active" android:defaultValue="true" /> + + <CheckBoxPreference + android:key="@string/pref_bumpyarrows" + android:title="Bumpy arrow keys" + android:summary="Vibrate when sending arrow keys from trackball, useful for laggy connections" + android:defaultValue="true" + /> + </PreferenceCategory> -</PreferenceScreen>
\ No newline at end of file +</PreferenceScreen> diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java index f4e1bf8..8e7f771 100644 --- a/src/org/connectbot/ConsoleActivity.java +++ b/src/org/connectbot/ConsoleActivity.java @@ -281,7 +281,6 @@ public class ConsoleActivity extends Activity { public void onCreate(Bundle icicle) { super.onCreate(icicle); - requestWindowFeature(Window.FEATURE_NO_TITLE); this.setContentView(R.layout.act_console); clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); @@ -434,10 +433,12 @@ public class ConsoleActivity extends Activity { // otherwise consume as pgup/pgdown for every 5 lines if(moved > 5) { ((vt320)terminal.bridge.buffer).keyPressed(vt320.KEY_PAGE_DOWN, ' ', 0); + terminal.bridge.tryKeyVibrate(); totalY = 0; return true; } else if(moved < -5) { ((vt320)terminal.bridge.buffer).keyPressed(vt320.KEY_PAGE_UP, ' ', 0); + terminal.bridge.tryKeyVibrate(); totalY = 0; return true; } diff --git a/src/org/connectbot/TerminalView.java b/src/org/connectbot/TerminalView.java index dfcd6f8..f7da203 100644 --- a/src/org/connectbot/TerminalView.java +++ b/src/org/connectbot/TerminalView.java @@ -39,7 +39,7 @@ import android.widget.Toast; public class TerminalView extends View { private final Context context; - protected final TerminalBridge bridge; + public final TerminalBridge bridge; private final Paint paint; private final Paint cursorPaint; diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 60156eb..746cda3 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -49,6 +49,8 @@ import android.view.KeyCharacterMap; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; +import android.os.Vibrator; +import android.content.Context; import com.trilead.ssh2.ChannelCondition; import com.trilead.ssh2.Connection; @@ -142,9 +144,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal protected KeyCharacterMap keymap = KeyCharacterMap.load(KeyCharacterMap.BUILT_IN_KEYBOARD); public int charWidth = -1; - public int charHeight = -1; - private int charDescent = -1; private float fontSize = -1; @@ -675,6 +675,11 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal public void refreshKeymode() { keymode = manager.getKeyMode(); } + + private boolean bumpyArrows = false; + public Vibrator vibrator = null; + + public static final long VIBRATE_DURATION = 30; /** * Handle onKey() events coming down from a {@link TerminalView} above us. @@ -822,10 +827,26 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal case KeyEvent.KEYCODE_DEL: stdin.write(0x08); return true; case KeyEvent.KEYCODE_ENTER: ((vt320)buffer).keyTyped(vt320.KEY_ENTER, ' ', event.getMetaState()); return true; - case KeyEvent.KEYCODE_DPAD_LEFT: ((vt320)buffer).keyPressed(vt320.KEY_LEFT, ' ', event.getMetaState()); return true; - case KeyEvent.KEYCODE_DPAD_UP: ((vt320)buffer).keyPressed(vt320.KEY_UP, ' ', event.getMetaState()); return true; - case KeyEvent.KEYCODE_DPAD_DOWN: ((vt320)buffer).keyPressed(vt320.KEY_DOWN, ' ', event.getMetaState()); return true; - case KeyEvent.KEYCODE_DPAD_RIGHT: ((vt320)buffer).keyPressed(vt320.KEY_RIGHT, ' ', event.getMetaState()); return true; + case KeyEvent.KEYCODE_DPAD_LEFT: + ((vt320)buffer).keyPressed(vt320.KEY_LEFT, ' ', event.getMetaState()); + this.tryKeyVibrate(); + return true; + + case KeyEvent.KEYCODE_DPAD_UP: + ((vt320)buffer).keyPressed(vt320.KEY_UP, ' ', event.getMetaState()); + this.tryKeyVibrate(); + return true; + + case KeyEvent.KEYCODE_DPAD_DOWN: + ((vt320)buffer).keyPressed(vt320.KEY_DOWN, ' ', event.getMetaState()); + this.tryKeyVibrate(); + return true; + + case KeyEvent.KEYCODE_DPAD_RIGHT: + ((vt320)buffer).keyPressed(vt320.KEY_RIGHT, ' ', event.getMetaState()); + this.tryKeyVibrate(); + return true; + case KeyEvent.KEYCODE_DPAD_CENTER: // TODO: Add some visual indication of Ctrl state if (ctrlPressed) { @@ -853,6 +874,10 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal return false; } + public void tryKeyVibrate() { + if(bumpyArrows && vibrator != null) + vibrator.vibrate(VIBRATE_DURATION); + } /** * Request a different font size. Will make call to parentChanged() to make @@ -886,6 +911,11 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener, InteractiveCal int width = parent.getWidth(); int height = parent.getHeight(); + this.bumpyArrows = manager.prefs.getBoolean(manager.res.getString(R.string.pref_bumpyarrows), true); + if(parent != null) { + this.vibrator = (Vibrator) parent.getContext().getSystemService(Context.VIBRATOR_SERVICE); + } + if (!forcedSize) { // recalculate buffer size int newTermWidth, newTermHeight; |