From 7adf3cd0f5004a35b90e2edd894d8790eed62cdc Mon Sep 17 00:00:00 2001 From: Douile <25043847+Douile@users.noreply.github.com> Date: Tue, 23 Aug 2022 11:13:47 +0100 Subject: [PATCH 1/2] Add factory reset button --- .../main/java/com/geeksville/mesh/model/UIState.kt | 11 +++++++++++ .../geeksville/mesh/ui/AdvancedSettingsFragment.kt | 13 +++++++++++++ app/src/main/res/layout/advanced_settings.xml | 12 ++++++++++++ app/src/main/res/values/strings.xml | 3 +++ 4 files changed, 39 insertions(+) diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index daf27fa2d..b183feaef 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -349,6 +349,17 @@ class UIViewModel @Inject constructor( meshService?.requestReboot(DataPacket.ID_LOCAL) } + fun requestFactoryReset() { + val config = _localConfig.value + if (config != null) { + val builder = config.device.toBuilder() + builder.factoryReset = true + val newConfig = ConfigProtos.Config.newBuilder() + newConfig.device = builder.build() + setDeviceConfig(newConfig.build()) + } + } + /** * Write the persisted packet data out to a CSV file in the specified location. */ diff --git a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt index 6d6bff5de..aaa9397ec 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/AdvancedSettingsFragment.kt @@ -55,6 +55,7 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging { binding.lsSleepSwitch.isEnabled = connected && model.isESP32() binding.shutdownButton.isEnabled = connected && model.hasAXP() binding.rebootButton.isEnabled = connected + binding.factoryResetButton.isEnabled = connected } binding.positionBroadcastPeriodEditText.on(EditorInfo.IME_ACTION_DONE) { @@ -130,5 +131,17 @@ class AdvancedSettingsFragment : ScreenFragment("Advanced Settings"), Logging { } .show() } + + binding.factoryResetButton.setOnClickListener { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.are_you_sure_factory_reset) + .setMessage(R.string.factory_reset_description) + .setNeutralButton(R.string.cancel) { _, _ -> + } + .setPositiveButton(R.string.okay) { _, _ -> + model.requestFactoryReset() + } + .show() + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/advanced_settings.xml b/app/src/main/res/layout/advanced_settings.xml index e19cedb84..4d2ce438b 100644 --- a/app/src/main/res/layout/advanced_settings.xml +++ b/app/src/main/res/layout/advanced_settings.xml @@ -88,4 +88,16 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/shutdownButton" app:layout_constraintTop_toTopOf="@id/shutdownButton" /> + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ede3709cf..62de45bd5 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -155,4 +155,7 @@ Message Append to message Instantly send + Factory reset + Are you sure you want to factory reset? + This will clear all device configuration you have done. From 27ee6a847ad5e861b6940d3f90c78ac9e5e6e9a8 Mon Sep 17 00:00:00 2001 From: andrekir Date: Thu, 25 Aug 2022 20:50:55 -0300 Subject: [PATCH 2/2] remove play services code scanner --- app/build.gradle | 2 -- app/src/main/AndroidManifest.xml | 3 -- .../mesh/android/ContextServices.kt | 10 ------ .../com/geeksville/mesh/ui/ChannelFragment.kt | 31 ++----------------- 4 files changed, 2 insertions(+), 44 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index eac5e97d0..4ba547d08 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -173,8 +173,6 @@ dependencies { implementation 'com.google.android.gms:play-services-location:19.0.1' // For Google Sign-In (owner name accesss) implementation 'com.google.android.gms:play-services-auth:20.2.0' - // ML Kit barcode scanning - implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-beta2' // Add the Firebase SDK for Crashlytics. implementation 'com.google.firebase:firebase-crashlytics:18.2.6' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 67799bf9e..535d6953d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -97,9 +97,6 @@ - = Build.VERSION_CODES.R) - packageManager.getInstallSourceInfo(packageName).installingPackageName - else - packageManager.getInstallerPackageName(packageName) -} - /** * return a list of the permissions we don't have */ diff --git a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt index bd4fe6a35..8a16011ff 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/ChannelFragment.kt @@ -25,7 +25,6 @@ import com.geeksville.mesh.ConfigProtos import com.geeksville.mesh.R import com.geeksville.mesh.android.getCameraPermissions import com.geeksville.mesh.android.hasCameraPermission -import com.geeksville.mesh.android.installSource import com.geeksville.mesh.databinding.ChannelFragmentBinding import com.geeksville.mesh.model.Channel import com.geeksville.mesh.model.ChannelOption @@ -33,9 +32,6 @@ import com.geeksville.mesh.model.ChannelSet import com.geeksville.mesh.model.UIViewModel import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar -import com.google.mlkit.vision.barcode.common.Barcode -import com.google.mlkit.vision.codescanner.GmsBarcodeScannerOptions -import com.google.mlkit.vision.codescanner.GmsBarcodeScanning import com.google.protobuf.ByteString import com.journeyapps.barcodescanner.ScanContract import com.journeyapps.barcodescanner.ScanOptions @@ -238,24 +234,6 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { .show() } - fun mlkitScan() { - debug("Starting ML Kit code scanner") - val options = GmsBarcodeScannerOptions.Builder() - .setBarcodeFormats(Barcode.FORMAT_QR_CODE) - .build() - val scanner = GmsBarcodeScanning.getClient(requireContext(), options) - scanner.startScan() - .addOnSuccessListener { barcode -> - if (barcode.rawValue != null) - model.setRequestChannelUrl(Uri.parse(barcode.rawValue)) - } - .addOnFailureListener { ex -> - errormsg("code scanner failed: ${ex.message}") - if (requireContext().hasCameraPermission()) zxingScan() - else requestPermissionAndScan() - } - } - binding.channelNameEdit.on(EditorInfo.IME_ACTION_DONE) { requireActivity().hideKeyboard() } @@ -279,13 +257,8 @@ class ChannelFragment : ScreenFragment("Channel"), Logging { } binding.scanButton.setOnClickListener { - // only use ML Kit for play store installs - if (requireContext().installSource() == "com.android.vending") { - mlkitScan() - } else { - if (requireContext().hasCameraPermission()) zxingScan() - else requestPermissionAndScan() - } + if (requireContext().hasCameraPermission()) zxingScan() + else requestPermissionAndScan() } // Note: Do not use setOnCheckedChanged here because we don't want to be called when we programmatically disable editing