diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-11 04:51:55 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2015-09-11 04:51:55 +0200 |
commit | fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf (patch) | |
tree | 36f25b2c5262ac7ffded61e6045915182b26950c /OpenKeychain/src | |
parent | 486117d9de8618c1ecfb2a592c781fc43f1cc886 (diff) | |
download | open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.tar.gz open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.tar.bz2 open-keychain-fd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf.zip |
add share item to decrypt file list (#1524)
Diffstat (limited to 'OpenKeychain/src')
3 files changed, 46 insertions, 36 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java index 9c0122b7b..92470218b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java @@ -375,7 +375,7 @@ public class DecryptListFragment onFileClick = new OnClickListener() { @Override public void onClick(View view) { - displayWithViewIntent(uri); + displayWithViewIntent(uri, false); } }; } @@ -400,7 +400,7 @@ public class DecryptListFragment } - public void displayWithViewIntent(final Uri uri) { + public void displayWithViewIntent(final Uri uri, boolean share) { Activity activity = getActivity(); if (activity == null || mCurrentInputUri != null) { return; @@ -419,49 +419,50 @@ public class DecryptListFragment // OpenKeychain's internal viewer if ("text/plain".equals(metadata.getMimeType())) { - // this is a significant i/o operation, use an asynctask - new AsyncTask<Void,Void,Intent>() { + if (share) { + try { + String plaintext = FileHelper.readTextFromUri(activity, outputUri, result.getCharset()); - @Override - protected Intent doInBackground(Void... params) { - - Activity activity = getActivity(); - if (activity == null) { - return null; - } + Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType(metadata.getMimeType()); + intent.putExtra(Intent.EXTRA_TEXT, plaintext); + startActivity(intent); - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, "text/plain"); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - return intent; + } catch (IOException e) { + Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show(); } - @Override - protected void onPostExecute(Intent intent) { - // for result so we can possibly get a snackbar error from internal viewer - Activity activity = getActivity(); - if (intent == null || activity == null) { - return; - } + return; + } - LabeledIntent internalIntent = new LabeledIntent( - new Intent(intent) - .setClass(activity, DisplayTextActivity.class) - .putExtra(DisplayTextActivity.EXTRA_METADATA, result), - BuildConfig.APPLICATION_ID, R.string.view_internal, R.mipmap.ic_launcher); + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setDataAndType(outputUri, metadata.getMimeType()); - Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); - chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, - new Parcelable[] { internalIntent }); + // for result so we can possibly get a snackbar error from internal viewer + LabeledIntent internalIntent = new LabeledIntent( + new Intent(intent) + .setClass(activity, DisplayTextActivity.class) + .putExtra(DisplayTextActivity.EXTRA_METADATA, result), + BuildConfig.APPLICATION_ID, R.string.view_internal, R.mipmap.ic_launcher); - activity.startActivity(chooserIntent); - } + Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); + chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, + new Parcelable[] { internalIntent }); - }.execute(); + activity.startActivity(chooserIntent); } else { - Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setDataAndType(outputUri, metadata.getMimeType()); + + Intent intent; + if (share) { + intent = new Intent(Intent.ACTION_SEND); + intent.setType(metadata.getMimeType()); + intent.putExtra(Intent.EXTRA_STREAM, outputUri); + } else { + intent = new Intent(Intent.ACTION_VIEW); + intent.setDataAndType(outputUri, metadata.getMimeType()); + } + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); @@ -515,6 +516,9 @@ public class DecryptListFragment intent.putExtra(LogDisplayFragment.EXTRA_RESULT, result); activity.startActivity(intent); return true; + case R.id.decrypt_share: + displayWithViewIntent(model.mInputUri, true); + return true; case R.id.decrypt_save: OpenPgpMetadata metadata = result.getDecryptionMetadata(); if (metadata == null) { diff --git a/OpenKeychain/src/main/res/menu/decrypt_item_context_menu.xml b/OpenKeychain/src/main/res/menu/decrypt_item_context_menu.xml index 97bf65c0d..ab526c4a5 100644 --- a/OpenKeychain/src/main/res/menu/decrypt_item_context_menu.xml +++ b/OpenKeychain/src/main/res/menu/decrypt_item_context_menu.xml @@ -8,6 +8,12 @@ /> <item + android:id="@+id/decrypt_share" + android:title="@string/btn_share_decrypted_text" + android:icon="@drawable/ic_share_grey_24dp" + /> + + <item android:id="@+id/decrypt_save" android:title="@string/btn_save_file" android:icon="@drawable/ic_action_encrypt_file_24dp" diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index 151c66613..7c8296648 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -88,7 +88,7 @@ <string name="btn_view_cert_key">"View certification key"</string> <string name="btn_create_key">"Create key"</string> <string name="btn_add_files">"Add file(s)"</string> - <string name="btn_share_decrypted_text">"Share decrypted text"</string> + <string name="btn_share_decrypted_text">"Share"</string> <string name="btn_copy_decrypted_text">"Copy decrypted text"</string> <string name="btn_decrypt_clipboard">"Read from clipboard"</string> <string name="btn_decrypt_files">"Select input file"</string> |