add share item to decrypt file list (#1524)

This commit is contained in:
Vincent Breitmoser
2015-09-11 04:51:55 +02:00
parent 486117d9de
commit fd6141f0d2
3 changed files with 49 additions and 39 deletions

View File

@@ -375,7 +375,7 @@ public class DecryptListFragment
onFileClick = new OnClickListener() { onFileClick = new OnClickListener() {
@Override @Override
public void onClick(View view) { 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(); Activity activity = getActivity();
if (activity == null || mCurrentInputUri != null) { if (activity == null || mCurrentInputUri != null) {
return; return;
@@ -419,49 +419,50 @@ public class DecryptListFragment
// OpenKeychain's internal viewer // OpenKeychain's internal viewer
if ("text/plain".equals(metadata.getMimeType())) { if ("text/plain".equals(metadata.getMimeType())) {
// this is a significant i/o operation, use an asynctask if (share) {
new AsyncTask<Void,Void,Intent>() { try {
String plaintext = FileHelper.readTextFromUri(activity, outputUri, result.getCharset());
@Override Intent intent = new Intent(Intent.ACTION_SEND);
protected Intent doInBackground(Void... params) { intent.setType(metadata.getMimeType());
intent.putExtra(Intent.EXTRA_TEXT, plaintext);
startActivity(intent);
Activity activity = getActivity(); } catch (IOException e) {
if (activity == null) { Notify.create(activity, R.string.error_preparing_data, Style.ERROR).show();
return null;
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(outputUri, "text/plain");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
return intent;
} }
@Override return;
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;
}
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 chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
new Parcelable[] { internalIntent });
activity.startActivity(chooserIntent);
}
}.execute();
} else {
Intent intent = new Intent(Intent.ACTION_VIEW); Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(outputUri, metadata.getMimeType()); intent.setDataAndType(outputUri, metadata.getMimeType());
// 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);
Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show));
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
new Parcelable[] { internalIntent });
activity.startActivity(chooserIntent);
} else {
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.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show)); Intent chooserIntent = Intent.createChooser(intent, getString(R.string.intent_show));
@@ -515,6 +516,9 @@ public class DecryptListFragment
intent.putExtra(LogDisplayFragment.EXTRA_RESULT, result); intent.putExtra(LogDisplayFragment.EXTRA_RESULT, result);
activity.startActivity(intent); activity.startActivity(intent);
return true; return true;
case R.id.decrypt_share:
displayWithViewIntent(model.mInputUri, true);
return true;
case R.id.decrypt_save: case R.id.decrypt_save:
OpenPgpMetadata metadata = result.getDecryptionMetadata(); OpenPgpMetadata metadata = result.getDecryptionMetadata();
if (metadata == null) { if (metadata == null) {

View File

@@ -7,6 +7,12 @@
android:icon="@drawable/ic_view_list_grey_24dp" android:icon="@drawable/ic_view_list_grey_24dp"
/> />
<item
android:id="@+id/decrypt_share"
android:title="@string/btn_share_decrypted_text"
android:icon="@drawable/ic_share_grey_24dp"
/>
<item <item
android:id="@+id/decrypt_save" android:id="@+id/decrypt_save"
android:title="@string/btn_save_file" android:title="@string/btn_save_file"

View File

@@ -88,7 +88,7 @@
<string name="btn_view_cert_key">"View certification key"</string> <string name="btn_view_cert_key">"View certification key"</string>
<string name="btn_create_key">"Create key"</string> <string name="btn_create_key">"Create key"</string>
<string name="btn_add_files">"Add file(s)"</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_copy_decrypted_text">"Copy decrypted text"</string>
<string name="btn_decrypt_clipboard">"Read from clipboard"</string> <string name="btn_decrypt_clipboard">"Read from clipboard"</string>
<string name="btn_decrypt_files">"Select input file"</string> <string name="btn_decrypt_files">"Select input file"</string>