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:
@@ -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();
|
||||
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user