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.LinearLayout;
|
||||
import android.widget.PopupMenu;
|
||||
import android.widget.PopupMenu.OnDismissListener;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
@ -261,31 +260,37 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
|||
@Override
|
||||
public void showLayoutSelectNoKeys() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_no_keys);
|
||||
buttonOverflow.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLayoutSelectKeyList() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_key_list);
|
||||
buttonOverflow.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLayoutImportExplanation() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_import_expl);
|
||||
buttonOverflow.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLayoutGenerateProgress() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_progress);
|
||||
buttonOverflow.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLayoutGenerateOk() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_ok);
|
||||
buttonOverflow.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showLayoutGenerateSave() {
|
||||
layoutAnimator.setDisplayedChildId(R.id.select_key_layout_generate_save);
|
||||
buttonOverflow.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -324,11 +329,23 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
|||
}
|
||||
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() {
|
||||
buttonOverflow.setOnClickListener(this::showContextMenu);
|
||||
buttonOverflow.setOnClickListener(view -> presenter.onClickOverflowMenu());
|
||||
|
||||
buttonKeyListOther.setOnClickListener(view -> presenter.onClickKeyListOther());
|
||||
buttonKeyListCancel.setOnClickListener(view -> presenter.onClickKeyListCancel());
|
||||
|
@ -346,13 +363,6 @@ public class RemoteSelectIdKeyActivity extends FragmentActivity {
|
|||
keyChoiceList.addOnItemTouchListener(new RecyclerItemClickListener(getContext(),
|
||||
(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) {
|
||||
|
|
|
@ -12,6 +12,7 @@ public class RemoteSelectIdViewModel extends ViewModel {
|
|||
|
||||
private KeyInfoLiveData keyInfo;
|
||||
private PgpKeyGenerationLiveData keyGenerationData;
|
||||
private boolean listAllKeys;
|
||||
|
||||
public KeyInfoLiveData getKeyInfo(Context context) {
|
||||
if (keyInfo == null) {
|
||||
|
@ -27,4 +28,12 @@ public class RemoteSelectIdViewModel extends ViewModel {
|
|||
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.NameNotFoundException;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
|
||||
import org.openintents.openpgp.util.OpenPgpUtils;
|
||||
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.service.ImportKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
|
||||
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
|
||||
import timber.log.Timber;
|
||||
|
||||
|
||||
|
@ -83,8 +83,13 @@ class RemoteSelectIdentityKeyPresenter {
|
|||
this.userId = OpenPgpUtils.splitUserId(rawUserId);
|
||||
view.setAddressText(userId.email);
|
||||
|
||||
viewModel.getKeyInfo(context).setKeySelector(KeySelector.createOnlySecret(
|
||||
KeyRings.buildUnifiedKeyRingsFindByUserIdUri(userId.email), null));
|
||||
loadKeyInfo();
|
||||
}
|
||||
|
||||
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 {
|
||||
|
@ -199,6 +204,16 @@ class RemoteSelectIdentityKeyPresenter {
|
|||
view.showImportInternalError();
|
||||
}
|
||||
|
||||
public void onClickOverflowMenu() {
|
||||
view.displayOverflowMenu();
|
||||
}
|
||||
|
||||
public void onClickMenuListAllKeys() {
|
||||
viewModel.setListAllKeys(true);
|
||||
loadKeyInfo();
|
||||
view.showLayoutSelectKeyList();
|
||||
}
|
||||
|
||||
interface RemoteSelectIdentityKeyView {
|
||||
void finishAndReturn(long masterKeyId);
|
||||
void finishAsCancelled();
|
||||
|
@ -221,5 +236,7 @@ class RemoteSelectIdentityKeyPresenter {
|
|||
void launchImportOperation(ImportKeyringParcel importKeyringParcel);
|
||||
|
||||
void showImportInternalError();
|
||||
|
||||
void displayOverflowMenu();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/list_all_keys"
|
||||
android:title="List all keys"
|
||||
android:checkable="true"
|
||||
android:title="@string/menu_list_unrelated_keys"
|
||||
android:orderInCategory="1" />
|
||||
</menu>
|
|
@ -1995,4 +1995,5 @@
|
|||
<string name="select_identity_cancel">Cancel</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="menu_list_unrelated_keys">List unrelated keys</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue