From 371353acbcac9110c74314a2a308696325d3e575 Mon Sep 17 00:00:00 2001 From: nitram Date: Wed, 28 Feb 2024 01:45:24 +0000 Subject: [PATCH 1/3] Added *.jks to gitignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bbfc618c..95e5256f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ secrets.tar.gz medic-official.keystore playstore-secret.json *.iml +*.jks From 6aece4c56bdc0d2ab5c833cbe992b1e782851530 Mon Sep 17 00:00:00 2001 From: nitram Date: Wed, 28 Feb 2024 01:52:34 +0000 Subject: [PATCH 2/3] Escape "%" characters in messages before formatting in GatewayLog.trace - Fixes a bug where "%" characters in messages caused formatting errors by interpreting them as format specifiers. - Implements escaping of "%" characters to "%%" before applying String.format, ensuring the raw message content is preserved without interfering with the formatting process. --- src/main/java/medic/gateway/alert/GatewayLog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/medic/gateway/alert/GatewayLog.java b/src/main/java/medic/gateway/alert/GatewayLog.java index b58919f9..d30f99e1 100644 --- a/src/main/java/medic/gateway/alert/GatewayLog.java +++ b/src/main/java/medic/gateway/alert/GatewayLog.java @@ -35,7 +35,7 @@ public static void warnEvent(Context ctx, String message, Object... extras) { public static void trace(Object caller, String message, Object... extras) { if(!DEBUG) return; - message = String.format(message, extras); + message = String.format(message.replace("%", "%%"), extras); Class callerClass = caller instanceof Class ? (Class) caller : caller.getClass(); d(LOG_TAG, String.format("%s :: %s", callerClass.getName(), message)); } From 71bf7d6be7327c09c6d4814edf62709a31b80263 Mon Sep 17 00:00:00 2001 From: nitram Date: Wed, 28 Feb 2024 01:56:13 +0000 Subject: [PATCH 3/3] Enhance app configuration with QR code scanning - Add ZXing library dependencies for QR code scanning support. - Integrate camera permission request to enable QR code scanning. - Implement QR code scanning functionality in SettingsDialogActivity. - Update UI to include a camera icon for triggering QR code scanning. - Add new strings for camera permission prompt and QR code scan action. This update simplifies the app configuration process by allowing users to scan QR codes to input URLs, improving usability and efficiency. --- build.gradle | 3 + src/generic/res/values/strings.xml | 10 +- src/main/AndroidManifest.xml | 3 + .../alert/PromptForPermissionsActivity.java | 20 ++- .../gateway/alert/SettingsDialogActivity.java | 29 ++++ .../res/layout/settings_dialog_generic.xml | 127 +++++++++++------- 6 files changed, 141 insertions(+), 51 deletions(-) diff --git a/build.gradle b/build.gradle index 3505526d..d83ed952 100644 --- a/build.gradle +++ b/build.gradle @@ -69,6 +69,9 @@ dependencies { exclude module: 'jcip-annotations' } + implementation 'com.journeyapps:zxing-android-embedded:3.6.0' // Check for the latest version that supports API 16 + implementation 'com.google.zxing:core:3.3.0' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5' } diff --git a/src/generic/res/values/strings.xml b/src/generic/res/values/strings.xml index 1f977df3..e64cb114 100644 --- a/src/generic/res/values/strings.xml +++ b/src/generic/res/values/strings.xml @@ -1,4 +1,12 @@ SMS Gateway - + Cancelled scan. + + Warning: %1$s does not currently have permissions to access the camera.
+
This permission is required so you can configure the CHT-Core URL with a QR code. + ]]> +
+ Scan Qr code + \ No newline at end of file diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 36f356a8..0d37828c 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -24,6 +24,9 @@ https://github.com/medic/cht-gateway/issues/103 --> + + + CUSTOM EVENT HANDLERS public void doSave(View view) { @@ -88,6 +107,16 @@ public void cancelSettingsEdit(View view) { backToMessageListsView(); } + public void openCamera(View view) { + IntentIntegrator integrator = new IntentIntegrator(this); + integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE); + integrator.setPrompt(getString(R.string.scanQrCode)); + integrator.setCameraId(0); + integrator.setBeepEnabled(true); + integrator.setBarcodeImageEnabled(true); + integrator.initiateScan(); + } + public void onBackPressed() { if(hasPreviousSettings) { backToMessageListsView(); diff --git a/src/main/res/layout/settings_dialog_generic.xml b/src/main/res/layout/settings_dialog_generic.xml index 39fd7fdd..914fbffe 100644 --- a/src/main/res/layout/settings_dialog_generic.xml +++ b/src/main/res/layout/settings_dialog_generic.xml @@ -1,57 +1,92 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:fillViewport="true" + android:scrollbars="vertical"> + + + - + + - + + + + + + + + + + +