diff options
author | Jeffrey Sharkey <jsharkey@jsharkey.org> | 2008-10-25 03:44:30 +0000 |
---|---|---|
committer | Jeffrey Sharkey <jsharkey@jsharkey.org> | 2008-10-25 03:44:30 +0000 |
commit | d1cc535bb3cb3fb55a66b4525161f11d75667e20 (patch) | |
tree | 44fe563f2e425bc078a30daaa99792d0e517b19e /src | |
parent | 096008a23372f985dcbd456706d1a36c38c04ba3 (diff) | |
download | connectbot-d1cc535bb3cb3fb55a66b4525161f11d75667e20.tar.gz connectbot-d1cc535bb3cb3fb55a66b4525161f11d75667e20.tar.bz2 connectbot-d1cc535bb3cb3fb55a66b4525161f11d75667e20.zip |
* fixed double-password bug when hitting enter (was submitting twice, on keydown and up)
* now correctly reading preferences values for scrollback/emulation
Diffstat (limited to 'src')
-rw-r--r-- | src/org/connectbot/ConsoleActivity.java | 7 | ||||
-rw-r--r-- | src/org/connectbot/HostListActivity.java | 1 | ||||
-rw-r--r-- | src/org/connectbot/R.java | 8 | ||||
-rw-r--r-- | src/org/connectbot/SettingsActivity.java | 19 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 13 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalManager.java | 20 |
6 files changed, 48 insertions, 20 deletions
diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java index 1ca1a8f..6c6c004 100644 --- a/src/org/connectbot/ConsoleActivity.java +++ b/src/org/connectbot/ConsoleActivity.java @@ -126,8 +126,12 @@ public class ConsoleActivity extends Activity { public void onServiceDisconnected(ComponentName className) { // remove all bridge views - bound = null; + for(TerminalBridge bridge : bound.bridges) + bridge.passwordHandler = null; + flip.removeAllViews(); + bound = null; + } }; @@ -238,6 +242,7 @@ public class ConsoleActivity extends Activity { this.password = (EditText)this.findViewById(R.id.console_password); this.password.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { + if(event.getAction() == KeyEvent.ACTION_UP) return false; if(keyCode != KeyEvent.KEYCODE_ENTER) return false; // pass collected password down to current terminal diff --git a/src/org/connectbot/HostListActivity.java b/src/org/connectbot/HostListActivity.java index 9512d07..df12df0 100644 --- a/src/org/connectbot/HostListActivity.java +++ b/src/org/connectbot/HostListActivity.java @@ -226,6 +226,7 @@ public class HostListActivity extends ListActivity { public boolean onKey(View v, int keyCode, KeyEvent event) { + if(event.getAction() == KeyEvent.ACTION_UP) return false; if(keyCode != KeyEvent.KEYCODE_ENTER) return false; // make sure we follow pattern diff --git a/src/org/connectbot/R.java b/src/org/connectbot/R.java index e82a6e1..1f896c0 100644 --- a/src/org/connectbot/R.java +++ b/src/org/connectbot/R.java @@ -59,9 +59,9 @@ public final class R { public static final int alert_disconnect_msg=0x7f070015; public static final int app_desc=0x7f070001; public static final int app_name=0x7f070000; - public static final int bind_days=0x7f07001a; - public static final int bind_hours=0x7f070019; - public static final int bind_minutes=0x7f070018; + public static final int bind_days=0x7f07001c; + public static final int bind_hours=0x7f07001b; + public static final int bind_minutes=0x7f07001a; public static final int button_add=0x7f070011; public static final int button_cancel=0x7f070012; public static final int button_change=0x7f070013; @@ -74,6 +74,8 @@ public final class R { public static final int menu_pubkey=0x7f07000d; public static final int msg_copyright=0x7f070016; public static final int msg_version=0x7f070017; + public static final int pref_emulation=0x7f070018; + public static final int pref_scrollback=0x7f070019; public static final int prompt_touch=0x7f07000f; public static final int resolve_connect=0x7f070009; public static final int resolve_edit=0x7f070008; diff --git a/src/org/connectbot/SettingsActivity.java b/src/org/connectbot/SettingsActivity.java index 2b76c68..8c31c5b 100644 --- a/src/org/connectbot/SettingsActivity.java +++ b/src/org/connectbot/SettingsActivity.java @@ -22,13 +22,14 @@ import android.os.Bundle; import android.preference.PreferenceActivity; public class SettingsActivity extends PreferenceActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.preferences); - - } - -} + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.preferences); + + // TODO: add parse checking here to make sure we have integer value for scrollback + + } + +} diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 2cddb52..69f712e 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -98,6 +98,9 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { protected Thread relay; + protected final String emulation; + protected final int scrollback; + public Bitmap bitmap = null; public VDUBuffer buffer = null; @@ -143,11 +146,14 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { * launch thread to start SSH connection and handle any hostkey verification * and password authentication. */ - public TerminalBridge(final String nickname, final String username, final String hostname, final int port) throws Exception { + public TerminalBridge(final String nickname, final String username, final String hostname, final int port, String emulation, int scrollback) throws Exception { this.nickname = nickname; this.username = username; + this.emulation = emulation; + this.scrollback = scrollback; + // create our default paint this.defaultPaint = new Paint(); this.defaultPaint.setAntiAlias(true); @@ -267,7 +273,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { // previously tried vt100 and xterm for emulation modes // "screen" works the best for color and escape codes // TODO: pull this value from the preferences - this.session.requestPTY("screen", 0, 0, 0, 0, null); + this.session.requestPTY(emulation, 0, 0, 0, 0, null); this.session.startShell(); // grab stdin/out from newly formed session @@ -417,9 +423,6 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { protected float fontSize = -1; - // TODO: read this scrollback value from preferences framework? - protected int scrollback = 120; - /** * Request a different font size. Will make call to parentChanged() to make * sure we resize PTY if needed. diff --git a/src/org/connectbot/service/TerminalManager.java b/src/org/connectbot/service/TerminalManager.java index 5968299..9a5828b 100644 --- a/src/org/connectbot/service/TerminalManager.java +++ b/src/org/connectbot/service/TerminalManager.java @@ -21,15 +21,18 @@ package org.connectbot.service; import java.util.LinkedList; import java.util.List; +import org.connectbot.R; import org.connectbot.util.HostDatabase; import com.trilead.ssh2.Connection; import android.app.Service; import android.content.Intent; +import android.content.SharedPreferences; import android.net.Uri; import android.os.Binder; import android.os.IBinder; +import android.preference.PreferenceManager; import android.util.Log; /** @@ -46,9 +49,15 @@ public class TerminalManager extends Service { public List<TerminalBridge> bridges = new LinkedList<TerminalBridge>(); public TerminalBridge defaultBridge = null; + protected SharedPreferences prefs; + protected String pref_emulation, pref_scrollback; + @Override public void onCreate() { Log.i(TAG, "Starting background service"); + this.prefs = PreferenceManager.getDefaultSharedPreferences(this); + this.pref_emulation = this.getResources().getString(R.string.pref_emulation); + this.pref_scrollback = this.getResources().getString(R.string.pref_scrollback); } @Override @@ -60,7 +69,7 @@ public class TerminalManager extends Service { bridge.dispose(); } - + /** * Open a new SSH session using the given parameters. */ @@ -70,7 +79,14 @@ public class TerminalManager extends Service { throw new Exception("Connection already open for that nickname"); } - TerminalBridge bridge = new TerminalBridge(nickname, username, hostname, port); + String emulation = prefs.getString(this.pref_emulation, "screen"); + int scrollback = 140; + try { + scrollback = Integer.parseInt(prefs.getString(this.pref_scrollback, "140")); + } catch(Exception e) { + } + + TerminalBridge bridge = new TerminalBridge(nickname, username, hostname, port, emulation, scrollback); this.bridges.add(bridge); // also update database with new connected time |