support backstack for verification

This commit is contained in:
Vincent Breitmoser 2015-03-09 23:58:05 +01:00
parent ebf3596341
commit 6df9387c2c

View File

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