feat: screensaver configurable timeout + fix gitignore (exclude kiosk build artifacts)

This commit is contained in:
dadaloop82
2026-05-06 15:00:04 +00:00
parent 725e2ee5ee
commit ffb0341eb6
653 changed files with 38 additions and 74383 deletions
+11
View File
@@ -33,3 +33,14 @@ Thumbs.db
# Raw screenshots (working folder, not for distribution) # Raw screenshots (working folder, not for distribution)
/screenshots/ /screenshots/
# Android kiosk build artifacts (generated by Gradle — not source)
evershelf-kiosk/.gradle/
evershelf-kiosk/app/build/
evershelf-kiosk/build/
evershelf-scale-gateway/app/build/
evershelf-scale-gateway/build/
evershelf-kiosk/local.properties
data/error_reports.log
data/latest_release_cache.json
data/food_facts_cache.json
+3 -1
View File
@@ -2078,6 +2078,7 @@ function getServerSettings(): void {
'scale_gateway_url' => env('SCALE_GATEWAY_URL', ''), 'scale_gateway_url' => env('SCALE_GATEWAY_URL', ''),
'meal_plan_enabled' => env('MEAL_PLAN_ENABLED', 'false') === 'true', 'meal_plan_enabled' => env('MEAL_PLAN_ENABLED', 'false') === 'true',
'screensaver_enabled' => env('SCREENSAVER_ENABLED', 'false') === 'true', 'screensaver_enabled' => env('SCREENSAVER_ENABLED', 'false') === 'true',
'screensaver_timeout' => (int)env('SCREENSAVER_TIMEOUT', '5'),
]); ]);
} }
@@ -2127,7 +2128,8 @@ function saveSettings(): void {
]; ];
// Integer keys // Integer keys
$intMap = [ $intMap = [
'default_persons' => 'DEFAULT_PERSONS', 'default_persons' => 'DEFAULT_PERSONS',
'screensaver_timeout' => 'SCREENSAVER_TIMEOUT',
]; ];
foreach ($keyMap as $inKey => $envKey) { foreach ($keyMap as $inKey => $envKey) {
Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

+11 -3
View File
@@ -1878,7 +1878,7 @@ async function syncSettingsFromDB() {
'camera_facing','scale_enabled','scale_gateway_url', 'camera_facing','scale_enabled','scale_gateway_url',
'meal_plan_enabled','tts_enabled','tts_url','tts_token', 'meal_plan_enabled','tts_enabled','tts_url','tts_token',
'tts_method','tts_auth_type','tts_content_type','tts_payload_key', 'tts_method','tts_auth_type','tts_content_type','tts_payload_key',
'screensaver_enabled']; 'screensaver_enabled','screensaver_timeout'];
for (const key of serverKeys) { for (const key of serverKeys) {
if (serverSettings[key] !== undefined && serverSettings[key] !== null && serverSettings[key] !== '') { if (serverSettings[key] !== undefined && serverSettings[key] !== null && serverSettings[key] !== '') {
s[key] = serverSettings[key]; s[key] = serverSettings[key];
@@ -1910,6 +1910,8 @@ async function loadSettingsUI() {
document.getElementById('setting-pref-zerowaste').checked = !!s.pref_zerowaste; document.getElementById('setting-pref-zerowaste').checked = !!s.pref_zerowaste;
const ssEl = document.getElementById('setting-screensaver-enabled'); const ssEl = document.getElementById('setting-screensaver-enabled');
if (ssEl) ssEl.checked = s.screensaver_enabled === true; if (ssEl) ssEl.checked = s.screensaver_enabled === true;
const ssTimeout = document.getElementById('setting-screensaver-timeout');
if (ssTimeout) ssTimeout.value = String(s.screensaver_timeout || 5);
document.getElementById('setting-dietary').value = s.dietary || ''; document.getElementById('setting-dietary').value = s.dietary || '';
// Camera // Camera
const cameraSelect = document.getElementById('setting-camera-facing'); const cameraSelect = document.getElementById('setting-camera-facing');
@@ -2312,6 +2314,8 @@ async function saveSettings() {
// Screensaver // Screensaver
const ssEl = document.getElementById('setting-screensaver-enabled'); const ssEl = document.getElementById('setting-screensaver-enabled');
if (ssEl) s.screensaver_enabled = ssEl.checked; if (ssEl) s.screensaver_enabled = ssEl.checked;
const ssTimeoutEl = document.getElementById('setting-screensaver-timeout');
if (ssTimeoutEl) s.screensaver_timeout = parseInt(ssTimeoutEl.value, 10) || 5;
// Meal plan enabled toggle // Meal plan enabled toggle
const mpEnabledEl = document.getElementById('setting-meal-plan-enabled'); const mpEnabledEl = document.getElementById('setting-meal-plan-enabled');
if (mpEnabledEl) s.meal_plan_enabled = mpEnabledEl.checked; if (mpEnabledEl) s.meal_plan_enabled = mpEnabledEl.checked;
@@ -11710,12 +11714,16 @@ let _screensaverClockInterval = null;
let _screensaverFactInterval = null; let _screensaverFactInterval = null;
let _screensaverData = null; // cached data for fact generation let _screensaverData = null; // cached data for fact generation
const SCREENSAVER_FACT_DURATION = 5 * 60 * 1000; // 5 minutes per fact const SCREENSAVER_FACT_DURATION = 5 * 60 * 1000; // 5 minutes per fact
const INACTIVITY_TIMEOUT = 5 * 60 * 1000; // 5 minutes
function _screensaverTimeoutMs() {
const mins = parseInt(getSettings().screensaver_timeout || 5, 10);
return (isNaN(mins) || mins < 1 ? 5 : mins) * 60 * 1000;
}
function resetInactivityTimer() { function resetInactivityTimer() {
if (_screensaverActive) return; // don't reset while screensaver is showing if (_screensaverActive) return; // don't reset while screensaver is showing
clearTimeout(_inactivityTimer); clearTimeout(_inactivityTimer);
_inactivityTimer = setTimeout(activateScreensaver, INACTIVITY_TIMEOUT); _inactivityTimer = setTimeout(activateScreensaver, _screensaverTimeoutMs());
} }
function activateScreensaver() { function activateScreensaver() {
Binary file not shown.
@@ -1,2 +0,0 @@
#Mon Apr 20 17:42:13 UTC 2026
gradle.version=8.4
Binary file not shown.
@@ -1,297 +0,0 @@
// Generated by view binder compiler. Do not edit!
package it.dadaloop.evershelf.kiosk.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import com.google.android.material.button.MaterialButton;
import it.dadaloop.evershelf.kiosk.R;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
public final class ActivityKioskBinding implements ViewBinding {
@NonNull
private final FrameLayout rootView;
@NonNull
public final MaterialButton btnFinish;
@NonNull
public final MaterialButton btnGetStarted;
@NonNull
public final ImageButton btnSettings;
@NonNull
public final MaterialButton btnSkipScale;
@NonNull
public final MaterialButton btnStep2Back;
@NonNull
public final MaterialButton btnStep2Next;
@NonNull
public final MaterialButton btnStep3Back;
@NonNull
public final MaterialButton btnTestUrl;
@NonNull
public final LinearLayout scaleStatusCard;
@NonNull
public final TextView scaleStatusDetail;
@NonNull
public final TextView scaleStatusIcon;
@NonNull
public final TextView scaleStatusText;
@NonNull
public final LinearLayout splashContainer;
@NonNull
public final LinearLayout step1;
@NonNull
public final LinearLayout step2;
@NonNull
public final LinearLayout step3;
@NonNull
public final LinearLayout stepIndicator;
@NonNull
public final TextView urlStatus;
@NonNull
public final WebView webView;
@NonNull
public final ScrollView wizardContainer;
@NonNull
public final TextView wizardTitle;
@NonNull
public final EditText wizardUrl;
private ActivityKioskBinding(@NonNull FrameLayout rootView, @NonNull MaterialButton btnFinish,
@NonNull MaterialButton btnGetStarted, @NonNull ImageButton btnSettings,
@NonNull MaterialButton btnSkipScale, @NonNull MaterialButton btnStep2Back,
@NonNull MaterialButton btnStep2Next, @NonNull MaterialButton btnStep3Back,
@NonNull MaterialButton btnTestUrl, @NonNull LinearLayout scaleStatusCard,
@NonNull TextView scaleStatusDetail, @NonNull TextView scaleStatusIcon,
@NonNull TextView scaleStatusText, @NonNull LinearLayout splashContainer,
@NonNull LinearLayout step1, @NonNull LinearLayout step2, @NonNull LinearLayout step3,
@NonNull LinearLayout stepIndicator, @NonNull TextView urlStatus, @NonNull WebView webView,
@NonNull ScrollView wizardContainer, @NonNull TextView wizardTitle,
@NonNull EditText wizardUrl) {
this.rootView = rootView;
this.btnFinish = btnFinish;
this.btnGetStarted = btnGetStarted;
this.btnSettings = btnSettings;
this.btnSkipScale = btnSkipScale;
this.btnStep2Back = btnStep2Back;
this.btnStep2Next = btnStep2Next;
this.btnStep3Back = btnStep3Back;
this.btnTestUrl = btnTestUrl;
this.scaleStatusCard = scaleStatusCard;
this.scaleStatusDetail = scaleStatusDetail;
this.scaleStatusIcon = scaleStatusIcon;
this.scaleStatusText = scaleStatusText;
this.splashContainer = splashContainer;
this.step1 = step1;
this.step2 = step2;
this.step3 = step3;
this.stepIndicator = stepIndicator;
this.urlStatus = urlStatus;
this.webView = webView;
this.wizardContainer = wizardContainer;
this.wizardTitle = wizardTitle;
this.wizardUrl = wizardUrl;
}
@Override
@NonNull
public FrameLayout getRoot() {
return rootView;
}
@NonNull
public static ActivityKioskBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static ActivityKioskBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.activity_kiosk, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static ActivityKioskBinding bind(@NonNull View rootView) {
// The body of this method is generated in a way you would not otherwise write.
// This is done to optimize the compiled bytecode for size and performance.
int id;
missingId: {
id = R.id.btnFinish;
MaterialButton btnFinish = ViewBindings.findChildViewById(rootView, id);
if (btnFinish == null) {
break missingId;
}
id = R.id.btnGetStarted;
MaterialButton btnGetStarted = ViewBindings.findChildViewById(rootView, id);
if (btnGetStarted == null) {
break missingId;
}
id = R.id.btnSettings;
ImageButton btnSettings = ViewBindings.findChildViewById(rootView, id);
if (btnSettings == null) {
break missingId;
}
id = R.id.btnSkipScale;
MaterialButton btnSkipScale = ViewBindings.findChildViewById(rootView, id);
if (btnSkipScale == null) {
break missingId;
}
id = R.id.btnStep2Back;
MaterialButton btnStep2Back = ViewBindings.findChildViewById(rootView, id);
if (btnStep2Back == null) {
break missingId;
}
id = R.id.btnStep2Next;
MaterialButton btnStep2Next = ViewBindings.findChildViewById(rootView, id);
if (btnStep2Next == null) {
break missingId;
}
id = R.id.btnStep3Back;
MaterialButton btnStep3Back = ViewBindings.findChildViewById(rootView, id);
if (btnStep3Back == null) {
break missingId;
}
id = R.id.btnTestUrl;
MaterialButton btnTestUrl = ViewBindings.findChildViewById(rootView, id);
if (btnTestUrl == null) {
break missingId;
}
id = R.id.scaleStatusCard;
LinearLayout scaleStatusCard = ViewBindings.findChildViewById(rootView, id);
if (scaleStatusCard == null) {
break missingId;
}
id = R.id.scaleStatusDetail;
TextView scaleStatusDetail = ViewBindings.findChildViewById(rootView, id);
if (scaleStatusDetail == null) {
break missingId;
}
id = R.id.scaleStatusIcon;
TextView scaleStatusIcon = ViewBindings.findChildViewById(rootView, id);
if (scaleStatusIcon == null) {
break missingId;
}
id = R.id.scaleStatusText;
TextView scaleStatusText = ViewBindings.findChildViewById(rootView, id);
if (scaleStatusText == null) {
break missingId;
}
id = R.id.splashContainer;
LinearLayout splashContainer = ViewBindings.findChildViewById(rootView, id);
if (splashContainer == null) {
break missingId;
}
id = R.id.step1;
LinearLayout step1 = ViewBindings.findChildViewById(rootView, id);
if (step1 == null) {
break missingId;
}
id = R.id.step2;
LinearLayout step2 = ViewBindings.findChildViewById(rootView, id);
if (step2 == null) {
break missingId;
}
id = R.id.step3;
LinearLayout step3 = ViewBindings.findChildViewById(rootView, id);
if (step3 == null) {
break missingId;
}
id = R.id.stepIndicator;
LinearLayout stepIndicator = ViewBindings.findChildViewById(rootView, id);
if (stepIndicator == null) {
break missingId;
}
id = R.id.urlStatus;
TextView urlStatus = ViewBindings.findChildViewById(rootView, id);
if (urlStatus == null) {
break missingId;
}
id = R.id.webView;
WebView webView = ViewBindings.findChildViewById(rootView, id);
if (webView == null) {
break missingId;
}
id = R.id.wizardContainer;
ScrollView wizardContainer = ViewBindings.findChildViewById(rootView, id);
if (wizardContainer == null) {
break missingId;
}
id = R.id.wizardTitle;
TextView wizardTitle = ViewBindings.findChildViewById(rootView, id);
if (wizardTitle == null) {
break missingId;
}
id = R.id.wizardUrl;
EditText wizardUrl = ViewBindings.findChildViewById(rootView, id);
if (wizardUrl == null) {
break missingId;
}
return new ActivityKioskBinding((FrameLayout) rootView, btnFinish, btnGetStarted, btnSettings,
btnSkipScale, btnStep2Back, btnStep2Next, btnStep3Back, btnTestUrl, scaleStatusCard,
scaleStatusDetail, scaleStatusIcon, scaleStatusText, splashContainer, step1, step2, step3,
stepIndicator, urlStatus, webView, wizardContainer, wizardTitle, wizardUrl);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,135 +0,0 @@
// Generated by view binder compiler. Do not edit!
package it.dadaloop.evershelf.kiosk.databinding;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewbinding.ViewBinding;
import androidx.viewbinding.ViewBindings;
import com.google.android.material.button.MaterialButton;
import it.dadaloop.evershelf.kiosk.R;
import java.lang.NullPointerException;
import java.lang.Override;
import java.lang.String;
public final class ActivitySettingsBinding implements ViewBinding {
@NonNull
private final ScrollView rootView;
@NonNull
public final ImageButton btnBack;
@NonNull
public final MaterialButton btnRunWizard;
@NonNull
public final MaterialButton btnSave;
@NonNull
public final MaterialButton btnTestConnection;
@NonNull
public final TextView scaleDeviceInfo;
@NonNull
public final TextView scaleGatewayStatus;
@NonNull
public final EditText urlEdit;
private ActivitySettingsBinding(@NonNull ScrollView rootView, @NonNull ImageButton btnBack,
@NonNull MaterialButton btnRunWizard, @NonNull MaterialButton btnSave,
@NonNull MaterialButton btnTestConnection, @NonNull TextView scaleDeviceInfo,
@NonNull TextView scaleGatewayStatus, @NonNull EditText urlEdit) {
this.rootView = rootView;
this.btnBack = btnBack;
this.btnRunWizard = btnRunWizard;
this.btnSave = btnSave;
this.btnTestConnection = btnTestConnection;
this.scaleDeviceInfo = scaleDeviceInfo;
this.scaleGatewayStatus = scaleGatewayStatus;
this.urlEdit = urlEdit;
}
@Override
@NonNull
public ScrollView getRoot() {
return rootView;
}
@NonNull
public static ActivitySettingsBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, null, false);
}
@NonNull
public static ActivitySettingsBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup parent, boolean attachToParent) {
View root = inflater.inflate(R.layout.activity_settings, parent, false);
if (attachToParent) {
parent.addView(root);
}
return bind(root);
}
@NonNull
public static ActivitySettingsBinding bind(@NonNull View rootView) {
// The body of this method is generated in a way you would not otherwise write.
// This is done to optimize the compiled bytecode for size and performance.
int id;
missingId: {
id = R.id.btnBack;
ImageButton btnBack = ViewBindings.findChildViewById(rootView, id);
if (btnBack == null) {
break missingId;
}
id = R.id.btnRunWizard;
MaterialButton btnRunWizard = ViewBindings.findChildViewById(rootView, id);
if (btnRunWizard == null) {
break missingId;
}
id = R.id.btnSave;
MaterialButton btnSave = ViewBindings.findChildViewById(rootView, id);
if (btnSave == null) {
break missingId;
}
id = R.id.btnTestConnection;
MaterialButton btnTestConnection = ViewBindings.findChildViewById(rootView, id);
if (btnTestConnection == null) {
break missingId;
}
id = R.id.scaleDeviceInfo;
TextView scaleDeviceInfo = ViewBindings.findChildViewById(rootView, id);
if (scaleDeviceInfo == null) {
break missingId;
}
id = R.id.scaleGatewayStatus;
TextView scaleGatewayStatus = ViewBindings.findChildViewById(rootView, id);
if (scaleGatewayStatus == null) {
break missingId;
}
id = R.id.urlEdit;
EditText urlEdit = ViewBindings.findChildViewById(rootView, id);
if (urlEdit == null) {
break missingId;
}
return new ActivitySettingsBinding((ScrollView) rootView, btnBack, btnRunWizard, btnSave,
btnTestConnection, scaleDeviceInfo, scaleGatewayStatus, urlEdit);
}
String missingId = rootView.getResources().getResourceName(id);
throw new NullPointerException("Missing required view with ID: ".concat(missingId));
}
}
@@ -1,2 +0,0 @@
#- File Locator -
listingFile=../../../outputs/apk/debug/output-metadata.json
@@ -1,2 +0,0 @@
appMetadataVersion=1.1
androidGradlePluginVersion=8.2.2
@@ -1,10 +0,0 @@
{
"version": 3,
"artifactType": {
"type": "COMPATIBLE_SCREEN_MANIFEST",
"kind": "Directory"
},
"applicationId": "it.dadaloop.evershelf.kiosk",
"variantName": "debug",
"elements": []
}
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_kiosk" modulePackage="it.dadaloop.evershelf.kiosk" filePath="app/src/main/res/layout/activity_kiosk.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.FrameLayout"><Targets><Target tag="layout/activity_kiosk_0" view="FrameLayout"><Expressions/><location startLine="1" startOffset="0" endLine="427" endOffset="13"/></Target><Target id="@+id/splashContainer" view="LinearLayout"><Expressions/><location startLine="7" startOffset="4" endLine="43" endOffset="18"/></Target><Target id="@+id/wizardContainer" view="ScrollView"><Expressions/><location startLine="46" startOffset="4" endLine="403" endOffset="16"/></Target><Target id="@+id/stepIndicator" view="LinearLayout"><Expressions/><location startLine="64" startOffset="12" endLine="70" endOffset="42"/></Target><Target id="@+id/step1" view="LinearLayout"><Expressions/><location startLine="73" startOffset="12" endLine="162" endOffset="26"/></Target><Target id="@+id/wizardTitle" view="TextView"><Expressions/><location startLine="88" startOffset="16" endLine="98" endOffset="56"/></Target><Target id="@+id/btnGetStarted" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="154" startOffset="16" endLine="161" endOffset="54"/></Target><Target id="@+id/step2" view="LinearLayout"><Expressions/><location startLine="165" startOffset="12" endLine="283" endOffset="26"/></Target><Target id="@+id/wizardUrl" view="EditText"><Expressions/><location startLine="208" startOffset="16" endLine="220" endOffset="56"/></Target><Target id="@+id/urlStatus" view="TextView"><Expressions/><location startLine="222" startOffset="16" endLine="229" endOffset="56"/></Target><Target id="@+id/btnTestUrl" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="231" startOffset="16" endLine="241" endOffset="56"/></Target><Target id="@+id/btnStep2Back" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="260" startOffset="20" endLine="271" endOffset="57"/></Target><Target id="@+id/btnStep2Next" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="273" startOffset="20" endLine="281" endOffset="58"/></Target><Target id="@+id/step3" view="LinearLayout"><Expressions/><location startLine="286" startOffset="12" endLine="400" endOffset="26"/></Target><Target id="@+id/scaleStatusCard" view="LinearLayout"><Expressions/><location startLine="321" startOffset="16" endLine="357" endOffset="30"/></Target><Target id="@+id/scaleStatusIcon" view="TextView"><Expressions/><location startLine="330" startOffset="20" endLine="337" endOffset="59"/></Target><Target id="@+id/scaleStatusText" view="TextView"><Expressions/><location startLine="339" startOffset="20" endLine="347" endOffset="59"/></Target><Target id="@+id/scaleStatusDetail" view="TextView"><Expressions/><location startLine="349" startOffset="20" endLine="356" endOffset="50"/></Target><Target id="@+id/btnStep3Back" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="366" startOffset="20" endLine="377" endOffset="57"/></Target><Target id="@+id/btnFinish" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="379" startOffset="20" endLine="387" endOffset="58"/></Target><Target id="@+id/btnSkipScale" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="390" startOffset="16" endLine="399" endOffset="53"/></Target><Target id="@+id/webView" view="WebView"><Expressions/><location startLine="406" startOffset="4" endLine="410" endOffset="35"/></Target><Target id="@+id/btnSettings" view="ImageButton"><Expressions/><location startLine="413" startOffset="4" endLine="425" endOffset="35"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_settings" modulePackage="it.dadaloop.evershelf.kiosk" filePath="app/src/main/res/layout/activity_settings.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.ScrollView"><Targets><Target tag="layout/activity_settings_0" view="ScrollView"><Expressions/><location startLine="1" startOffset="0" endLine="194" endOffset="12"/></Target><Target id="@+id/btnBack" view="ImageButton"><Expressions/><location startLine="21" startOffset="12" endLine="29" endOffset="49"/></Target><Target id="@+id/urlEdit" view="EditText"><Expressions/><location startLine="67" startOffset="12" endLine="79" endOffset="52"/></Target><Target id="@+id/btnTestConnection" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="81" startOffset="12" endLine="90" endOffset="45"/></Target><Target id="@+id/scaleGatewayStatus" view="TextView"><Expressions/><location startLine="127" startOffset="16" endLine="133" endOffset="45"/></Target><Target id="@+id/scaleDeviceInfo" view="TextView"><Expressions/><location startLine="136" startOffset="12" endLine="142" endOffset="41"/></Target><Target id="@+id/btnRunWizard" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="164" startOffset="12" endLine="173" endOffset="45"/></Target><Target id="@+id/btnSave" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="183" startOffset="8" endLine="191" endOffset="48"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_kiosk" modulePackage="it.dadaloop.evershelf.kiosk" filePath="app/src/main/res/layout/activity_kiosk.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.FrameLayout"><Targets><Target tag="layout/activity_kiosk_0" view="FrameLayout"><Expressions/><location startLine="1" startOffset="0" endLine="427" endOffset="13"/></Target><Target id="@+id/splashContainer" view="LinearLayout"><Expressions/><location startLine="7" startOffset="4" endLine="43" endOffset="18"/></Target><Target id="@+id/wizardContainer" view="ScrollView"><Expressions/><location startLine="46" startOffset="4" endLine="403" endOffset="16"/></Target><Target id="@+id/stepIndicator" view="LinearLayout"><Expressions/><location startLine="64" startOffset="12" endLine="70" endOffset="42"/></Target><Target id="@+id/step1" view="LinearLayout"><Expressions/><location startLine="73" startOffset="12" endLine="162" endOffset="26"/></Target><Target id="@+id/wizardTitle" view="TextView"><Expressions/><location startLine="88" startOffset="16" endLine="98" endOffset="56"/></Target><Target id="@+id/btnGetStarted" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="154" startOffset="16" endLine="161" endOffset="54"/></Target><Target id="@+id/step2" view="LinearLayout"><Expressions/><location startLine="165" startOffset="12" endLine="283" endOffset="26"/></Target><Target id="@+id/wizardUrl" view="EditText"><Expressions/><location startLine="208" startOffset="16" endLine="220" endOffset="56"/></Target><Target id="@+id/urlStatus" view="TextView"><Expressions/><location startLine="222" startOffset="16" endLine="229" endOffset="56"/></Target><Target id="@+id/btnTestUrl" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="231" startOffset="16" endLine="241" endOffset="56"/></Target><Target id="@+id/btnStep2Back" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="260" startOffset="20" endLine="271" endOffset="57"/></Target><Target id="@+id/btnStep2Next" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="273" startOffset="20" endLine="281" endOffset="58"/></Target><Target id="@+id/step3" view="LinearLayout"><Expressions/><location startLine="286" startOffset="12" endLine="400" endOffset="26"/></Target><Target id="@+id/scaleStatusCard" view="LinearLayout"><Expressions/><location startLine="321" startOffset="16" endLine="357" endOffset="30"/></Target><Target id="@+id/scaleStatusIcon" view="TextView"><Expressions/><location startLine="330" startOffset="20" endLine="337" endOffset="59"/></Target><Target id="@+id/scaleStatusText" view="TextView"><Expressions/><location startLine="339" startOffset="20" endLine="347" endOffset="59"/></Target><Target id="@+id/scaleStatusDetail" view="TextView"><Expressions/><location startLine="349" startOffset="20" endLine="356" endOffset="50"/></Target><Target id="@+id/btnStep3Back" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="366" startOffset="20" endLine="377" endOffset="57"/></Target><Target id="@+id/btnFinish" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="379" startOffset="20" endLine="387" endOffset="58"/></Target><Target id="@+id/btnSkipScale" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="390" startOffset="16" endLine="399" endOffset="53"/></Target><Target id="@+id/webView" view="WebView"><Expressions/><location startLine="406" startOffset="4" endLine="410" endOffset="35"/></Target><Target id="@+id/btnSettings" view="ImageButton"><Expressions/><location startLine="413" startOffset="4" endLine="425" endOffset="35"/></Target></Targets></Layout>
@@ -1 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><Layout layout="activity_settings" modulePackage="it.dadaloop.evershelf.kiosk" filePath="app/src/main/res/layout/activity_settings.xml" directory="layout" isMerge="false" isBindingData="false" rootNodeType="android.widget.ScrollView"><Targets><Target tag="layout/activity_settings_0" view="ScrollView"><Expressions/><location startLine="1" startOffset="0" endLine="194" endOffset="12"/></Target><Target id="@+id/btnBack" view="ImageButton"><Expressions/><location startLine="21" startOffset="12" endLine="29" endOffset="49"/></Target><Target id="@+id/urlEdit" view="EditText"><Expressions/><location startLine="67" startOffset="12" endLine="79" endOffset="52"/></Target><Target id="@+id/btnTestConnection" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="81" startOffset="12" endLine="90" endOffset="45"/></Target><Target id="@+id/scaleGatewayStatus" view="TextView"><Expressions/><location startLine="127" startOffset="16" endLine="133" endOffset="45"/></Target><Target id="@+id/scaleDeviceInfo" view="TextView"><Expressions/><location startLine="136" startOffset="12" endLine="142" endOffset="41"/></Target><Target id="@+id/btnRunWizard" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="164" startOffset="12" endLine="173" endOffset="45"/></Target><Target id="@+id/btnSave" view="com.google.android.material.button.MaterialButton"><Expressions/><location startLine="183" startOffset="8" endLine="191" endOffset="48"/></Target></Targets></Layout>

Some files were not shown because too many files have changed in this diff Show More