aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml2
-rw-r--r--src/org/connectbot/HostListActivity.java23
-rw-r--r--src/org/connectbot/service/TerminalManager.java24
-rw-r--r--src/org/connectbot/transport/Local.java10
-rw-r--r--src/org/connectbot/transport/TransportFactory.java29
5 files changed, 51 insertions, 37 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 999cd35..83d9a31 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.connectbot"
android:versionName="1.6-dev"
- android:versionCode="191">
+ android:versionCode="192">
<application
android:icon="@drawable/icon"
diff --git a/src/org/connectbot/HostListActivity.java b/src/org/connectbot/HostListActivity.java
index 1cdee4f..cc2a1b2 100644
--- a/src/org/connectbot/HostListActivity.java
+++ b/src/org/connectbot/HostListActivity.java
@@ -247,15 +247,7 @@ public class HostListActivity extends ListActivity {
quickconnect.setHint(formatHint);
quickconnect.setError(null);
-
- // Start ConsoleActivity immediately if the hint is empty.
- if ("".equals(formatHint)) {
- quickconnect.setEnabled(false);
- startConsoleActivity();
- } else {
- quickconnect.setEnabled(true);
- quickconnect.requestFocus();
- }
+ quickconnect.requestFocus();
}
public void onNothingSelected(AdapterView<?> arg0) { }
});
@@ -410,14 +402,17 @@ public class HostListActivity extends ListActivity {
return false;
}
- HostBean host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
- host.setColor(HostDatabase.COLOR_GRAY);
- host.setPubkeyId(HostDatabase.PUBKEYID_ANY);
- hostdb.saveHost(host);
+ HostBean host = TransportFactory.findHost(hostdb, uri);
+ if (host == null) {
+ host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
+ host.setColor(HostDatabase.COLOR_GRAY);
+ host.setPubkeyId(HostDatabase.PUBKEYID_ANY);
+ hostdb.saveHost(host);
+ }
Intent intent = new Intent(HostListActivity.this, ConsoleActivity.class);
intent.setData(uri);
- HostListActivity.this.startActivity(intent);
+ startActivity(intent);
return true;
}
diff --git a/src/org/connectbot/service/TerminalManager.java b/src/org/connectbot/service/TerminalManager.java
index b272845..2faac98 100644
--- a/src/org/connectbot/service/TerminalManager.java
+++ b/src/org/connectbot/service/TerminalManager.java
@@ -34,7 +34,6 @@ import org.connectbot.ConsoleActivity;
import org.connectbot.R;
import org.connectbot.bean.HostBean;
import org.connectbot.bean.PubkeyBean;
-import org.connectbot.transport.AbsTransport;
import org.connectbot.transport.TransportFactory;
import org.connectbot.util.HostDatabase;
import org.connectbot.util.PreferenceConstants;
@@ -255,27 +254,12 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
* format specified by an individual transport.
*/
public void openConnection(Uri uri) throws Exception {
- AbsTransport transport = TransportFactory.getTransport(uri.getScheme());
+ HostBean host = TransportFactory.findHost(hostdb, uri);
- Map<String, String> selection = new HashMap<String, String>();
+ if (host == null)
+ host = TransportFactory.getTransport(uri.getScheme()).createHost(uri);
- transport.getSelectionArgs(uri, selection);
- if (selection.size() == 0) {
- Log.e(TAG, String.format("Transport %s failed to do something useful with URI=%s",
- uri.getScheme(), uri.toString()));
- throw new IllegalStateException("Failed to get needed selection arguments");
- }
-
- HostBean host = hostdb.findHost(selection);
-
- if (host == null) {
- Log.d(TAG, String.format(
- "Didn't find existing host (selection=%s)",
- selection.toString()));
- host = transport.createHost(uri);
- }
-
- this.openConnection(host);
+ openConnection(host);
}
/**
diff --git a/src/org/connectbot/transport/Local.java b/src/org/connectbot/transport/Local.java
index bbc8be0..23c16b2 100644
--- a/src/org/connectbot/transport/Local.java
+++ b/src/org/connectbot/transport/Local.java
@@ -200,7 +200,13 @@ public class Local extends AbsTransport {
}
public static Uri getUri(String input) {
- return Uri.parse(DEFAULT_URI);
+ Uri uri = Uri.parse(DEFAULT_URI);
+
+ if (input != null && input.length() > 0) {
+ uri = uri.buildUpon().fragment(input).build();
+ }
+
+ return uri;
}
@Override
@@ -220,6 +226,6 @@ public class Local extends AbsTransport {
}
public static String getFormatHint(Context context) {
- return "";
+ return context.getString(R.string.hostpref_nickname_title);
}
}
diff --git a/src/org/connectbot/transport/TransportFactory.java b/src/org/connectbot/transport/TransportFactory.java
index 1239441..991829d 100644
--- a/src/org/connectbot/transport/TransportFactory.java
+++ b/src/org/connectbot/transport/TransportFactory.java
@@ -18,6 +18,12 @@
package org.connectbot.transport;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.connectbot.bean.HostBean;
+import org.connectbot.util.HostDatabase;
+
import android.content.Context;
import android.net.Uri;
import android.util.Log;
@@ -28,6 +34,8 @@ import android.util.Log;
*
*/
public class TransportFactory {
+ private static final String TAG = "ConnectBot.TransportFactory";
+
private static String[] transportNames = {
SSH.getProtocolName(),
Telnet.getProtocolName(),
@@ -101,4 +109,25 @@ public class TransportFactory {
return AbsTransport.getFormatHint(context);
}
}
+
+ /**
+ * @param hostdb Handle to HostDatabase
+ * @param uri URI to target server
+ * @param host HostBean in which to put the results
+ * @return true when host was found
+ */
+ public static HostBean findHost(HostDatabase hostdb, Uri uri) {
+ AbsTransport transport = getTransport(uri.getScheme());
+
+ Map<String, String> selection = new HashMap<String, String>();
+
+ transport.getSelectionArgs(uri, selection);
+ if (selection.size() == 0) {
+ Log.e(TAG, String.format("Transport %s failed to do something useful with URI=%s",
+ uri.getScheme(), uri.toString()));
+ throw new IllegalStateException("Failed to get needed selection arguments");
+ }
+
+ return hostdb.findHost(selection);
+ }
}