diff options
-rw-r--r-- | res/layout/act_generatepubkey.xml | 16 | ||||
-rw-r--r-- | res/layout/dia_portforward.xml | 11 | ||||
-rw-r--r-- | res/values/strings.xml | 11 | ||||
-rw-r--r-- | res/xml/preferences.xml | 8 | ||||
-rw-r--r-- | src/org/connectbot/ConsoleActivity.java | 13 | ||||
-rw-r--r-- | src/org/connectbot/PubkeyListActivity.java | 20 |
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; } |