ImportKeys: Refactoring

This commit is contained in:
Andrea Torlaschi
2016-08-17 14:55:27 +02:00
parent 0870b7b260
commit 6ab633f08e
2 changed files with 24 additions and 44 deletions

View File

@@ -36,8 +36,8 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView;
import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.R;
@@ -196,6 +196,7 @@ public class ImportKeysListFragment extends Fragment implements
View view = binding.getRoot(); View view = binding.getRoot();
mActivity = getActivity(); mActivity = getActivity();
setHasOptionsMenu(true);
Bundle args = getArguments(); Bundle args = getArguments();
Uri dataUri = args.getParcelable(ARG_DATA_URI); Uri dataUri = args.getParcelable(ARG_DATA_URI);
@@ -203,13 +204,10 @@ public class ImportKeysListFragment extends Fragment implements
String query = args.getString(ARG_SERVER_QUERY); String query = args.getString(ARG_SERVER_QUERY);
boolean nonInteractive = args.getBoolean(ARG_NON_INTERACTIVE, false); boolean nonInteractive = args.getBoolean(ARG_NON_INTERACTIVE, false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(mActivity);
mRecyclerView.setLayoutManager(layoutManager);
// Create an empty adapter we will use to display the loaded data. // Create an empty adapter we will use to display the loaded data.
mAdapter = new ImportKeysAdapter(mActivity, mCallback, nonInteractive); mAdapter = new ImportKeysAdapter(mActivity, mCallback, nonInteractive);
mRecyclerView.setAdapter(mAdapter); binding.recyclerView.setAdapter(mAdapter);
binding.recyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
if (dataUri != null || bytes != null) { if (dataUri != null || bytes != null) {
loadState(new BytesLoaderState(bytes, dataUri)); loadState(new BytesLoaderState(bytes, dataUri));
@@ -226,10 +224,7 @@ public class ImportKeysListFragment extends Fragment implements
restartLoaders(); restartLoaders();
} }
setHasOptionsMenu(true); binding.importKeys.setOnClickListener(new OnClickListener() {
TextView importAllKeys = (TextView) view.findViewById(R.id.import_keys);
importAllKeys.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
mCallback.importKeys(); mCallback.importKeys();
@@ -267,7 +262,8 @@ public class ImportKeysListFragment extends Fragment implements
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { int itemId = item.getItemId();
switch (itemId) {
case R.id.basic: case R.id.basic:
setAdvanced(false); setAdvanced(false);
return true; return true;
@@ -275,7 +271,6 @@ public class ImportKeysListFragment extends Fragment implements
setAdvanced(true); setAdvanced(true);
return true; return true;
} }
return false; return false;
} }
@@ -314,8 +309,6 @@ public class ImportKeysListFragment extends Fragment implements
!PermissionsUtil.checkAndRequestReadPermission(mActivity, ls.mDataUri)) { !PermissionsUtil.checkAndRequestReadPermission(mActivity, ls.mDataUri)) {
return; return;
} }
} else if (mLoaderState instanceof CloudLoaderState) {
} }
if (!mLoaderState.isBasicModeSupported()) { if (!mLoaderState.isBasicModeSupported()) {
@@ -338,9 +331,8 @@ public class ImportKeysListFragment extends Fragment implements
@Override @Override
public Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> onCreateLoader( public Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> onCreateLoader(
int id, int id, Bundle args) {
Bundle args
) {
Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader = null; Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader = null;
switch (id) { switch (id) {
case LOADER_ID_BYTES: { case LOADER_ID_BYTES: {
@@ -446,15 +438,10 @@ public class ImportKeysListFragment extends Fragment implements
} }
@Override @Override
public void onLoaderReset(Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader) { public void onLoaderReset(
switch (loader.getId()) { Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader) {
case LOADER_ID_BYTES:
case LOADER_ID_CLOUD: mAdapter.clearData();
mAdapter.clearData();
break;
default:
break;
}
} }
} }

View File

@@ -145,12 +145,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
b.importKey.setOnClickListener(new View.OnClickListener() { b.importKey.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (mLoaderState instanceof BytesLoaderState) { getKey(getParcelableKeyRing(entry), false);
importKey(new ParcelableKeyRing(entry.getEncodedRing()));
} else if (mLoaderState instanceof CloudLoaderState) {
importKey(new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(),
entry.getKeybaseName(), entry.getFbUsername()));
}
} }
}); });
@@ -159,7 +154,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
public void onClick(View v) { public void onClick(View v) {
mCurrent = position; mCurrent = position;
if (!showed && !downloaded) { if (!showed && !downloaded) {
getKey(entry); getKey(getParcelableKeyRing(entry), true);
} else { } else {
changeState(position, !showed); changeState(position, !showed);
} }
@@ -184,14 +179,16 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
return mData != null ? mData.size() : 0; return mData != null ? mData.size() : 0;
} }
public void importKey(ParcelableKeyRing keyRing) { public void getKey(ParcelableKeyRing keyRing, boolean skipSave) {
ImportKeyringParcel inputParcel = prepareKeyOperation(keyRing, false); ImportKeyringParcel inputParcel = prepareKeyOperation(keyRing, skipSave);
ImportKeysOperationCallback cb = new ImportKeysOperationCallback(mListener, inputParcel); ImportKeysResultListener listener = skipSave ? this : mListener;
CryptoOperationHelper operationHelper = new CryptoOperationHelper(1, mActivity, cb, R.string.progress_importing); ImportKeysOperationCallback cb = new ImportKeysOperationCallback(listener, inputParcel);
operationHelper.cryptoOperation(); int message = skipSave ? R.string.progress_downloading : R.string.progress_importing;
CryptoOperationHelper opHelper = new CryptoOperationHelper(1, mActivity, cb, message);
opHelper.cryptoOperation();
} }
public void getKey(ImportKeysListEntry entry) { private ParcelableKeyRing getParcelableKeyRing(ImportKeysListEntry entry) {
ParcelableKeyRing keyRing = null; ParcelableKeyRing keyRing = null;
if (mLoaderState instanceof BytesLoaderState) { if (mLoaderState instanceof BytesLoaderState) {
keyRing = new ParcelableKeyRing(entry.getEncodedRing()); keyRing = new ParcelableKeyRing(entry.getEncodedRing());
@@ -199,11 +196,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
keyRing = new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(), keyRing = new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(),
entry.getKeybaseName(), entry.getFbUsername()); entry.getKeybaseName(), entry.getFbUsername());
} }
return keyRing;
ImportKeyringParcel inputParcel = prepareKeyOperation(keyRing, true);
ImportKeysOperationCallback cb = new ImportKeysOperationCallback(this, inputParcel);
CryptoOperationHelper operationHelper = new CryptoOperationHelper(1, mActivity, cb, R.string.progress_downloading);
operationHelper.cryptoOperation();
} }
private ImportKeyringParcel prepareKeyOperation(ParcelableKeyRing keyRing, boolean skipSave) { private ImportKeyringParcel prepareKeyOperation(ParcelableKeyRing keyRing, boolean skipSave) {