diff options
-rw-r--r-- | res/values/strings.xml | 4 | ||||
-rw-r--r-- | res/xml/host_prefs.xml | 6 | ||||
-rw-r--r-- | src/org/connectbot/bean/HostBean.java | 10 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 2 | ||||
-rw-r--r-- | src/org/connectbot/util/HostDatabase.java | 14 |
5 files changed, 31 insertions, 5 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 87206cf..49c3af4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -293,6 +293,10 @@ <!-- Summary for preference asking whether the host should be reconnected to when it disconnects --> <string name="hostpref_stayconnected_summary">"Try to reconnect to host if disconnected"</string> + <!-- Setting for whether we should prompt to close after getting disconnected --> + <string name="hostpref_quickdisconnect_title">"Close on disconnect"</string> + <string name="hostpref_quickdisconnect_summary">"Close immediately after remote disconnect without prompting."</string> + <!-- Setting for what key code is sent to the server when DEL key is pressed. --> <string name="hostpref_delkey_title">"DEL Key"</string> <!-- Summary for field asking what key code is sent to the server when DEL key is pressed. --> diff --git a/res/xml/host_prefs.xml b/res/xml/host_prefs.xml index fea90cb..a2fc1a4 100644 --- a/res/xml/host_prefs.xml +++ b/res/xml/host_prefs.xml @@ -85,6 +85,12 @@ android:summary="@string/hostpref_stayconnected_summary" /> + <CheckBoxPreference + android:key="quickdisconnect" + android:title="@string/hostpref_quickdisconnect_title" + android:summary="@string/hostpref_quickdisconnect_summary" + /> + <ListPreference android:key="delkey" android:title="@string/hostpref_delkey_title" diff --git a/src/org/connectbot/bean/HostBean.java b/src/org/connectbot/bean/HostBean.java index 2fd7bfb..183d047 100644 --- a/src/org/connectbot/bean/HostBean.java +++ b/src/org/connectbot/bean/HostBean.java @@ -50,6 +50,7 @@ public class HostBean extends AbstractBean { private boolean compression = false; private String encoding = HostDatabase.ENCODING_DEFAULT; private boolean stayConnected = false; + private boolean quickDisconnect = false; public HostBean() { @@ -202,6 +203,14 @@ public class HostBean extends AbstractBean { return stayConnected; } + public void setQuickDisconnect(boolean quickDisconnect) { + this.quickDisconnect = quickDisconnect; + } + + public boolean getQuickDisconnect() { + return quickDisconnect; + } + public String getDescription() { String description = String.format("%s@%s", username, hostname); @@ -234,6 +243,7 @@ public class HostBean extends AbstractBean { values.put(HostDatabase.FIELD_HOST_COMPRESSION, Boolean.toString(compression)); values.put(HostDatabase.FIELD_HOST_ENCODING, encoding); values.put(HostDatabase.FIELD_HOST_STAYCONNECTED, stayConnected); + values.put(HostDatabase.FIELD_HOST_QUICKDISCONNECT, quickDisconnect); return values; } diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 6b87b74..e5a2e97 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -429,7 +429,7 @@ public class TerminalBridge implements VDUDisplay { disconnectThread.setName("Disconnect"); disconnectThread.start(); - if (immediate) { + if (immediate || (host.getQuickDisconnect() && !host.getStayConnected())) { awaitingClose = true; if (disconnectListener != null) disconnectListener.onDisconnected(TerminalBridge.this); diff --git a/src/org/connectbot/util/HostDatabase.java b/src/org/connectbot/util/HostDatabase.java index 2a92bab..ac35186 100644 --- a/src/org/connectbot/util/HostDatabase.java +++ b/src/org/connectbot/util/HostDatabase.java @@ -47,7 +47,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper { public final static String TAG = "ConnectBot.HostDatabase"; public final static String DB_NAME = "hosts"; - public final static int DB_VERSION = 22; + public final static int DB_VERSION = 23; public final static String TABLE_HOSTS = "hosts"; public final static String FIELD_HOST_NICKNAME = "nickname"; @@ -69,6 +69,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper { public final static String FIELD_HOST_COMPRESSION = "compression"; public final static String FIELD_HOST_ENCODING = "encoding"; public final static String FIELD_HOST_STAYCONNECTED = "stayconnected"; + public final static String FIELD_HOST_QUICKDISCONNECT = "quickdisconnect"; public final static String TABLE_PORTFORWARDS = "portforwards"; public final static String FIELD_PORTFORWARD_HOSTID = "hostid"; @@ -169,7 +170,8 @@ public class HostDatabase extends RobustSQLiteOpenHelper { + FIELD_HOST_WANTSESSION + " TEXT DEFAULT '" + Boolean.toString(true) + "', " + FIELD_HOST_COMPRESSION + " TEXT DEFAULT '" + Boolean.toString(false) + "', " + FIELD_HOST_ENCODING + " TEXT DEFAULT '" + ENCODING_DEFAULT + "', " - + FIELD_HOST_STAYCONNECTED + " TEXT)"); + + FIELD_HOST_STAYCONNECTED + " TEXT, " + + FIELD_HOST_QUICKDISCONNECT + " TEXT DEFAULT '" + Boolean.toString(false) + "')"); db.execSQL("CREATE TABLE " + TABLE_PORTFORWARDS + " (_id INTEGER PRIMARY KEY, " @@ -259,6 +261,9 @@ public class HostDatabase extends RobustSQLiteOpenHelper { db.execSQL("DROP TABLE " + TABLE_COLOR_DEFAULTS); db.execSQL(CREATE_TABLE_COLOR_DEFAULTS); db.execSQL(CREATE_TABLE_COLOR_DEFAULTS_INDEX); + case 22: + db.execSQL("ALTER TABLE " + TABLE_HOSTS + + " ADD COLUMN " + FIELD_HOST_QUICKDISCONNECT + " TEXT DEFAULT '" + Boolean.toString(false) + "'"); } } @@ -376,8 +381,8 @@ public class HostDatabase extends RobustSQLiteOpenHelper { COL_FONTSIZE = c.getColumnIndexOrThrow(FIELD_HOST_FONTSIZE), COL_COMPRESSION = c.getColumnIndexOrThrow(FIELD_HOST_COMPRESSION), COL_ENCODING = c.getColumnIndexOrThrow(FIELD_HOST_ENCODING), - COL_STAYCONNECTED = c.getColumnIndexOrThrow(FIELD_HOST_STAYCONNECTED); - + COL_STAYCONNECTED = c.getColumnIndexOrThrow(FIELD_HOST_STAYCONNECTED), + COL_QUICKDISCONNECT = c.getColumnIndexOrThrow(FIELD_HOST_QUICKDISCONNECT); while (c.moveToNext()) { HostBean host = new HostBean(); @@ -400,6 +405,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper { host.setCompression(Boolean.valueOf(c.getString(COL_COMPRESSION))); host.setEncoding(c.getString(COL_ENCODING)); host.setStayConnected(Boolean.valueOf(c.getString(COL_STAYCONNECTED))); + host.setQuickDisconnect(Boolean.valueOf(c.getString(COL_QUICKDISCONNECT))); hosts.add(host); } |