aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-03-10 23:20:07 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2014-03-10 23:20:07 +0100
commit612ad9e6b3ac10d453d30aac334c45e6455e5aef (patch)
tree4c29eadd2b1a40a1dfb8f36d551ef6bea1f8cec9 /OpenPGP-Keychain
parent8fa62161df84ab7c7bcba55eb6991c6b5e26ac45 (diff)
parenta41ee31b6c5cfbef067efb0843593a2459861b9c (diff)
downloadopen-keychain-612ad9e6b3ac10d453d30aac334c45e6455e5aef.tar.gz
open-keychain-612ad9e6b3ac10d453d30aac334c45e6455e5aef.tar.bz2
open-keychain-612ad9e6b3ac10d453d30aac334c45e6455e5aef.zip
Merge pull request #383 from sreeram-boyapati/master
Fix to passphrase dialog and Issue #207
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java50
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java65
-rw-r--r--OpenPGP-Keychain/src/main/res/layout/passphrase_repeat_dialog.xml8
-rw-r--r--OpenPGP-Keychain/src/main/res/layout/select_secret_key_layout_fragment.xml23
-rw-r--r--OpenPGP-Keychain/src/main/res/values/strings.xml2
5 files changed, 109 insertions, 39 deletions
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
index 6bcb84f46..ca5d8b262 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
@@ -24,10 +24,13 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
+import android.Manifest;
import android.app.Activity;
+import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -40,6 +43,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment {
private TextView mKeyUserId;
private TextView mKeyUserIdRest;
+ private TextView mKeyMasterKeyIdHex;
private BootstrapButton mSelectKeyButton;
private Boolean mFilterCertify;
@@ -61,26 +65,58 @@ public class SelectSecretKeyLayoutFragment extends Fragment {
public void selectKey(long secretKeyId) {
if (secretKeyId == Id.key.none) {
- mKeyUserId.setText(R.string.api_settings_no_key);
+ mKeyMasterKeyIdHex.setText(R.string.api_settings_no_key);
mKeyUserIdRest.setText("");
+ mKeyUserId.setVisibility(View.GONE);
+ mKeyUserIdRest.setVisibility(View.GONE);
+
} else {
String uid = getResources().getString(R.string.user_id_no_name);
String uidExtra = "";
+ String masterkeyIdHex = "";
+
PGPSecretKeyRing keyRing = ProviderHelper.getPGPSecretKeyRingByMasterKeyId(
getActivity(), secretKeyId);
if (keyRing != null) {
PGPSecretKey key = PgpKeyHelper.getMasterKey(keyRing);
+ masterkeyIdHex = PgpKeyHelper.convertKeyIdToHex(secretKeyId);
+
if (key != null) {
String userId = PgpKeyHelper.getMainUserIdSafe(getActivity(), key);
- String chunks[] = userId.split(" <", 2);
+ /*String chunks[] = mUserId.split(" <", 2);
uid = chunks[0];
if (chunks.length > 1) {
uidExtra = "<" + chunks[1];
- }
+ }*/
+ String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
+ String userName, userEmail;
+
+ if (userIdSplit[0] != null) { userName = userIdSplit[0]; }
+ else { userName = getActivity().getResources().getString(R.string.user_id_no_name); }
+
+ if (userIdSplit[1] != null) { userEmail = userIdSplit[1]; }
+ else { userEmail = getActivity().getResources().getString(R.string.error_user_id_no_email); }
+
+ mKeyMasterKeyIdHex.setText(masterkeyIdHex);
+ mKeyUserId.setText(userName);
+ mKeyUserIdRest.setText(userEmail);
+ mKeyUserId.setVisibility(View.VISIBLE);
+ mKeyUserIdRest.setVisibility(View.VISIBLE);
}
+ else{
+ mKeyMasterKeyIdHex.setText(getActivity().getResources().getString(R.string.no_key));
+ mKeyUserId.setVisibility(View.GONE);
+ mKeyUserIdRest.setVisibility(View.GONE);
+
+ }
+
}
- mKeyUserId.setText(uid);
- mKeyUserIdRest.setText(uidExtra);
+ else{
+ mKeyMasterKeyIdHex.setText(getActivity().getResources().getString(R.string.no_keys_added_or_updated)+" for master id: "+secretKeyId);
+ mKeyUserId.setVisibility(View.GONE);
+ mKeyUserIdRest.setVisibility(View.GONE);
+ }
+
}
}
@@ -98,6 +134,7 @@ public class SelectSecretKeyLayoutFragment extends Fragment {
mKeyUserId = (TextView) view.findViewById(R.id.select_secret_key_user_id);
mKeyUserIdRest = (TextView) view.findViewById(R.id.select_secret_key_user_id_rest);
+ mKeyMasterKeyIdHex = (TextView) view.findViewById(R.id.select_secret_key_master_key_hex);
mSelectKeyButton = (BootstrapButton) view
.findViewById(R.id.select_secret_key_select_key_button);
mFilterCertify = false;
@@ -117,6 +154,8 @@ public class SelectSecretKeyLayoutFragment extends Fragment {
startActivityForResult(intent, REQUEST_CODE_SELECT_KEY);
}
+ //Select Secret Key Activity delivers the intent which was sent by it using interface to Select
+ // Secret Key Fragment.Intent contains Master Key Id, User Email, User Name, Master Key Id Hex.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode & 0xFFFF) {
@@ -125,7 +164,6 @@ public class SelectSecretKeyLayoutFragment extends Fragment {
if (resultCode == Activity.RESULT_OK) {
Bundle bundle = data.getExtras();
secretKeyId = bundle.getLong(SelectSecretKeyActivity.RESULT_EXTRA_MASTER_KEY_ID);
-
selectKey(secretKeyId);
// remove displayed errors
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java
index 52186b662..4f7623bce 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysAdapter.java
@@ -42,7 +42,15 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
protected Activity mActivity;
protected List<ImportKeysListEntry> data;
+ static class ViewHolder{
+ private TextView mainUserId;
+ private TextView mainUserIdRest;
+ private TextView keyId;
+ private TextView fingerprint;
+ private TextView algorithm;
+ private TextView status;
+ }
public ImportKeysAdapter(Activity activity) {
super(activity, -1);
mActivity = activity;
@@ -86,16 +94,21 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
public View getView(int position, View convertView, ViewGroup parent) {
ImportKeysListEntry entry = data.get(position);
-
- View view = mInflater.inflate(R.layout.import_keys_list_entry, null);
-
- TextView mainUserId = (TextView) view.findViewById(R.id.mainUserId);
- TextView mainUserIdRest = (TextView) view.findViewById(R.id.mainUserIdRest);
- TextView keyId = (TextView) view.findViewById(R.id.keyId);
- TextView fingerprint = (TextView) view.findViewById(R.id.fingerprint);
- TextView algorithm = (TextView) view.findViewById(R.id.algorithm);
- TextView status = (TextView) view.findViewById(R.id.status);
-
+ ViewHolder holder;
+ if(convertView == null) {
+ holder = new ViewHolder();
+ convertView = mInflater.inflate(R.layout.import_keys_list_entry, null);
+ holder.mainUserId = (TextView) convertView.findViewById(R.id.mainUserId);
+ holder.mainUserIdRest = (TextView) convertView.findViewById(R.id.mainUserIdRest);
+ holder.keyId = (TextView) convertView.findViewById(R.id.keyId);
+ holder.fingerprint = (TextView) convertView.findViewById(R.id.fingerprint);
+ holder.algorithm = (TextView) convertView.findViewById(R.id.algorithm);
+ holder.status = (TextView) convertView.findViewById(R.id.status);
+ convertView.setTag(holder);
+ }
+ else{
+ holder = (ViewHolder)convertView.getTag();
+ }
// main user id
String userId = entry.userIds.get(0);
String[] userIdSplit = PgpKeyHelper.splitUserId(userId);
@@ -105,39 +118,39 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
// show red user id if it is a secret key
if (entry.secretKey) {
userIdSplit[0] = mActivity.getString(R.string.secret_key) + " " + userIdSplit[0];
- mainUserId.setTextColor(Color.RED);
+ holder.mainUserId.setTextColor(Color.RED);
}
- mainUserId.setText(userIdSplit[0]);
+ holder.mainUserId.setText(userIdSplit[0]);
} else {
- mainUserId.setText(R.string.user_id_no_name);
+ holder.mainUserId.setText(R.string.user_id_no_name);
}
// email
if (userIdSplit[1] != null) {
- mainUserIdRest.setText(userIdSplit[1]);
- mainUserIdRest.setVisibility(View.VISIBLE);
+ holder.mainUserIdRest.setText(userIdSplit[1]);
+ holder.mainUserIdRest.setVisibility(View.VISIBLE);
} else {
- mainUserIdRest.setVisibility(View.GONE);
+ holder.mainUserIdRest.setVisibility(View.GONE);
}
- keyId.setText(entry.hexKeyId);
+ holder.keyId.setText(entry.hexKeyId);
if (entry.fingerPrint != null) {
- fingerprint.setText(mActivity.getString(R.string.fingerprint) + " " + entry.fingerPrint);
- fingerprint.setVisibility(View.VISIBLE);
+ holder.fingerprint.setText(mActivity.getString(R.string.fingerprint) + " " + entry.fingerPrint);
+ holder.fingerprint.setVisibility(View.VISIBLE);
} else {
- fingerprint.setVisibility(View.GONE);
+ holder.fingerprint.setVisibility(View.GONE);
}
- algorithm.setText("" + entry.bitStrength + "/" + entry.algorithm);
+ holder.algorithm.setText("" + entry.bitStrength + "/" + entry.algorithm);
if (entry.revoked) {
- status.setText(R.string.revoked);
+ holder.status.setText(R.string.revoked);
} else {
- status.setVisibility(View.GONE);
+ holder.status.setVisibility(View.GONE);
}
- LinearLayout ll = (LinearLayout) view.findViewById(R.id.list);
+ LinearLayout ll = (LinearLayout) convertView.findViewById(R.id.list);
if (entry.userIds.size() == 1) {
ll.setVisibility(View.GONE);
} else {
@@ -162,10 +175,10 @@ public class ImportKeysAdapter extends ArrayAdapter<ImportKeysListEntry> {
}
}
- CheckBox cBox = (CheckBox) view.findViewById(R.id.selected);
+ CheckBox cBox = (CheckBox) convertView.findViewById(R.id.selected);
cBox.setChecked(entry.isSelected());
- return view;
+ return convertView;
}
}
diff --git a/OpenPGP-Keychain/src/main/res/layout/passphrase_repeat_dialog.xml b/OpenPGP-Keychain/src/main/res/layout/passphrase_repeat_dialog.xml
index 2bdd231ee..ae523762c 100644
--- a/OpenPGP-Keychain/src/main/res/layout/passphrase_repeat_dialog.xml
+++ b/OpenPGP-Keychain/src/main/res/layout/passphrase_repeat_dialog.xml
@@ -6,7 +6,9 @@
android:paddingRight="16dp"
android:stretchColumns="1" >
- <TableRow>
+ <TableRow
+ android:layout_marginBottom="5dip"
+ >
<TextView
android:id="@+id/passphrase_label_passphrase"
@@ -24,7 +26,9 @@
android:padding="4dp" />
</TableRow>
- <TableRow>
+ <TableRow
+ android:layout_marginBottom="10dip"
+ >
<TextView
android:id="@+id/passphrase_label_passphrase_again"
diff --git a/OpenPGP-Keychain/src/main/res/layout/select_secret_key_layout_fragment.xml b/OpenPGP-Keychain/src/main/res/layout/select_secret_key_layout_fragment.xml
index 4a3cd3d28..9b92a373a 100644
--- a/OpenPGP-Keychain/src/main/res/layout/select_secret_key_layout_fragment.xml
+++ b/OpenPGP-Keychain/src/main/res/layout/select_secret_key_layout_fragment.xml
@@ -3,7 +3,7 @@
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal" >
+ android:orientation="vertical" >
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/select_secret_key_select_key_button"
@@ -28,28 +28,41 @@
android:paddingLeft="16dp" >
<!-- Has been made focusable to display error messages with setError -->
+ <TextView
+ android:id="@+id/select_secret_key_master_key_hex"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="left"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:text="@string/api_settings_no_key"
+ />
<TextView
android:id="@+id/select_secret_key_user_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="right"
+ android:layout_gravity="left"
android:ellipsize="end"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"
- android:text="@string/api_settings_no_key"
- android:textAppearance="?android:attr/textAppearanceMedium" />
+ android:visibility="gone"
+ android:text=""
+ android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/select_secret_key_user_id_rest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="right"
+ android:layout_gravity="left"
android:ellipsize="end"
android:singleLine="true"
android:text=""
+ android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceSmall" />
+
+
+
</LinearLayout>
</LinearLayout> \ No newline at end of file
diff --git a/OpenPGP-Keychain/src/main/res/values/strings.xml b/OpenPGP-Keychain/src/main/res/values/strings.xml
index 3267115a2..9babeb3f2 100644
--- a/OpenPGP-Keychain/src/main/res/values/strings.xml
+++ b/OpenPGP-Keychain/src/main/res/values/strings.xml
@@ -147,6 +147,7 @@
<string name="user_id_no_name">&lt;no name&gt;</string>
<string name="none">&lt;none&gt;</string>
<string name="no_key">&lt;no key&gt;</string>
+ <string name="no_email">&lt;No Email&gt;</string>
<string name="unknown_status"></string>
<string name="can_encrypt">can encrypt</string>
<string name="can_sign">can sign</string>
@@ -273,6 +274,7 @@
<string name="error_master_key_must_not_be_el_gamal">the master key cannot be an ElGamal key</string>
<string name="error_unknown_algorithm_choice">unknown algorithm choice</string>
<string name="error_user_id_needs_a_name">you need to specify a name</string>
+ <string name="error_user_id_no_email">no email found</string>
<string name="error_user_id_needs_an_email_address">you need to specify an email address</string>
<string name="error_key_needs_a_user_id">need at least one user id</string>
<string name="error_main_user_id_must_not_be_empty">main user id must not be empty</string>