diff options
| -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 | 
