ImportKeys: cleanup

This commit is contained in:
Andrea Torlaschi
2016-06-01 18:32:09 +02:00
parent 53691d7315
commit 0eceed88ff
2 changed files with 26 additions and 32 deletions

View File

@@ -28,6 +28,7 @@ import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager; import android.support.v4.app.LoaderManager;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
@@ -71,7 +72,7 @@ public class ImportKeysListFragment extends Fragment implements
private static final int REQUEST_PERMISSION_READ_EXTERNAL_STORAGE = 12; private static final int REQUEST_PERMISSION_READ_EXTERNAL_STORAGE = 12;
private Activity mActivity; private FragmentActivity mActivity;
private ParcelableProxy mParcelableProxy; private ParcelableProxy mParcelableProxy;
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
@@ -224,8 +225,8 @@ public class ImportKeysListFragment extends Fragment implements
mProgressBar = (ProgressBar) view.findViewById(R.id.progress_view); mProgressBar = (ProgressBar) view.findViewById(R.id.progress_view);
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(mActivity); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(mActivity);
mRecyclerView.setLayoutManager(mLayoutManager); 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, nonInteractive); mAdapter = new ImportKeysAdapter(mActivity, nonInteractive);
@@ -237,18 +238,16 @@ public class ImportKeysListFragment extends Fragment implements
Preferences.CloudSearchPrefs cloudSearchPrefs Preferences.CloudSearchPrefs cloudSearchPrefs
= args.getParcelable(ARG_CLOUD_SEARCH_PREFS); = args.getParcelable(ARG_CLOUD_SEARCH_PREFS);
if (cloudSearchPrefs == null) { if (cloudSearchPrefs == null) {
cloudSearchPrefs = Preferences.getPreferences(getActivity()).getCloudSearchPrefs(); cloudSearchPrefs = Preferences.getPreferences(mActivity).getCloudSearchPrefs();
} }
mLoaderState = new CloudLoaderState(query, cloudSearchPrefs); mLoaderState = new CloudLoaderState(query, cloudSearchPrefs);
} }
if (dataUri != null && !checkAndRequestReadPermission(dataUri)) { if (dataUri == null || checkAndRequestReadPermission(dataUri)) {
return view; restartLoaders();
} }
restartLoaders();
return view; return view;
} }
@@ -270,7 +269,7 @@ public class ImportKeysListFragment extends Fragment implements
return true; return true;
} }
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) if (ContextCompat.checkSelfPermission(mActivity, Manifest.permission.READ_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED) {
return true; return true;
} }
@@ -299,9 +298,9 @@ public class ImportKeysListFragment extends Fragment implements
// permission granted -> load key // permission granted -> load key
restartLoaders(); restartLoaders();
} else { } else {
Toast.makeText(getActivity(), R.string.error_denied_storage_permission, Toast.LENGTH_LONG).show(); Toast.makeText(mActivity, R.string.error_denied_storage_permission, Toast.LENGTH_LONG).show();
getActivity().setResult(Activity.RESULT_CANCELED); mActivity.setResult(Activity.RESULT_CANCELED);
getActivity().finish(); mActivity.finish();
} }
} }
@@ -340,13 +339,17 @@ public class ImportKeysListFragment extends Fragment implements
} }
} }
private void setLoadingStatus(boolean ready) {
mRecyclerView.setVisibility(ready ? View.VISIBLE : View.GONE);
mProgressBar.setVisibility(ready ? View.GONE : View.VISIBLE);
}
@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;
switch (id) { switch (id) {
case LOADER_ID_BYTES: { case LOADER_ID_BYTES: {
loader = new ImportKeysListLoader(mActivity, (BytesLoaderState) mLoaderState); loader = new ImportKeysListLoader(mActivity, (BytesLoaderState) mLoaderState);
@@ -354,17 +357,14 @@ public class ImportKeysListFragment extends Fragment implements
} }
case LOADER_ID_CLOUD: { case LOADER_ID_CLOUD: {
CloudLoaderState ls = (CloudLoaderState) mLoaderState; CloudLoaderState ls = (CloudLoaderState) mLoaderState;
loader = new ImportKeysListCloudLoader(getActivity(), ls.mServerQuery, loader = new ImportKeysListCloudLoader(mActivity, ls.mServerQuery,
ls.mCloudPrefs, mParcelableProxy); ls.mCloudPrefs, mParcelableProxy);
break; break;
} }
default:
loader = null;
} }
if (loader != null) { if (loader != null) {
mRecyclerView.setVisibility(View.GONE); setLoadingStatus(false);
mProgressBar.setVisibility(View.VISIBLE);
} }
return loader; return loader;
@@ -375,12 +375,9 @@ public class ImportKeysListFragment extends Fragment implements
Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader, Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader,
AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> data AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>> data
) { ) {
setLoadingStatus(true);
mAdapter.setData(data.getResult()); mAdapter.setData(data.getResult());
mAdapter.notifyDataSetChanged();
mRecyclerView.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
// free old cached key data // free old cached key data
mCachedKeyData = null; mCachedKeyData = null;
@@ -392,7 +389,7 @@ public class ImportKeysListFragment extends Fragment implements
// No error // No error
mCachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings(); mCachedKeyData = ((ImportKeysListLoader) loader).getParcelableRings();
} else { } else {
getKeyResult.createNotify(getActivity()).show(); getKeyResult.createNotify(mActivity).show();
} }
break; break;
@@ -433,8 +430,7 @@ public class ImportKeysListFragment extends Fragment implements
} }
}; };
if (OrbotHelper.putOrbotInRequiredState(dialogActions, if (OrbotHelper.putOrbotInRequiredState(dialogActions, mActivity)) {
getActivity())) {
// looks like we didn't have to show the // looks like we didn't have to show the
// dialog after all // dialog after all
mShowingOrbotDialog = false; mShowingOrbotDialog = false;
@@ -446,7 +442,7 @@ public class ImportKeysListFragment extends Fragment implements
mShowingOrbotDialog = true; mShowingOrbotDialog = true;
} }
} else { } else {
getKeyResult.createNotify(getActivity()).show(); getKeyResult.createNotify(mActivity).show();
} }
break; break;
@@ -459,11 +455,7 @@ public class ImportKeysListFragment extends Fragment implements
public void onLoaderReset(Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader) { public void onLoaderReset(Loader<AsyncTaskResultWrapper<ArrayList<ImportKeysListEntry>>> loader) {
switch (loader.getId()) { switch (loader.getId()) {
case LOADER_ID_BYTES: case LOADER_ID_BYTES:
// Clear the data in the adapter.
mAdapter.clearData();
break;
case LOADER_ID_CLOUD: case LOADER_ID_CLOUD:
// Clear the data in the adapter.
mAdapter.clearData(); mAdapter.clearData();
break; break;
default: default:

View File

@@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils.State;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@@ -79,6 +80,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
public void setData(List<ImportKeysListEntry> data) { public void setData(List<ImportKeysListEntry> data) {
this.mData = data; this.mData = data;
notifyDataSetChanged();
} }
public List<ImportKeysListEntry> getData() { public List<ImportKeysListEntry> getData() {
@@ -209,7 +211,7 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
// we want conventional gpg UserIDs first, then Keybase ”proofs” // we want conventional gpg UserIDs first, then Keybase ”proofs”
HashMap<String, HashSet<String>> mergedUserIds = entry.getMergedUserIds(); HashMap<String, HashSet<String>> mergedUserIds = entry.getMergedUserIds();
ArrayList<Map.Entry<String, HashSet<String>>> sortedIds = new ArrayList<Map.Entry<String, HashSet<String>>>(mergedUserIds.entrySet()); ArrayList<Map.Entry<String, HashSet<String>>> sortedIds = new ArrayList<Map.Entry<String, HashSet<String>>>(mergedUserIds.entrySet());
java.util.Collections.sort(sortedIds, new java.util.Comparator<Map.Entry<String, HashSet<String>>>() { Collections.sort(sortedIds, new java.util.Comparator<Map.Entry<String, HashSet<String>>>() {
@Override @Override
public int compare(Map.Entry<String, HashSet<String>> entry1, Map.Entry<String, HashSet<String>> entry2) { public int compare(Map.Entry<String, HashSet<String>> entry1, Map.Entry<String, HashSet<String>> entry2) {