aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/drawable/pubkey.xml4
-rw-r--r--res/layout/item_pubkey.xml2
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/org/connectbot/PubkeyListActivity.java106
4 files changed, 52 insertions, 62 deletions
diff --git a/res/drawable/pubkey.xml b/res/drawable/pubkey.xml
new file mode 100644
index 0000000..a77e97a
--- /dev/null
+++ b/res/drawable/pubkey.xml
@@ -0,0 +1,4 @@
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:state_checked="true" android:drawable="@drawable/pubkey_locked" />
+ <item android:drawable="@drawable/pubkey_unlocked" />
+</selector> \ No newline at end of file
diff --git a/res/layout/item_pubkey.xml b/res/layout/item_pubkey.xml
index 7678982..218b57c 100644
--- a/res/layout/item_pubkey.xml
+++ b/res/layout/item_pubkey.xml
@@ -51,7 +51,7 @@
android:id="@android:id/icon1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:src="@drawable/pubkey_locked"
+ android:src="@drawable/pubkey"
android:layout_gravity="right"
/>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6f08626..fed7924 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -29,7 +29,7 @@
<string name="pubkey_copy_clipboard">Copy to clipboard for OpenSSH</string>
<string name="pubkey_list_empty">Press "Menu" to create public keys.</string>
<string name="pubkey_unknown_format">Unknown format</string>
- <string name="pubkey_change_password">Change Psassword</string>
+ <string name="pubkey_change_password">Change Password</string>
<string name="prompt_old_password">Old password:</string>
<string name="prompt_password">Password:</string>
diff --git a/src/org/connectbot/PubkeyListActivity.java b/src/org/connectbot/PubkeyListActivity.java
index 3330572..095a1d8 100644
--- a/src/org/connectbot/PubkeyListActivity.java
+++ b/src/org/connectbot/PubkeyListActivity.java
@@ -25,7 +25,6 @@ import org.connectbot.util.PubkeyDatabase;
import org.connectbot.util.PubkeyUtils;
import android.app.AlertDialog;
-import android.app.Dialog;
import android.app.ListActivity;
import android.content.Context;
import android.content.DialogInterface;
@@ -41,16 +40,15 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
-import android.view.ViewGroup;
import android.view.MenuItem.OnMenuItemClickListener;
import android.widget.AdapterView;
-import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ImageView;
-import android.widget.LinearLayout;
import android.widget.ListView;
+import android.widget.SimpleCursorAdapter;
import android.widget.TableRow;
import android.widget.TextView;
+import android.widget.SimpleCursorAdapter.ViewBinder;
public class PubkeyListActivity extends ListActivity implements EventListener {
public final static String TAG = PubkeyListActivity.class.toString();
@@ -64,8 +62,6 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
protected LayoutInflater inflater = null;
- protected Dialog changePasswordDialog;
-
@Override
public void onStart() {
super.onStart();
@@ -78,6 +74,14 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
}
@Override
+ public void onStop() {
+ super.onStop();
+
+ if(this.pubkeydb != null)
+ this.pubkeydb.close();
+ }
+
+ @Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.act_pubkeylist);
@@ -219,68 +223,50 @@ public class PubkeyListActivity extends ListActivity implements EventListener {
};
protected void updateCursor() {
- /*
if (this.pubkeys != null)
pubkeys.requery();
- */
- // refresh cursor because of possible sorting change
- if(this.pubkeys != null)
- this.pubkeys.close();
- if(this.pubkeydb == null) return;
+
+ if (this.pubkeydb == null) return;
this.pubkeys = this.pubkeydb.allPubkeys();
- this.setListAdapter(new PubkeyCursorAdapter(this, this.pubkeys));
- //this.startManagingCursor(pubkeys);
- }
-
- class PubkeyCursorAdapter extends CursorAdapter {
- private final LayoutInflater mInflater;
- private final int mNickname;
- private final int mPubkey;
- private final int mKeyType;
- private final int mEncrypted;
- public PubkeyCursorAdapter(Context context, Cursor c) {
- super(context, c);
-
- mInflater = LayoutInflater.from(context);
- mNickname = c.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_NICKNAME);
- mPubkey = c.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_PUBLIC);
- mEncrypted = c.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_ENCRYPTED);
- mKeyType = c.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_TYPE);
- }
-
- @Override
- public void bindView(View view, Context context, Cursor cursor) {
- TextView text1 = (TextView) view.findViewById(android.R.id.text1);
- TextView text2 = (TextView) view.findViewById(android.R.id.text2);
- ImageView icon1 = (ImageView) view.findViewById(android.R.id.icon1);
-
- text1.setText(cursor.getString(mNickname));
+ SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.item_pubkey, this.pubkeys,
+ new String[] { PubkeyDatabase.FIELD_PUBKEY_NICKNAME, PubkeyDatabase.FIELD_PUBKEY_TYPE, PubkeyDatabase.FIELD_PUBKEY_ENCRYPTED },
+ new int[] { android.R.id.text1, android.R.id.text2, android.R.id.icon1 });
+ adapter.setViewBinder(new PubkeyBinder());
+ this.setListAdapter(adapter);
- String keyType = cursor.getString(mKeyType);
- int encrypted = cursor.getInt(mEncrypted);
- PublicKey pk;
- try {
- pk = PubkeyUtils.decodePublic(cursor.getBlob(mPubkey), keyType);
- text2.setText(PubkeyUtils.describeKey(pk, encrypted));
- } catch (Exception e) {
- e.printStackTrace();
+ this.startManagingCursor(pubkeys);
+ }
+
+ class PubkeyBinder implements ViewBinder {
+ public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
+ switch (view.getId()) {
+ case android.R.id.text2:
+ int encrypted = cursor.getInt(cursor.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_ENCRYPTED));
+
+ PublicKey pub;
+ try {
+ pub = PubkeyUtils.decodePublic(cursor.getBlob(cursor.getColumnIndexOrThrow(PubkeyDatabase.FIELD_PUBKEY_PUBLIC)),
+ cursor.getString(columnIndex));
+ ((TextView)view).setText(PubkeyUtils.describeKey(pub, encrypted));
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ ((TextView)view).setText(R.string.pubkey_unknown_format);
+ Log.e(TAG, "Error decoding public key at " + cursor.toString());
+ }
+ return true;
- text2.setText(R.string.pubkey_unknown_format);
- Log.e(TAG, "Error decoding public key at " + cursor.toString());
+ case android.R.id.icon1:
+ if (cursor.getInt(columnIndex) != 0)
+ ((ImageView)view).setImageState(new int[] { android.R.attr.state_checked }, true);
+ else
+ ((ImageView)view).setImageState(new int[] { }, true);
+ return true;
}
- if (encrypted == 0)
- icon1.setImageResource(R.drawable.pubkey_unlocked);
- }
-
- @Override
- public View newView(Context context, Cursor cursor, ViewGroup parent) {
- final LinearLayout view = (LinearLayout) mInflater.inflate(
- R.layout.item_pubkey, parent, false);
- return view;
- }
+ return false;
+ }
}
-
}