multi-decrypt: save currentInputUri state

This commit is contained in:
Vincent Breitmoser
2015-07-09 02:33:47 +02:00
parent 35b9dabcb8
commit a549938b61
2 changed files with 16 additions and 4 deletions

View File

@@ -89,6 +89,7 @@ public class DecryptListFragment
public static final String ARG_RESULTS = "results"; public static final String ARG_RESULTS = "results";
private static final int REQUEST_CODE_OUTPUT = 0x00007007; private static final int REQUEST_CODE_OUTPUT = 0x00007007;
public static final String ARG_CURRENT_URI = "current_uri";
private ArrayList<Uri> mInputUris; private ArrayList<Uri> mInputUris;
private HashMap<Uri, Uri> mOutputUris; private HashMap<Uri, Uri> mOutputUris;
@@ -158,6 +159,7 @@ public class DecryptListFragment
outState.putParcelable(ARG_RESULTS, new ParcelableHashMap<>(results)); outState.putParcelable(ARG_RESULTS, new ParcelableHashMap<>(results));
outState.putParcelable(ARG_OUTPUT_URIS, new ParcelableHashMap<>(mOutputUris)); outState.putParcelable(ARG_OUTPUT_URIS, new ParcelableHashMap<>(mOutputUris));
outState.putParcelableArrayList(ARG_CANCELLED_URIS, mCancelledInputUris); outState.putParcelableArrayList(ARG_CANCELLED_URIS, mCancelledInputUris);
outState.putParcelable(ARG_CURRENT_URI, mCurrentInputUri);
} }
@@ -171,18 +173,20 @@ public class DecryptListFragment
ArrayList<Uri> cancelledUris = args.getParcelableArrayList(ARG_CANCELLED_URIS); ArrayList<Uri> cancelledUris = args.getParcelableArrayList(ARG_CANCELLED_URIS);
ParcelableHashMap<Uri,Uri> outputUris = args.getParcelable(ARG_OUTPUT_URIS); ParcelableHashMap<Uri,Uri> outputUris = args.getParcelable(ARG_OUTPUT_URIS);
ParcelableHashMap<Uri,DecryptVerifyResult> results = args.getParcelable(ARG_RESULTS); ParcelableHashMap<Uri,DecryptVerifyResult> results = args.getParcelable(ARG_RESULTS);
Uri currentInputUri = args.getParcelable(ARG_CURRENT_URI);
displayInputUris(inputUris, cancelledUris, displayInputUris(inputUris, currentInputUri, cancelledUris,
outputUris != null ? outputUris.getMap() : null, outputUris != null ? outputUris.getMap() : null,
results != null ? results.getMap() : null results != null ? results.getMap() : null
); );
} }
private void displayInputUris(ArrayList<Uri> inputUris, ArrayList<Uri> cancelledUris, private void displayInputUris(ArrayList<Uri> inputUris, Uri currentInputUri,
HashMap<Uri,Uri> outputUris, ArrayList<Uri> cancelledUris, HashMap<Uri,Uri> outputUris,
HashMap<Uri,DecryptVerifyResult> results) { HashMap<Uri,DecryptVerifyResult> results) {
mInputUris = inputUris; mInputUris = inputUris;
mCurrentInputUri = currentInputUri;
mOutputUris = outputUris != null ? outputUris : new HashMap<Uri,Uri>(inputUris.size()); mOutputUris = outputUris != null ? outputUris : new HashMap<Uri,Uri>(inputUris.size());
mCancelledInputUris = cancelledUris != null ? cancelledUris : new ArrayList<Uri>(); mCancelledInputUris = cancelledUris != null ? cancelledUris : new ArrayList<Uri>();
@@ -191,6 +195,10 @@ public class DecryptListFragment
for (final Uri uri : inputUris) { for (final Uri uri : inputUris) {
mAdapter.add(uri); mAdapter.add(uri);
if (uri.equals(mCurrentInputUri)) {
continue;
}
if (mCancelledInputUris.contains(uri)) { if (mCancelledInputUris.contains(uri)) {
mAdapter.setCancelled(uri, new OnClickListener() { mAdapter.setCancelled(uri, new OnClickListener() {
@Override @Override
@@ -209,7 +217,9 @@ public class DecryptListFragment
} }
} }
cryptoOperation(); if (mCurrentInputUri == null) {
cryptoOperation();
}
} }
private void askForOutputFilename(Uri inputUri, String originalFilename, String mimeType) { private void askForOutputFilename(Uri inputUri, String originalFilename, String mimeType) {

View File

@@ -26,6 +26,7 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentActivity;
import android.text.InputType; import android.text.InputType;
@@ -175,6 +176,7 @@ public class PassphraseDialogActivity extends FragmentActivity {
private Intent mServiceIntent; private Intent mServiceIntent;
@NonNull
@Override @Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
final Activity activity = getActivity(); final Activity activity = getActivity();