tls-psk: switch layouts in animator by id

This commit is contained in:
Vincent Breitmoser
2017-06-28 23:36:51 +02:00
parent f76a0f47b5
commit 9a37fabb45
3 changed files with 30 additions and 14 deletions

View File

@@ -52,7 +52,6 @@ import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.ViewAnimator;
import com.google.zxing.client.android.Intents; import com.google.zxing.client.android.Intents;
import org.sufficientlysecure.keychain.R; 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;
import org.sufficientlysecure.keychain.ui.util.Notify.Style; import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.ui.widget.ConnectionStatusView; import org.sufficientlysecure.keychain.ui.widget.ConnectionStatusView;
import org.sufficientlysecure.keychain.ui.widget.ToolableViewAnimator;
@RequiresApi(api = VERSION_CODES.LOLLIPOP) @RequiresApi(api = VERSION_CODES.LOLLIPOP)
public class TransferFragment extends Fragment implements TransferMvpView { 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 REQUEST_CODE_SCAN = 1;
public static final int LOADER_ID = 1; public static final int LOADER_ID = 1;
@@ -85,7 +79,7 @@ public class TransferFragment extends Fragment implements TransferMvpView {
private ImageView vQrCodeImage; private ImageView vQrCodeImage;
private TransferPresenter presenter; private TransferPresenter presenter;
private ViewAnimator vTransferAnimator; private ToolableViewAnimator vTransferAnimator;
private TextView vConnectionStatusText1; private TextView vConnectionStatusText1;
private TextView vConnectionStatusText2; private TextView vConnectionStatusText2;
private ConnectionStatusView vConnectionStatusView1; 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) { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.transfer_fragment, container, false); 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); vConnectionStatusText1 = (TextView) view.findViewById(R.id.connection_status_1);
vConnectionStatusText2 = (TextView) view.findViewById(R.id.connection_status_2); vConnectionStatusText2 = (TextView) view.findViewById(R.id.connection_status_2);
@@ -203,17 +197,17 @@ public class TransferFragment extends Fragment implements TransferMvpView {
@Override @Override
public void showNotOnWifi() { public void showNotOnWifi() {
vTransferAnimator.setDisplayedChild(VIEW_NO_WIFI); vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_no_wifi);
} }
@Override @Override
public void showWaitingForConnection() { public void showWaitingForConnection() {
vTransferAnimator.setDisplayedChild(VIEW_WAITING); vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_waiting);
} }
@Override @Override
public void showEstablishingConnection() { public void showEstablishingConnection() {
vTransferAnimator.setDisplayedChild(VIEW_CONNECTING); vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_connecting);
} }
@Override @Override
@@ -226,12 +220,12 @@ public class TransferFragment extends Fragment implements TransferMvpView {
vConnectionStatusView1.setConnected(true); vConnectionStatusView1.setConnected(true);
vConnectionStatusView2.setConnected(true); vConnectionStatusView2.setConnected(true);
vTransferAnimator.setDisplayedChild(VIEW_CONNECTED); vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_connected);
} }
@Override @Override
public void showReceivingKeys() { public void showReceivingKeys() {
vTransferAnimator.setDisplayedChild(VIEW_RECEIVING); vTransferAnimator.setDisplayedChildId(R.id.transfer_layout_passive);
} }
@Override @Override

View File

@@ -99,4 +99,21 @@ public class ToolableViewAnimator extends ViewAnimator {
setOutAnimation(savedOutAnim); 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();
}
} }

View File

@@ -13,6 +13,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/transfer_layout_waiting"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
@@ -92,6 +93,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/transfer_layout_connecting"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">
@@ -116,6 +118,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/transfer_layout_connected"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout <RelativeLayout
@@ -205,6 +208,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/transfer_layout_passive"
android:orientation="vertical"> android:orientation="vertical">
<RelativeLayout <RelativeLayout
@@ -275,6 +279,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:id="@+id/transfer_layout_no_wifi"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="vertical" android:orientation="vertical"
android:padding="16dp"> android:padding="16dp">