From 750aa420357603e912a45ce586854db173b96f5b Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Thu, 12 Jul 2018 14:11:52 +0200 Subject: [PATCH] Scroll to new key after import --- .../keychain/ui/KeyListFragment.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index 72b97b352..d40cbfe12 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -100,6 +100,8 @@ public class KeyListFragment extends RecyclerFragment 0) { + queuedHighlightMasterKeyId = importedMasterKeyIds[0]; + } + } + GenericViewModel viewModel = ViewModelProviders.of(this).get(GenericViewModel.class); LiveData> liveData = viewModel.getGenericLiveData(requireContext(), this::loadFlexibleKeyItems); liveData.observe(this, this::onLoadKeyItems); @@ -261,7 +272,16 @@ public class KeyListFragment extends RecyclerFragment flexibleKeyItems) { FlexibleAdapter adapter = getAdapter(); if (adapter == null) { - adapter = new FlexibleAdapter<>(flexibleKeyItems, this, true); + adapter = new FlexibleAdapter(flexibleKeyItems, this, true) { + @Override + public long getItemId(int position) { + FlexibleKeyItem item = getItem(position); + if (item instanceof FlexibleKeyDetailsItem) { + return ((FlexibleKeyDetailsItem) item).keyInfo.master_key_id(); + } + return super.getItemId(position); + } + }; adapter.setDisplayHeadersAtStartUp(true); adapter.setStickyHeaders(true); adapter.setMode(Mode.MULTI); @@ -271,6 +291,20 @@ public class KeyListFragment extends RecyclerFragment adapter) { + if (queuedHighlightMasterKeyId == null) { + return; + } + for (int position = 0; position < adapter.getItemCount(); position++) { + if (adapter.getItemId(position) == queuedHighlightMasterKeyId) { + adapter.smoothScrollToPosition(position); + } + } + + queuedHighlightMasterKeyId = null; } private String getBubbleText(int position) {