From 2c4d5680a63da407dbd73a4ecb29fcf8466e6fba Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 20 Mar 2018 11:14:27 +0000 Subject: [PATCH] Add fullscreen button to QR code view. --- .../keyagreement/ShowQrCodeFragment.java | 23 ++++++ .../res/drawable/ic_fullscreen_black_48dp.xml | 4 + .../ic_fullscreen_exit_black_48dp.xml | 4 + .../layout-land/fragment_keyagreement_qr.xml | 76 +++++++++++-------- .../res/layout/fragment_keyagreement_qr.xml | 76 +++++++++++-------- briar-android/src/main/res/values/strings.xml | 2 + 6 files changed, 123 insertions(+), 62 deletions(-) create mode 100644 briar-android/src/main/res/drawable/ic_fullscreen_black_48dp.xml create mode 100644 briar-android/src/main/res/drawable/ic_fullscreen_exit_black_48dp.xml diff --git a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java index b89f630d1..c648a0b73 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/keyagreement/ShowQrCodeFragment.java @@ -14,6 +14,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.widget.ImageView; +import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import android.widget.Toast; @@ -52,6 +53,7 @@ import javax.inject.Provider; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_NOSENSOR; import static android.view.View.INVISIBLE; import static android.view.View.VISIBLE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.Toast.LENGTH_LONG; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; @@ -83,6 +85,7 @@ public class ShowQrCodeFragment extends BaseEventFragment private ImageView qrCode; private TextView mainProgressTitle; private ViewGroup mainProgressContainer; + private boolean fullscreen = false; private boolean gotRemotePayload; private volatile boolean gotLocalPayload; @@ -127,6 +130,25 @@ public class ShowQrCodeFragment extends BaseEventFragment qrCode = view.findViewById(R.id.qr_code); mainProgressTitle = view.findViewById(R.id.title_progress_bar); mainProgressContainer = view.findViewById(R.id.container_progress); + ImageView fullscreenButton = view.findViewById(R.id.fullscreen_button); + fullscreenButton.setOnClickListener(v -> { + View qrCodeContainer = view.findViewById(R.id.qr_code_container); + if (fullscreen) { + // Shrink the QR code container + qrCodeContainer.setLayoutParams( + new LayoutParams(MATCH_PARENT, 0, 1f)); + fullscreenButton.setBackgroundResource( + R.drawable.ic_fullscreen_black_48dp); + } else { + // Grow the QR code container + qrCodeContainer.setLayoutParams( + new LayoutParams(MATCH_PARENT, MATCH_PARENT, 1f)); + fullscreenButton.setBackgroundResource( + R.drawable.ic_fullscreen_exit_black_48dp); + } + view.findViewById(R.id.camera_overlay).invalidate(); + fullscreen = !fullscreen; + }); } @Override @@ -274,6 +296,7 @@ public class ShowQrCodeFragment extends BaseEventFragment new AsyncTask() { @Override + @Nullable protected Bitmap doInBackground(Void... params) { byte[] payloadBytes = payloadEncoder.encode(payload); if (LOG.isLoggable(INFO)) { diff --git a/briar-android/src/main/res/drawable/ic_fullscreen_black_48dp.xml b/briar-android/src/main/res/drawable/ic_fullscreen_black_48dp.xml new file mode 100644 index 000000000..affab0d46 --- /dev/null +++ b/briar-android/src/main/res/drawable/ic_fullscreen_black_48dp.xml @@ -0,0 +1,4 @@ + + + diff --git a/briar-android/src/main/res/drawable/ic_fullscreen_exit_black_48dp.xml b/briar-android/src/main/res/drawable/ic_fullscreen_exit_black_48dp.xml new file mode 100644 index 000000000..5b62d104c --- /dev/null +++ b/briar-android/src/main/res/drawable/ic_fullscreen_exit_black_48dp.xml @@ -0,0 +1,4 @@ + + + diff --git a/briar-android/src/main/res/layout-land/fragment_keyagreement_qr.xml b/briar-android/src/main/res/layout-land/fragment_keyagreement_qr.xml index e9a174c77..c811b58c8 100644 --- a/briar-android/src/main/res/layout-land/fragment_keyagreement_qr.xml +++ b/briar-android/src/main/res/layout-land/fragment_keyagreement_qr.xml @@ -15,39 +15,36 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" - android:weightSum="2"> + android:weightSum="2" + android:baselineAligned="false"> - + android:layout_weight="1" + android:background="@android:color/background_light" + android:gravity="center" + android:orientation="vertical" + android:padding="@dimen/margin_medium" + android:visibility="invisible"> - + + - - - - - - + android:paddingTop="@dimen/margin_large" + tools:text="Connection failed"/> + - + android:layout_height="match_parent"> + + + + + @@ -92,5 +107,4 @@ android:paddingTop="@dimen/margin_large" tools:text="@string/waiting_for_contact_to_scan"/> - diff --git a/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml b/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml index 1aaf28183..456ffbca1 100644 --- a/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml +++ b/briar-android/src/main/res/layout/fragment_keyagreement_qr.xml @@ -15,39 +15,36 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:weightSum="2"> + android:weightSum="2" + android:baselineAligned="false"> - + android:layout_weight="1" + android:background="@android:color/background_light" + android:gravity="center" + android:orientation="vertical" + android:padding="@dimen/margin_medium" + android:visibility="invisible"> - + + - - - - - - + android:paddingTop="@dimen/margin_large" + tools:text="Connection failed"/> + - + android:layout_height="match_parent"> + + + + + @@ -92,5 +107,4 @@ android:paddingTop="@dimen/margin_large" tools:text="@string/waiting_for_contact_to_scan"/> - diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 14de9071b..4df1ed198 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -410,5 +410,7 @@ To scan the QR code, Briar needs access to the camera. You have denied access to the camera, but adding contacts requires using the camera.\n\nPlease consider granting access. Camera permission was not granted + QR code + Show QR code fullscreen