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

@@ -56,8 +56,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
private ArrayList<String> mOrigins;
private Integer mHashCode = null;
private boolean mSelected;
public int describeContents() {
return 0;
}
@@ -82,7 +80,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
}
dest.writeString(mAlgorithm);
dest.writeByte((byte) (mSecretKey ? 1 : 0));
dest.writeByte((byte) (mSelected ? 1 : 0));
dest.writeString(mKeybaseName);
dest.writeString(mFbUsername);
dest.writeStringList(mOrigins);
@@ -104,7 +101,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
vr.mBitStrength = source.readInt() != 0 ? source.readInt() : null;
vr.mAlgorithm = source.readString();
vr.mSecretKey = source.readByte() == 1;
vr.mSelected = source.readByte() == 1;
vr.mKeybaseName = source.readString();
vr.mFbUsername = source.readString();
vr.mOrigins = new ArrayList<>();
@@ -136,14 +132,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
return mKeyIdHex;
}
public boolean isSelected() {
return mSelected;
}
public void setSelected(boolean selected) {
mSelected = selected;
}
public boolean isExpired() {
return mExpired;
}
@@ -275,8 +263,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
public ImportKeysListEntry() {
// keys from keyserver are always public keys; from keybase too
mSecretKey = false;
// do not select by default
mSelected = false;
mUserIds = new ArrayList<>();
mOrigins = new ArrayList<>();
}
@@ -286,9 +273,6 @@ public class ImportKeysListEntry implements Serializable, Parcelable {
*/
@SuppressWarnings("unchecked")
public ImportKeysListEntry(Context context, UncachedKeyRing ring) {
// selected is default
this.mSelected = true;
mSecretKey = ring.isSecret();
UncachedPublicKey key = ring.getPublicKey();

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 {