From 84d2ff0264c3f0b9f484f900ce6f7cafc8abc3a9 Mon Sep 17 00:00:00 2001 From: dadaloop82 Date: Tue, 5 May 2026 06:09:48 +0000 Subject: [PATCH] kiosk: improve wizard UX + gateway configurability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Wizard step 4 (scale): skip question if scale already configured (KEY_HAS_SCALE=true), show gateway status directly - Add '⚙️ Apri Gateway per configurarlo' button in setup wizard after gateway is installed - Add same button in SettingsActivity SMART SCALE section (visible only when installed) - Fix btnRunWizard in SettingsActivity: immediately launches SetupActivity instead of just showing a toast - Bump version to 1.5.1 (versionCode 7) --- evershelf-kiosk/app/build.gradle.kts | 4 +- .../evershelf/kiosk/SettingsActivity.kt | 13 +++++- .../dadaloop/evershelf/kiosk/SetupActivity.kt | 46 ++++++++++++++----- .../src/main/res/layout/activity_settings.xml | 13 ++++++ .../src/main/res/layout/activity_setup.xml | 13 ++++++ 5 files changed, 74 insertions(+), 15 deletions(-) diff --git a/evershelf-kiosk/app/build.gradle.kts b/evershelf-kiosk/app/build.gradle.kts index ab36032..3321b1d 100644 --- a/evershelf-kiosk/app/build.gradle.kts +++ b/evershelf-kiosk/app/build.gradle.kts @@ -11,8 +11,8 @@ android { applicationId = "it.dadaloop.evershelf.kiosk" minSdk = 24 targetSdk = 34 - versionCode = 6 - versionName = "1.5.0" + versionCode = 7 + versionName = "1.5.1" } signingConfigs { diff --git a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt index 17ae93f..86c4452 100644 --- a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt +++ b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SettingsActivity.kt @@ -70,6 +70,17 @@ class SettingsActivity : AppCompatActivity() { deviceView.text = "Install the Scale Gateway app to use a Bluetooth scale" } + val btnConfigureGateway = findViewById(R.id.btnConfigureGateway) + if (gatewayInstalled) { + btnConfigureGateway.visibility = android.view.View.VISIBLE + btnConfigureGateway.setOnClickListener { + val intent = packageManager.getLaunchIntentForPackage(GATEWAY_PACKAGE) + if (intent != null) startActivity(intent) + } + } else { + btnConfigureGateway.visibility = android.view.View.GONE + } + // Back findViewById(R.id.btnBack).setOnClickListener { finish() } @@ -79,7 +90,7 @@ class SettingsActivity : AppCompatActivity() { // Run wizard again findViewById(R.id.btnRunWizard).setOnClickListener { prefs.edit().putBoolean(KEY_SETUP_COMPLETE, false).apply() - Toast.makeText(this, "Wizard will run on next launch", Toast.LENGTH_SHORT).show() + startActivity(Intent(this, SetupActivity::class.java)) finish() } diff --git a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SetupActivity.kt b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SetupActivity.kt index a4d8e4d..119bbca 100644 --- a/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SetupActivity.kt +++ b/evershelf-kiosk/app/src/main/kotlin/it/dadaloop/evershelf/kiosk/SetupActivity.kt @@ -89,7 +89,8 @@ class SetupActivity : AppCompatActivity() { private lateinit var gatewayStatusIcon: TextView private lateinit var gatewayStatusText: TextView private lateinit var gatewayStatusDetail: TextView - private lateinit var btnInstallGateway: MaterialButton + private lateinit var btnInstallGateway: MaterialButton + private lateinit var btnConfigureGateway: MaterialButton private lateinit var gatewayProgressBar: ProgressBar private lateinit var gatewayProgressText: TextView private lateinit var step3NextButtons: LinearLayout @@ -212,9 +213,10 @@ class SetupActivity : AppCompatActivity() { gatewayInstallCard = findViewById(R.id.gatewayInstallCard) gatewayStatusIcon = findViewById(R.id.gatewayStatusIcon) gatewayStatusText = findViewById(R.id.gatewayStatusText) - gatewayStatusDetail = findViewById(R.id.gatewayStatusDetail) - btnInstallGateway = findViewById(R.id.btnInstallGateway) - gatewayProgressBar = findViewById(R.id.gatewayProgressBar) + gatewayStatusDetail = findViewById(R.id.gatewayStatusDetail) + btnInstallGateway = findViewById(R.id.btnInstallGateway) + btnConfigureGateway = findViewById(R.id.btnConfigureGateway) + gatewayProgressBar = findViewById(R.id.gatewayProgressBar) gatewayProgressText = findViewById(R.id.gatewayProgressText) step3NextButtons = findViewById(R.id.step3NextButtons) @@ -281,6 +283,14 @@ class SetupActivity : AppCompatActivity() { pendingApkDownloadUrl = GATEWAY_DOWNLOAD_URL triggerApkDownload(GATEWAY_DOWNLOAD_URL) } + btnConfigureGateway.setOnClickListener { + val intent = packageManager.getLaunchIntentForPackage(GATEWAY_PACKAGE) + if (intent != null) { + startActivity(intent) + } else { + Toast.makeText(this, "Gateway non trovato", Toast.LENGTH_SHORT).show() + } + } findViewById(R.id.btnScaleBack).setOnClickListener { showStep(3) } findViewById(R.id.btnScaleNext).setOnClickListener { prefs.edit().putBoolean(KEY_HAS_SCALE, true).apply() @@ -336,10 +346,20 @@ class SetupActivity : AppCompatActivity() { // Reset scale step when entering it if (step == 4) { - scaleQuestionCard.visibility = View.VISIBLE - gatewayInfoCard.visibility = View.GONE - gatewayInstallCard.visibility = View.GONE - step3NextButtons.visibility = View.GONE + val scaleAlreadyConfiguredYes = prefs.contains(KEY_HAS_SCALE) && prefs.getBoolean(KEY_HAS_SCALE, false) + if (scaleAlreadyConfiguredYes) { + // User already confirmed they have a scale — skip the question + scaleQuestionCard.visibility = View.GONE + gatewayInfoCard.visibility = View.VISIBLE + gatewayInstallCard.visibility = View.VISIBLE + step3NextButtons.visibility = View.VISIBLE + checkGatewayStatus() + } else { + scaleQuestionCard.visibility = View.VISIBLE + gatewayInfoCard.visibility = View.GONE + gatewayInstallCard.visibility = View.GONE + step3NextButtons.visibility = View.GONE + } } // Build summary when entering done step @@ -682,15 +702,17 @@ class SetupActivity : AppCompatActivity() { gatewayStatusText.text = getString(R.string.wizard_gateway_installed) gatewayStatusDetail.text = getString(R.string.wizard_gateway_installed_detail) gatewayStatusDetail.setTextColor(0xFF34d399.toInt()) - btnInstallGateway.visibility = View.GONE - gatewayProgressBar.visibility = View.GONE - gatewayProgressText.visibility = View.GONE + btnInstallGateway.visibility = View.GONE + btnConfigureGateway.visibility = View.VISIBLE + gatewayProgressBar.visibility = View.GONE + gatewayProgressText.visibility = View.GONE } else { gatewayStatusIcon.text = "📲" gatewayStatusText.text = getString(R.string.wizard_gateway_not_installed) gatewayStatusDetail.text = getString(R.string.wizard_gateway_not_installed_detail) gatewayStatusDetail.setTextColor(0xFFfbbf24.toInt()) - btnInstallGateway.visibility = View.VISIBLE + btnInstallGateway.visibility = View.VISIBLE + btnConfigureGateway.visibility = View.GONE } } diff --git a/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml b/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml index 2b6022b..c5a3e3d 100644 --- a/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml +++ b/evershelf-kiosk/app/src/main/res/layout/activity_settings.xml @@ -141,6 +141,19 @@ android:text="No scale connected" android:textColor="#64748b" android:textSize="13sp" /> + + diff --git a/evershelf-kiosk/app/src/main/res/layout/activity_setup.xml b/evershelf-kiosk/app/src/main/res/layout/activity_setup.xml index 8283d98..2360e06 100644 --- a/evershelf-kiosk/app/src/main/res/layout/activity_setup.xml +++ b/evershelf-kiosk/app/src/main/res/layout/activity_setup.xml @@ -905,6 +905,19 @@ android:textSize="14sp" android:textAllCaps="false" android:backgroundTint="#7c3aed" /> + +