aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJeffrey Sharkey <jsharkey@jsharkey.org>2008-10-25 03:44:30 +0000
committerJeffrey Sharkey <jsharkey@jsharkey.org>2008-10-25 03:44:30 +0000
commitd1cc535bb3cb3fb55a66b4525161f11d75667e20 (patch)
tree44fe563f2e425bc078a30daaa99792d0e517b19e /src
parent096008a23372f985dcbd456706d1a36c38c04ba3 (diff)
downloadconnectbot-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.java7
-rw-r--r--src/org/connectbot/HostListActivity.java1
-rw-r--r--src/org/connectbot/R.java8
-rw-r--r--src/org/connectbot/SettingsActivity.java19
-rw-r--r--src/org/connectbot/service/TerminalBridge.java13
-rw-r--r--src/org/connectbot/service/TerminalManager.java20
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