From 4d97cad842c14f4e513321915b9d8e8124f2677d Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 20 Mar 2018 11:14:27 +0000 Subject: [PATCH 1/3] Add fullscreen button to QR code view. --- .../keyagreement/ShowQrCodeFragment.java | 22 ++++++ .../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, 122 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 9608385aa..25e01ac95 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 @@ -15,6 +15,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; @@ -50,6 +51,7 @@ import javax.inject.Inject; 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; @@ -81,6 +83,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; @@ -125,6 +128,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 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 27c158e47..410e39c35 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -408,5 +408,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 From 9b253fc96598f5928aee560cbb10b0cb10ed316e Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 20 Mar 2018 15:22:58 +0000 Subject: [PATCH 2/3] Adjust layout weights when resizing QR code view. --- .../keyagreement/ShowQrCodeFragment.java | 25 +++++++++++++------ .../layout-land/fragment_keyagreement_qr.xml | 1 - .../res/layout/fragment_keyagreement_qr.xml | 1 - 3 files changed, 18 insertions(+), 9 deletions(-) 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 25e01ac95..795661dd8 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 @@ -15,6 +15,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import android.widget.Toast; @@ -52,6 +53,7 @@ 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.LinearLayout.HORIZONTAL; import static android.widget.Toast.LENGTH_LONG; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; @@ -131,20 +133,29 @@ public class ShowQrCodeFragment extends BaseEventFragment ImageView fullscreenButton = view.findViewById(R.id.fullscreen_button); fullscreenButton.setOnClickListener(v -> { View qrCodeContainer = view.findViewById(R.id.qr_code_container); + LinearLayout cameraOverlay = view.findViewById(R.id.camera_overlay); + LayoutParams statusParams, qrCodeParams; if (fullscreen) { - // Shrink the QR code container - qrCodeContainer.setLayoutParams( - new LayoutParams(MATCH_PARENT, 0, 1f)); + // Shrink the QR code container to fill half its parent + if (cameraOverlay.getOrientation() == HORIZONTAL) { + statusParams = new LayoutParams(0, MATCH_PARENT, 1f); + qrCodeParams = new LayoutParams(0, MATCH_PARENT, 1f); + } else { + statusParams = new LayoutParams(MATCH_PARENT, 0, 1f); + qrCodeParams = 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)); + // Grow the QR code container to fill its parent + statusParams = new LayoutParams(0, 0, 0f); + qrCodeParams = new LayoutParams(MATCH_PARENT, MATCH_PARENT, 1f); fullscreenButton.setBackgroundResource( R.drawable.ic_fullscreen_exit_black_48dp); } - view.findViewById(R.id.camera_overlay).invalidate(); + statusView.setLayoutParams(statusParams); + qrCodeContainer.setLayoutParams(qrCodeParams); + cameraOverlay.invalidate(); fullscreen = !fullscreen; }); } 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 c811b58c8..ba6b4421e 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,7 +15,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" - android:weightSum="2" android:baselineAligned="false"> Date: Tue, 20 Mar 2018 15:30:46 +0000 Subject: [PATCH 3/3] Use selectable item background to get touch effect. --- .../briar/android/keyagreement/ShowQrCodeFragment.java | 4 ++-- .../src/main/res/layout-land/fragment_keyagreement_qr.xml | 3 ++- .../src/main/res/layout/fragment_keyagreement_qr.xml | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) 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 795661dd8..8f6339cf0 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 @@ -144,13 +144,13 @@ public class ShowQrCodeFragment extends BaseEventFragment statusParams = new LayoutParams(MATCH_PARENT, 0, 1f); qrCodeParams = new LayoutParams(MATCH_PARENT, 0, 1f); } - fullscreenButton.setBackgroundResource( + fullscreenButton.setImageResource( R.drawable.ic_fullscreen_black_48dp); } else { // Grow the QR code container to fill its parent statusParams = new LayoutParams(0, 0, 0f); qrCodeParams = new LayoutParams(MATCH_PARENT, MATCH_PARENT, 1f); - fullscreenButton.setBackgroundResource( + fullscreenButton.setImageResource( R.drawable.ic_fullscreen_exit_black_48dp); } statusView.setLayoutParams(statusParams); 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 ba6b4421e..9d378e5ba 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 @@ -69,7 +69,8 @@