diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java index c4c822229..0f4f53f98 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java @@ -52,7 +52,6 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.ImageView; import android.widget.TextView; -import android.widget.ViewAnimator; import com.google.zxing.client.android.Intents; import org.sufficientlysecure.keychain.R; @@ -67,16 +66,11 @@ import org.sufficientlysecure.keychain.ui.transfer.presenter.TransferPresenter.T import org.sufficientlysecure.keychain.ui.util.Notify; import org.sufficientlysecure.keychain.ui.util.Notify.Style; import org.sufficientlysecure.keychain.ui.widget.ConnectionStatusView; +import org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator; @RequiresApi(api = VERSION_CODES.LOLLIPOP) public class TransferFragment extends Fragment implements TransferMvpView { - public static final int VIEW_WAITING = 0; - public static final int VIEW_CONNECTING = 1; - public static final int VIEW_CONNECTED = 2; - public static final int VIEW_RECEIVING = 3; - public static final int VIEW_NO_WIFI = 4; - public static final int REQUEST_CODE_SCAN = 1; public static final int LOADER_ID = 1; @@ -85,7 +79,7 @@ public class TransferFragment extends Fragment implements TransferMvpView { private ImageView vQrCodeImage; private TransferPresenter presenter; - private ViewAnimator vTransferAnimator; + private ToolableViewAnimator vTransferAnimator; private TextView vConnectionStatusText1; private TextView vConnectionStatusText2; private ConnectionStatusView vConnectionStatusView1; @@ -113,7 +107,7 @@ public class TransferFragment extends Fragment implements TransferMvpView { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.transfer_fragment, container, false); - vTransferAnimator = (ViewAnimator) view.findViewById(R.id.transfer_animator); + vTransferAnimator = (ToolableViewAnimator) view.findViewById(R.id.transfer_animator); vConnectionStatusText1 = (TextView) view.findViewById(R.id.connection_status_1); vConnectionStatusText2 = (TextView) view.findViewById(R.id.connection_status_2); @@ -203,17 +197,17 @@ public class TransferFragment extends Fragment implements TransferMvpView { @Override public void showNotOnWifi() { - vTransferAnimator.setDisplayedChild(VIEW_NO_WIFI); + vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_no_wifi); } @Override public void showWaitingForConnection() { - vTransferAnimator.setDisplayedChild(VIEW_WAITING); + vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_waiting); } @Override public void showEstablishingConnection() { - vTransferAnimator.setDisplayedChild(VIEW_CONNECTING); + vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_connecting); } @Override @@ -226,12 +220,12 @@ public class TransferFragment extends Fragment implements TransferMvpView { vConnectionStatusView1.setConnected(true); vConnectionStatusView2.setConnected(true); - vTransferAnimator.setDisplayedChild(VIEW_CONNECTED); + vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_connected); } @Override public void showReceivingKeys() { - vTransferAnimator.setDisplayedChild(VIEW_RECEIVING); + vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_passive); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ToolableViewAnimator.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ToolableViewAnimator.java index a8274e45a..172009d24 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ToolableViewAnimator.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/widget/ToolableViewAnimator.java @@ -99,4 +99,21 @@ public class ToolableViewAnimator extends ViewAnimator { setOutAnimation(savedOutAnim); } + public void setDisplayedChildId(int id) { + if (getDisplayedChildId() == id) { + return; + } + for (int i = 0, count = getChildCount(); i < count; i++) { + if (getChildAt(i).getId() == id) { + setDisplayedChild(i); + return; + } + } + String name = getResources().getResourceEntryName(id); + throw new IllegalArgumentException("No view with ID " + name); + } + + public int getDisplayedChildId() { + return getChildAt(getDisplayedChild()).getId(); + } } diff --git a/OpenKeychain/src/main/res/layout/transfer_fragment.xml b/OpenKeychain/src/main/res/layout/transfer_fragment.xml index ccf8956e3..e50a62ddb 100644 --- a/OpenKeychain/src/main/res/layout/transfer_fragment.xml +++ b/OpenKeychain/src/main/res/layout/transfer_fragment.xml @@ -13,6 +13,7 @@ @@ -92,6 +93,7 @@ @@ -116,6 +118,7 @@