add option to choose from unrelated keys
This commit is contained in:
parent
336c43cfde
commit
b75cd19a4f
|
@ -52,7 +52,6 @@ import android.view.ViewGroup;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
import android.widget.PopupMenu.OnDismissListener;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
@ -261,31 +260,37 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutSelectNoKeys() {
|
public void showLayoutSelectNoKeys() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_no_keys);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_no_keys);
|
||||||
|
buttonOverflow.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutSelectKeyList() {
|
public void showLayoutSelectKeyList() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_key_list);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_key_list);
|
||||||
|
buttonOverflow.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutImportExplanation() {
|
public void showLayoutImportExplanation() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_import_expl);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_import_expl);
|
||||||
|
buttonOverflow.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutGenerateProgress() {
|
public void showLayoutGenerateProgress() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_progress);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_progress);
|
||||||
|
buttonOverflow.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutGenerateOk() {
|
public void showLayoutGenerateOk() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_ok);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_ok);
|
||||||
|
buttonOverflow.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void showLayoutGenerateSave() {
|
public void showLayoutGenerateSave() {
|
||||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_save);
|
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_save);
|
||||||
|
buttonOverflow.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -324,11 +329,23 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
||||||
}
|
}
|
||||||
activity.launchImportOperation(importKeyringParcel);
|
activity.launchImportOperation(importKeyringParcel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayOverflowMenu() {
|
||||||
|
ContextThemeWrapper theme = ThemeChanger.getDialogThemeWrapper(getActivity());
|
||||||
|
PopupMenu menu = new PopupMenu(theme, buttonOverflow);
|
||||||
|
menu.inflate(R.menu.select_identity_menu);
|
||||||
|
menu.setOnMenuItemClickListener(item -> {
|
||||||
|
presenter.onClickMenuListAllKeys();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
menu.show();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupListenersForPresenter() {
|
private void setupListenersForPresenter() {
|
||||||
buttonOverflow.setOnClickListener(this::showContextMenu);
|
buttonOverflow.setOnClickListener(view -> presenter.onClickOverflowMenu());
|
||||||
|
|
||||||
buttonKeyListOther.setOnClickListener(view -> presenter.onClickKeyListOther());
|
buttonKeyListOther.setOnClickListener(view -> presenter.onClickKeyListOther());
|
||||||
buttonKeyListCancel.setOnClickListener(view -> presenter.onClickKeyListCancel());
|
buttonKeyListCancel.setOnClickListener(view -> presenter.onClickKeyListCancel());
|
||||||
|
@ -346,13 +363,6 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
||||||
keyChoiceList.addOnItemTouchListener(new RecyclerItemClickListener(getContext(),
|
keyChoiceList.addOnItemTouchListener(new RecyclerItemClickListener(getContext(),
|
||||||
(view, position) -> presenter.onKeyItemClick(position)));
|
(view, position) -> presenter.onKeyItemClick(position)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showContextMenu(View view) {
|
|
||||||
PopupMenu menu = new PopupMenu(getActivity(), view);
|
|
||||||
menu.inflate(R.menu.identity_context_menu);
|
|
||||||
// menu.setOnMenuItemClickListener(DecryptListFragment.this);
|
|
||||||
menu.show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void launchImportOperation(ImportKeyringParcel importKeyringParcel) {
|
private void launchImportOperation(ImportKeyringParcel importKeyringParcel) {
|
||||||
|
|
|
@ -12,6 +12,7 @@ public class RemoteSelectIdViewModel extends ViewModel {
|
||||||
|
|
||||||
private KeyInfoLiveData keyInfo;
|
private KeyInfoLiveData keyInfo;
|
||||||
private PgpKeyGenerationLiveData keyGenerationData;
|
private PgpKeyGenerationLiveData keyGenerationData;
|
||||||
|
private boolean listAllKeys;
|
||||||
|
|
||||||
public KeyInfoLiveData getKeyInfo(Context context) {
|
public KeyInfoLiveData getKeyInfo(Context context) {
|
||||||
if (keyInfo == null) {
|
if (keyInfo == null) {
|
||||||
|
@ -27,4 +28,12 @@ public class RemoteSelectIdViewModel extends ViewModel {
|
||||||
return keyGenerationData;
|
return keyGenerationData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isListAllKeys() {
|
||||||
|
return listAllKeys;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListAllKeys(boolean listAllKeys) {
|
||||||
|
this.listAllKeys = listAllKeys;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManager.NameNotFoundException;
|
import android.content.pm.PackageManager.NameNotFoundException;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
import org.openintents.openpgp.util.OpenPgpUtils;
|
import org.openintents.openpgp.util.OpenPgpUtils;
|
||||||
import org.openintents.openpgp.util.OpenPgpUtils.UserId;
|
import org.openintents.openpgp.util.OpenPgpUtils.UserId;
|
||||||
|
@ -39,7 +40,6 @@ import org.sufficientlysecure.keychain.pgp.UncachedKeyRing;
|
||||||
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
|
||||||
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
import org.sufficientlysecure.keychain.service.ImportKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
||||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,8 +83,13 @@ class RemoteSelectIdentityKeyPresenter {
|
||||||
this.userId = OpenPgpUtils.splitUserId(rawUserId);
|
this.userId = OpenPgpUtils.splitUserId(rawUserId);
|
||||||
view.setAddressText(userId.email);
|
view.setAddressText(userId.email);
|
||||||
|
|
||||||
viewModel.getKeyInfo(context).setKeySelector(KeySelector.createOnlySecret(
|
loadKeyInfo();
|
||||||
KeyRings.buildUnifiedKeyRingsFindByUserIdUri(userId.email), null));
|
}
|
||||||
|
|
||||||
|
private void loadKeyInfo() {
|
||||||
|
Uri listedKeyRingUri = viewModel.isListAllKeys() ?
|
||||||
|
KeyRings.buildUnifiedKeyRingsUri() : KeyRings.buildUnifiedKeyRingsFindByUserIdUri(userId.email);
|
||||||
|
viewModel.getKeyInfo(context).setKeySelector(KeySelector.createOnlySecret(listedKeyRingUri, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setPackageInfo(String packageName) throws NameNotFoundException {
|
private void setPackageInfo(String packageName) throws NameNotFoundException {
|
||||||
|
@ -199,6 +204,16 @@ class RemoteSelectIdentityKeyPresenter {
|
||||||
view.showImportInternalError();
|
view.showImportInternalError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onClickOverflowMenu() {
|
||||||
|
view.displayOverflowMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onClickMenuListAllKeys() {
|
||||||
|
viewModel.setListAllKeys(true);
|
||||||
|
loadKeyInfo();
|
||||||
|
view.showLayoutSelectKeyList();
|
||||||
|
}
|
||||||
|
|
||||||
interface RemoteSelectIdentityKeyView {
|
interface RemoteSelectIdentityKeyView {
|
||||||
void finishAndReturn(long masterKeyId);
|
void finishAndReturn(long masterKeyId);
|
||||||
void finishAsCancelled();
|
void finishAsCancelled();
|
||||||
|
@ -221,5 +236,7 @@ class RemoteSelectIdentityKeyPresenter {
|
||||||
void launchImportOperation(ImportKeyringParcel importKeyringParcel);
|
void launchImportOperation(ImportKeyringParcel importKeyringParcel);
|
||||||
|
|
||||||
void showImportInternalError();
|
void showImportInternalError();
|
||||||
|
|
||||||
|
void displayOverflowMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/list_all_keys"
|
android:id="@+id/list_all_keys"
|
||||||
android:title="List all keys"
|
android:title="@string/menu_list_unrelated_keys"
|
||||||
android:checkable="true"
|
|
||||||
android:orderInCategory="1" />
|
android:orderInCategory="1" />
|
||||||
</menu>
|
</menu>
|
|
@ -1995,4 +1995,5 @@
|
||||||
<string name="select_identity_cancel">Cancel</string>
|
<string name="select_identity_cancel">Cancel</string>
|
||||||
<string name="select_identity_create">Create a key for me</string>
|
<string name="select_identity_create">Create a key for me</string>
|
||||||
<string name="error_save_key_internal">"Internal error saving key!"</string>
|
<string name="error_save_key_internal">"Internal error saving key!"</string>
|
||||||
|
<string name="menu_list_unrelated_keys">List unrelated keys</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in a new issue