aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2015-09-11 04:51:55 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2015-09-11 04:51:55 +0200
commitfd6141f0d2564eee1e6c87fe6db5bf3bbb1c4bcf (patch)
tree36f25b2c5262ac7ffded61e6045915182b26950c /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java
parent486117d9de8618c1ecfb2a592c781fc43f1cc886 (diff)
downloadopen-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/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptListFragment.java74
1 files changed, 39 insertions, 35 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) {