diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java index 5b8d14c4c..8e81eb383 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/linked/LinkedIdViewFragment.java @@ -14,6 +14,8 @@ import android.os.Bundle; import android.os.Message; import android.os.Messenger; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentManager.OnBackStackChangedListener; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; @@ -52,7 +54,7 @@ import org.sufficientlysecure.keychain.util.Log; public class LinkedIdViewFragment extends Fragment implements - LoaderManager.LoaderCallbacks { + LoaderManager.LoaderCallbacks, OnBackStackChangedListener { public static final int REQUEST_CODE_PASSPHRASE = 0x00008001; @@ -155,6 +157,12 @@ public class LinkedIdViewFragment extends Fragment implements } } + @Override + public void onBackStackChanged() { + mViewHolder.setShowVerifying(false); + getFragmentManager().removeOnBackStackChangedListener(LinkedIdViewFragment.this); + } + public interface OnIdentityLoadedListener { public void onIdentityLoaded(); } @@ -239,7 +247,7 @@ public class LinkedIdViewFragment extends Fragment implements private final ViewAnimator vVerifyingContainer; LinkedIdsAdapter.ViewHolder mLinkedIdHolder; - private ViewAnimator mButtonSwitcher; + private ViewAnimator vButtonSwitcher; private CertListWidget vLinkedCerts; private CertifyKeySpinner vKeySpinner; private final View vButtonVerify; @@ -254,7 +262,7 @@ public class LinkedIdViewFragment extends Fragment implements ViewHolder(View root) { vLinkedCerts = (CertListWidget) root.findViewById(R.id.linked_id_certs); vKeySpinner = (CertifyKeySpinner) root.findViewById(R.id.cert_key_spinner); - mButtonSwitcher = (ViewAnimator) root.findViewById(R.id.button_animator); + vButtonSwitcher = (ViewAnimator) root.findViewById(R.id.button_animator); mLinkedIdHolder = new LinkedIdsAdapter.ViewHolder(root); @@ -278,6 +286,7 @@ public class LinkedIdViewFragment extends Fragment implements } if (!show) { vKeySpinner.setVisibility(View.GONE); + showButton(0); } } @@ -285,6 +294,13 @@ public class LinkedIdViewFragment extends Fragment implements vProgress.setDisplayedChild(show ? 0 : 1); } + void showButton(int which) { + if (vButtonSwitcher.getDisplayedChild() == which) { + return; + } + vButtonSwitcher.setDisplayedChild(which); + } + } @Override @@ -324,13 +340,6 @@ public class LinkedIdViewFragment extends Fragment implements return root; } - void showButton(int which) { - if (mViewHolder.mButtonSwitcher.getDisplayedChild() == which) { - return; - } - mViewHolder.mButtonSwitcher.setDisplayedChild(which); - } - void verifyResource() { // only one at a time @@ -341,6 +350,11 @@ public class LinkedIdViewFragment extends Fragment implements mInProgress = true; } + FragmentManager manager = getFragmentManager(); + manager.beginTransaction().addToBackStack("verification").commit(); + manager.executePendingTransactions(); + manager.addOnBackStackChangedListener(this); + mViewHolder.setShowVerifying(true); mViewHolder.vKeySpinner.setVisibility(View.GONE); @@ -371,7 +385,7 @@ public class LinkedIdViewFragment extends Fragment implements mViewHolder.vText.setText("Ok"); setupForConfirmation(); } else { - showButton(1); + mViewHolder.showButton(1); mViewHolder.vText.setText("Error"); } mInProgress = false; @@ -383,7 +397,7 @@ public class LinkedIdViewFragment extends Fragment implements void setupForConfirmation() { // button is 'confirm' - showButton(2); + mViewHolder.showButton(2); mViewHolder.vKeySpinner.setVisibility(View.VISIBLE);