aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-01-07 22:59:39 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2014-01-07 22:59:39 +0100
commita2f0667593be2f7ecd5b0e2445321a22a90eea9e (patch)
tree4bef45c713467ca6d146f71af3e177df25a224dc
parentcaf3b02042f94b7b2a9b019b01d45c41bf035140 (diff)
downloadopen-keychain-a2f0667593be2f7ecd5b0e2445321a22a90eea9e.tar.gz
open-keychain-a2f0667593be2f7ecd5b0e2445321a22a90eea9e.tar.bz2
open-keychain-a2f0667593be2f7ecd5b0e2445321a22a90eea9e.zip
action encrypt to contact in view and multi select
-rw-r--r--OpenPGP-Keychain/res/layout/key_view_activity.xml13
-rw-r--r--OpenPGP-Keychain/res/menu/key_list_public_multi.xml (renamed from OpenPGP-Keychain/res/menu/key_list_multi_selection.xml)5
-rw-r--r--OpenPGP-Keychain/res/values/strings.xml7
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java49
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java20
5 files changed, 77 insertions, 17 deletions
diff --git a/OpenPGP-Keychain/res/layout/key_view_activity.xml b/OpenPGP-Keychain/res/layout/key_view_activity.xml
index 326959e97..8c6281d5b 100644
--- a/OpenPGP-Keychain/res/layout/key_view_activity.xml
+++ b/OpenPGP-Keychain/res/layout/key_view_activity.xml
@@ -113,4 +113,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
+ <TextView
+ style="@style/SectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:text="@string/section_actions" />
+
+ <Button
+ android:id="@+id/action_encrypt"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/key_view_action_encrypt" />
+
</LinearLayout> \ No newline at end of file
diff --git a/OpenPGP-Keychain/res/menu/key_list_multi_selection.xml b/OpenPGP-Keychain/res/menu/key_list_public_multi.xml
index 64f8564c1..92481e9cb 100644
--- a/OpenPGP-Keychain/res/menu/key_list_multi_selection.xml
+++ b/OpenPGP-Keychain/res/menu/key_list_public_multi.xml
@@ -2,7 +2,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
- android:id="@+id/delete_entry"
+ android:id="@+id/menu_key_list_public_multi_encrypt"
+ android:title="@string/menu_encrypt_to"/>
+ <item
+ android:id="@+id/menu_key_list_public_multi_delete"
android:icon="@android:drawable/ic_menu_delete"
android:title="@string/menu_delete_key"/>
diff --git a/OpenPGP-Keychain/res/values/strings.xml b/OpenPGP-Keychain/res/values/strings.xml
index d870c1289..62beb64f7 100644
--- a/OpenPGP-Keychain/res/values/strings.xml
+++ b/OpenPGP-Keychain/res/values/strings.xml
@@ -55,6 +55,7 @@
<string name="section_defaults">Defaults</string>
<string name="section_advanced">Advanced</string>
<string name="section_master_key">Master Key</string>
+ <string name="section_actions">Actions</string>
<!-- button -->
<string name="btn_sign_to_clipboard">Sign (Clipboard)</string>
@@ -102,7 +103,8 @@
<string name="menu_sign_key">Sign key</string>
<string name="menu_beam_preferences">Beam settings</string>
<string name="menu_key_edit_cancel">Cancel</string>
-
+ <string name="menu_encrypt_to">Encrypt to…</string>
+
<!-- label -->
<string name="label_sign">Sign</string>
<string name="label_message">Message</string>
@@ -357,4 +359,7 @@
<item quantity="other">%d keys selected.</item>
</plurals>
+ <!-- Key view -->
+ <string name="key_view_action_encrypt">Encrypt to this contact</string>
+
</resources> \ No newline at end of file
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
index a21fa7ebd..d9fa0948a 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicFragment.java
@@ -22,6 +22,7 @@ import java.util.Set;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
import org.sufficientlysecure.keychain.ui.adapter.KeyListPublicAdapter;
@@ -56,7 +57,7 @@ import android.widget.ListView;
public class KeyListPublicFragment extends Fragment implements AdapterView.OnItemClickListener,
LoaderManager.LoaderCallbacks<Cursor> {
-// private KeyListPublicActivity mKeyListPublicActivity;
+ // private KeyListPublicActivity mKeyListPublicActivity;
private KeyListPublicAdapter mAdapter;
private StickyListHeadersListView mStickyList;
@@ -77,7 +78,7 @@ public class KeyListPublicFragment extends Fragment implements AdapterView.OnIte
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-// mKeyListPublicActivity = (KeyListPublicActivity) getActivity();
+ // mKeyListPublicActivity = (KeyListPublicActivity) getActivity();
mStickyList = (StickyListHeadersListView) getActivity().findViewById(R.id.list);
mStickyList.setOnItemClickListener(this);
@@ -105,7 +106,7 @@ public class KeyListPublicFragment extends Fragment implements AdapterView.OnIte
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
android.view.MenuInflater inflater = getActivity().getMenuInflater();
- inflater.inflate(R.menu.key_list_multi_selection, menu);
+ inflater.inflate(R.menu.key_list_public_multi, menu);
return true;
}
@@ -117,20 +118,27 @@ public class KeyListPublicFragment extends Fragment implements AdapterView.OnIte
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
Set<Integer> positions = mAdapter.getCurrentCheckedPosition();
+
+ // get IDs for checked positions as long array
+ long[] ids = new long[positions.size()];
+ int i = 0;
+ for (int pos : positions) {
+ ids[i] = mAdapter.getItemId(pos);
+ i++;
+ }
+
switch (item.getItemId()) {
- case R.id.delete_entry:
-
- // get IDs for checked positions as long array
- long[] ids = new long[positions.size()];
- int i = 0;
- for (int pos : positions) {
- ids[i] = mAdapter.getItemId(pos);
- i++;
- }
+ case R.id.menu_key_list_public_multi_encrypt: {
+ encrypt(ids);
+
+ break;
+ }
+ case R.id.menu_key_list_public_multi_delete: {
showDeleteKeyDialog(ids);
break;
}
+ }
return false;
}
@@ -164,8 +172,7 @@ public class KeyListPublicFragment extends Fragment implements AdapterView.OnIte
// setListShown(false);
// Create an empty adapter we will use to display the loaded data.
- mAdapter = new KeyListPublicAdapter(getActivity(), null, Id.type.public_key,
- USER_ID_INDEX);
+ mAdapter = new KeyListPublicAdapter(getActivity(), null, Id.type.public_key, USER_ID_INDEX);
mStickyList.setAdapter(mAdapter);
// Prepare the loader. Either re-connect with an existing one,
@@ -227,6 +234,20 @@ public class KeyListPublicFragment extends Fragment implements AdapterView.OnIte
startActivity(detailsIntent);
}
+ public void encrypt(long[] keyRingRowIds) {
+ // get master key ids from row ids
+ long[] keyRingIds = new long[keyRingRowIds.length];
+ for (int i = 0; i < keyRingRowIds.length; i++) {
+ keyRingIds[i] = ProviderHelper.getPublicMasterKeyId(getActivity(), keyRingRowIds[i]);
+ }
+
+ Intent intent = new Intent(getActivity(), EncryptActivity.class);
+ intent.setAction(EncryptActivity.ACTION_ENCRYPT);
+ intent.putExtra(EncryptActivity.EXTRA_ENCRYPTION_KEY_IDS, keyRingIds);
+ // used instead of startActivity set actionbar based on callingPackage
+ startActivityForResult(intent, 0);
+ }
+
/**
* Show dialog to delete key
*
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
index d7e2b8063..7d51c2ff4 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
@@ -50,6 +50,9 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.format.DateFormat;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
@@ -67,6 +70,7 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
private TextView mFingerint;
private TextView mExpiry;
private TextView mCreation;
+ private Button mActionEncrypt;
// NFC
private NfcAdapter mNfcAdapter;
@@ -86,6 +90,7 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
mExpiry = (TextView) this.findViewById(R.id.expiry);
mCreation = (TextView) this.findViewById(R.id.creation);
mAlgorithm = (TextView) this.findViewById(R.id.algorithm);
+ mActionEncrypt = (Button) this.findViewById(R.id.action_encrypt);
Intent intent = getIntent();
mDataUri = intent.getData();
@@ -146,7 +151,7 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
}
}
};
-
+
deleteKey(mDataUri, Id.type.public_key, returnHandler);
return true;
}
@@ -172,6 +177,19 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
mCreation.setText(DateFormat.getDateFormat(getApplicationContext()).format(
PgpKeyHelper.getCreationDate(mPublicKey)));
mAlgorithm.setText(PgpKeyHelper.getAlgorithmInfo(mPublicKey));
+
+ mActionEncrypt.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ long[] encryptionKeyIds = new long[] { mPublicKey.getKeyID() };
+ Intent intent = new Intent(KeyViewActivity.this, EncryptActivity.class);
+ intent.setAction(EncryptActivity.ACTION_ENCRYPT);
+ intent.putExtra(EncryptActivity.EXTRA_ENCRYPTION_KEY_IDS, encryptionKeyIds);
+ // used instead of startActivity set actionbar based on callingPackage
+ startActivityForResult(intent, 0);
+ }
+ });
}
/**