ImportKeys: Add ability to import all keys in a file

- Remove ability to select keys
(We will add ability to import a single key)
This commit is contained in:
Andrea Torlaschi
2016-06-17 22:29:15 +02:00
parent c41b658e8f
commit 155ebc4d69
6 changed files with 12 additions and 53 deletions

View File

@@ -51,6 +51,7 @@ import org.sufficientlysecure.keychain.util.Preferences;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ImportKeysActivity extends BaseActivity
implements CryptoOperationHelper.Callback<ImportKeyringParcel, ImportKeyResult> {
@@ -329,12 +330,11 @@ public class ImportKeysActivity extends BaseActivity
keyListFragment.loadNew(loaderState);
}
private void importSelectedKeys() {
public void importAllKeys() {
FragmentManager fragMan = getSupportFragmentManager();
ImportKeysListFragment keyListFragment = (ImportKeysListFragment) fragMan.findFragmentByTag(TAG_FRAG_LIST);
if (keyListFragment.getSelectedEntries().size() == 0) {
if (keyListFragment.getEntries().size() == 0) {
Notify.create(this, R.string.error_nothing_import_selected, Notify.Style.ERROR)
.show((ViewGroup) findViewById(R.id.import_snackbar));
return;
@@ -377,7 +377,7 @@ public class ImportKeysActivity extends BaseActivity
ArrayList<ParcelableKeyRing> keys = new ArrayList<>();
{
// change the format into ParcelableKeyRing
ArrayList<ImportKeysListEntry> entries = keyListFragment.getSelectedEntries();
List<ImportKeysListEntry> entries = keyListFragment.getEntries();
for (ImportKeysListEntry entry : entries) {
keys.add(new ParcelableKeyRing(entry.getFingerprintHex(),
entry.getKeyIdHex(), entry.getKeybaseName(), entry.getFbUsername()));

View File

@@ -25,7 +25,6 @@ import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
@@ -131,7 +130,7 @@ public class ImportKeysFileFragment extends Fragment {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.import_all_keys:
//TODO
mImportActivity.importAllKeys();
return true;
}

View File

@@ -102,10 +102,6 @@ public class ImportKeysListFragment extends Fragment implements
return mLoaderState;
}
public List<ImportKeysListEntry> getData() {
return mAdapter.getData();
}
/**
* Returns an Iterator (with size) of the selected data items.
* This iterator is sort of a tradeoff, it's slightly more complex than an
@@ -113,7 +109,7 @@ public class ImportKeysListFragment extends Fragment implements
* relevant elements on demand.
*/
public IteratorWithSize<ParcelableKeyRing> getSelectedData() {
final ArrayList<ImportKeysListEntry> entries = getSelectedEntries();
final List<ImportKeysListEntry> entries = getEntries();
final Iterator<ImportKeysListEntry> it = entries.iterator();
return new IteratorWithSize<ParcelableKeyRing>() {
@@ -140,9 +136,9 @@ public class ImportKeysListFragment extends Fragment implements
};
}
public ArrayList<ImportKeysListEntry> getSelectedEntries() {
public List<ImportKeysListEntry> getEntries() {
if (mAdapter != null) {
return mAdapter.getSelectedEntries();
return mAdapter.getEntries();
} else {
Log.e(Constants.TAG, "Adapter not initialized, returning empty list");
return new ArrayList<>();

View File

@@ -85,27 +85,21 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
notifyDataSetChanged();
}
public List<ImportKeysListEntry> getData() {
return mData;
}
/**
* This method returns a list of all selected entries, with public keys sorted
* before secret keys, see ImportOperation for specifics.
*
* @see ImportOperation
*/
public ArrayList<ImportKeysListEntry> getSelectedEntries() {
public List<ImportKeysListEntry> getEntries() {
ArrayList<ImportKeysListEntry> result = new ArrayList<>();
ArrayList<ImportKeysListEntry> secrets = new ArrayList<>();
if (mData == null) {
return result;
}
for (ImportKeysListEntry entry : mData) {
if (entry.isSelected()) {
// add this entry to either the secret or the public list
(entry.isSecretKey() ? secrets : result).add(entry);
}
// add this entry to either the secret or the public list
(entry.isSecretKey() ? secrets : result).add(entry);
}
// add secret keys at the end of the list
result.addAll(secrets);
@@ -263,19 +257,6 @@ public class ImportKeysAdapter extends RecyclerView.Adapter<ImportKeysAdapter.Vi
}
}
}
int defaultColor = ContextCompat.getColor(mContext, R.color.cardview_light_background);
int selectedColor = ContextCompat.getColor(mContext, R.color.primaryLight);
holder.container.setBackgroundColor(entry.isSelected() ? selectedColor : defaultColor);
holder.container.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!mNonInteractive) {
entry.setSelected(!entry.isSelected());
notifyDataSetChanged();
}
}
});
}
@Override

View File

@@ -152,7 +152,6 @@ public class ImportKeysListCloudLoader
* to enforce a check when the key is imported by KeychainService
*/
uniqueEntry.setFingerprintHex(fingerprint);
uniqueEntry.setSelected(true);
mEntryList.add(uniqueEntry);
}
} else {