aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2008-11-10 07:05:22 +0000
committerKenny Root <kenny@the-b.org>2008-11-10 07:05:22 +0000
commit1e8503432cf5a5c981856528de285f5fdac6242a (patch)
tree918e0be82e2d0cf5c069699d6aab871b9b3d60fe
parent91634b9e90b8b6581cf949026734b0bdf20a3026 (diff)
downloadconnectbot-1e8503432cf5a5c981856528de285f5fdac6242a.tar.gz
connectbot-1e8503432cf5a5c981856528de285f5fdac6242a.tar.bz2
connectbot-1e8503432cf5a5c981856528de285f5fdac6242a.zip
* Don't present SD card dialog if SD card isn't present
* Sort SD card files in natural order * Don't show view flip animation if we're the last console * Add preference to disable status bar (full-screen) * Fix some layout fitting problems
-rw-r--r--res/layout/act_generatepubkey.xml16
-rw-r--r--res/layout/dia_portforward.xml11
-rw-r--r--res/values/strings.xml11
-rw-r--r--res/xml/preferences.xml8
-rw-r--r--src/org/connectbot/ConsoleActivity.java13
-rw-r--r--src/org/connectbot/PubkeyListActivity.java20
6 files changed, 57 insertions, 22 deletions
diff --git a/res/layout/act_generatepubkey.xml b/res/layout/act_generatepubkey.xml
index 0a21104..0b0ae5a 100644
--- a/res/layout/act_generatepubkey.xml
+++ b/res/layout/act_generatepubkey.xml
@@ -26,11 +26,11 @@
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip"
- android:scrollbars="vertical" android:layout_width="wrap_content">
+ android:scrollbars="vertical" android:layout_width="fill_parent">
<TableRow>
<TextView android:text="Nickname:" android:paddingRight="10dip" android:gravity="right|center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" />
- <EditText android:id="@+id/nickname" android:hint="My work key" android:layout_height="wrap_content" android:singleLine="true" />
+ <EditText android:id="@+id/nickname" android:hint="My work key" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1"/>
</TableRow>
<TableRow>
@@ -62,24 +62,24 @@
<TableRow>
<TextView android:text="Bits:" android:paddingRight="10dip" android:textAppearance="?android:attr/textAppearanceMedium" android:gravity="right|center_vertical" />
- <EditText android:id="@+id/bits" android:layout_height="wrap_content" android:text="1024" android:numeric="integer" android:singleLine="true" />
+ <EditText android:id="@+id/bits" android:layout_height="wrap_content" android:text="1024" android:numeric="integer" android:singleLine="true" android:layout_weight="1"/>
</TableRow>
<SeekBar android:layout_height="wrap_content" android:id="@+id/bits_slider" android:layout_width="fill_parent" android:paddingBottom="10dip" android:max="3328" android:progress="256"/>
- <TextView android:text="Note: password can be blank" android:gravity="right" android:layout_height="wrap_content" android:layout_width="wrap_content" />
+ <TextView android:text="Note: password can be blank" android:gravity="left" android:layout_height="wrap_content" android:layout_width="wrap_content" />
<TableRow>
- <TextView android:gravity="right|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Password:" />
- <EditText android:id="@+id/password1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:password="true" android:singleLine="true"/>
+ <TextView android:paddingRight="10dip" android:gravity="right|center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Password:" />
+ <EditText android:id="@+id/password1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:password="true" android:singleLine="true" android:layout_weight="1"/>
</TableRow>
<TableRow>
- <LinearLayout android:orientation="vertical" android:gravity="right|center_vertical" >
+ <LinearLayout android:paddingRight="10dip" android:orientation="vertical" android:gravity="right|center_vertical" >
<TextView android:gravity="right|bottom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Password:" />
<TextView android:gravity="right|top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="(again)" />
</LinearLayout>
- <EditText android:id="@+id/password2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:password="true" android:singleLine="true"/>
+ <EditText android:id="@+id/password2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:password="true" android:singleLine="true" android:layout_weight="1"/>
</TableRow>
<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/unlock_at_startup" android:text="Unlock when ConnectBot starts"/>
diff --git a/res/layout/dia_portforward.xml b/res/layout/dia_portforward.xml
index f1434a8..ae36c50 100644
--- a/res/layout/dia_portforward.xml
+++ b/res/layout/dia_portforward.xml
@@ -25,7 +25,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
- android:layout_width="wrap_content"
+ android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip"
@@ -38,27 +38,28 @@
<TableRow>
<TextView android:text="@string/prompt_nickname" android:paddingRight="10dip" android:gravity="right|center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" />
- <EditText android:id="@+id/nickname" android:hint="Internal Webserver" android:layout_width="200dip" android:layout_height="wrap_content" android:singleLine="true" />
+ <EditText android:id="@+id/nickname" android:hint="Internal Webserver" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1" />
</TableRow>
<TableRow>
<TextView android:text="@string/prompt_type" android:paddingRight="10dip" android:gravity="right|center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner android:id="@+id/portforward_type"
- android:layout_width="wrap_content"
+ android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:entries="@array/list_portforward_types"
android:prompt="@string/prompt_type"
+ android:layout_weight="1"
/>
</TableRow>
<TableRow>
<TextView android:text="@string/prompt_source_port" android:paddingRight="10dip" android:gravity="right|center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" />
- <EditText android:id="@+id/portforward_source" android:hint="143" android:layout_width="200dip" android:layout_height="wrap_content" android:numeric="integer" android:singleLine="true" />
+ <EditText android:id="@+id/portforward_source" android:hint="143" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="integer" android:singleLine="true" android:layout_weight="1" />
</TableRow>
<TableRow>
<TextView android:text="@string/prompt_destination" android:paddingRight="10dip" android:gravity="right|center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" />
- <EditText android:id="@+id/portforward_destination" android:hint="localhost:143" android:layout_width="200dip" android:layout_height="wrap_content" android:singleLine="true" />
+ <EditText android:id="@+id/portforward_destination" android:hint="localhost:143" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:layout_weight="1" />
</TableRow>
</TableLayout>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b035021..ca88622 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4,7 +4,7 @@
<string name="app_desc">Simple, powerful, open-source SSH client.</string>
<string name="title_hosts_list">Hosts</string>
- <string name="title_pubkey_list">Public keys</string>
+ <string name="title_pubkey_list">Pubkeys</string>
<string name="title_port_forwards_list">Port forwards</string>
<string name="title_host_editor">Edit Host</string>
@@ -19,17 +19,18 @@
<string name="menu_insert">Add Host</string>
<string name="menu_delete">Delete Host</string>
<string name="menu_preferences">Preferences</string>
- <string name="menu_pubkey">Public Keys</string>
+ <string name="menu_pubkey">Pubkeys</string>
<string name="menu_about">About</string>
<string name="pubkey_generate">Generate</string>
+ <string name="pubkey_import">Import</string>
<string name="pubkey_delete">Delete key</string>
<string name="pubkey_gather_entropy">Gathering Entropy</string>
<string name="pubkey_touch_prompt">Touch this box to gather randomness: </string>
- <string name="pubkey_generating">Generating key...</string>
+ <string name="pubkey_generating">Generating key pair...</string>
<string name="pubkey_copy_clipboard">Copy signature</string>
- <string name="pubkey_list_empty">Tap "Menu" to create\nor import public keys.</string>
+ <string name="pubkey_list_empty">Tap "Menu" to create\nor import key pairs.</string>
<string name="pubkey_unknown_format">Unknown format</string>
<string name="pubkey_change_password">Change Password</string>
@@ -49,6 +50,7 @@
<string name="alert_passwords_do_not_match_msg">Passwords do not match!</string>
<string name="alert_wrong_password_msg">Wrong password!</string>
<string name="alert_key_corrupted_msg">Private key appears corrupt!</string>
+ <string name="alert_sdcard_absent">SD card is not inserted!</string>
<string name="button_add">Add</string>
<string name="button_change">Change</string>
@@ -74,6 +76,7 @@
<string name="pref_camera">camera</string>
<string name="pref_update">update</string>
<string name="pref_lastchecked">lastchecked</string>
+ <string name="pref_fullscreen">fullscreen</string>
<string name="list_keymode_right">Use right-side keys</string>
<string name="list_keymode_left">Use left-side keys</string>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index dcf50b6..ac9dd5f 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -68,6 +68,13 @@
android:defaultValue="@string/list_rotation_land"
/>
+ <CheckBoxPreference
+ android:key="@string/pref_fullscreen"
+ android:title="Full screen"
+ android:summary="Hide status bar while in console"
+ android:defaultValue="false"
+ />
+
<ListPreference
android:key="@string/pref_keymode"
android:title="Directory shortcuts"
@@ -92,7 +99,6 @@
android:summary="Prevent the screen from turning off when working in a console"
android:defaultValue="true"
/>
-
</PreferenceCategory>
</PreferenceScreen> \ No newline at end of file
diff --git a/src/org/connectbot/ConsoleActivity.java b/src/org/connectbot/ConsoleActivity.java
index 1204669..d93a0ce 100644
--- a/src/org/connectbot/ConsoleActivity.java
+++ b/src/org/connectbot/ConsoleActivity.java
@@ -51,6 +51,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.Window;
+import android.view.WindowManager;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
@@ -322,6 +323,12 @@ public class ConsoleActivity extends Activity {
this.clipboard = (ClipboardManager)this.getSystemService(CLIPBOARD_SERVICE);
this.prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ // hide status bar if requested by user
+ if (this.prefs.getBoolean(getString(R.string.pref_fullscreen), false)) {
+ this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
+
// request a forced orientation if requested by user
String rotate = this.prefs.getString(getString(R.string.pref_rotation), getString(R.string.list_rotation_land));
if(getString(R.string.list_rotation_land).equals(rotate)) {
@@ -568,8 +575,11 @@ public class ConsoleActivity extends Activity {
// keep current overlay from popping up again
View overlay = findCurrentView(R.id.terminal_overlay);
if(overlay != null) overlay.startAnimation(fade_stay_hidden);
+
+ // Only show animation if there is something else to go to.
+ if (flip.getChildCount() > 1)
+ flip.setInAnimation(slide_left_in);
- flip.setInAnimation(slide_left_in);
flip.setOutAnimation(slide_left_out);
flip.showNext();
ConsoleActivity.this.updateDefault();
@@ -579,7 +589,6 @@ public class ConsoleActivity extends Activity {
if(overlay != null) overlay.startAnimation(fade_out);
updatePromptVisible();
-
}
protected void shiftRight() {
diff --git a/src/org/connectbot/PubkeyListActivity.java b/src/org/connectbot/PubkeyListActivity.java
index 7d0d590..9fd7e86 100644
--- a/src/org/connectbot/PubkeyListActivity.java
+++ b/src/org/connectbot/PubkeyListActivity.java
@@ -25,6 +25,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.security.PrivateKey;
import java.security.PublicKey;
+import java.util.Collections;
import java.util.EventListener;
import java.util.LinkedList;
import java.util.List;
@@ -199,7 +200,7 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
generatekey.setIcon(android.R.drawable.ic_menu_manage);
generatekey.setIntent(new Intent(PubkeyListActivity.this, GeneratePubkeyActivity.class));
- MenuItem importkey = menu.add("Import");
+ MenuItem importkey = menu.add(R.string.pubkey_import);
importkey.setIcon(android.R.drawable.ic_menu_upload);
importkey.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
@@ -210,11 +211,26 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
// build list of all files in sdcard root
final File sdcard = Environment.getExternalStorageDirectory();
Log.d(TAG, sdcard.toString());
+
+ // Don't show a dialog if the SD card is completely absent.
+ final String state = Environment.getExternalStorageState();
+ if (Environment.MEDIA_REMOVED.equals(state)
+ || Environment.MEDIA_BAD_REMOVAL.equals(state)
+ || Environment.MEDIA_UNMOUNTABLE.equals(state)
+ || Environment.MEDIA_UNMOUNTED.equals(state)) {
+ new AlertDialog.Builder(PubkeyListActivity.this)
+ .setMessage(R.string.alert_sdcard_absent)
+ .setNegativeButton(android.R.string.cancel, null).create().show();
+ return true;
+ }
+
List<String> names = new LinkedList<String>();
for(File file : sdcard.listFiles()) {
if(file.isDirectory()) continue;
names.add(file.getName());
}
+ Collections.sort(names);
+
final String[] namesList = names.toArray(new String[] {});
Log.d(TAG, names.toString());
@@ -244,7 +260,7 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
}
}
})
- .setNegativeButton("Cancel", null).create().show();
+ .setNegativeButton(android.R.string.cancel, null).create().show();
return true;
}