From 7625e94c5d962656b32121eb7c12c7a3a2032d9d Mon Sep 17 00:00:00 2001 From: Mike Trahearn Date: Fri, 7 Feb 2025 10:55:52 +1000 Subject: [PATCH] Update pages to use interactive property Fixes #1818 --- pages/battery/BatteryListPage.qml | 6 +++--- pages/controlcards/ESSCard.qml | 2 +- pages/controlcards/EVCSCard.qml | 19 +++++++---------- pages/controlcards/InverterChargerCard.qml | 21 ++++++++----------- pages/evcs/EvChargerPage.qml | 2 +- .../settings/PageGeneratorRuntimeService.qml | 6 +++--- pages/settings/PageGeneratorTestRun.qml | 2 +- .../PageSettingsAccessAndSecurity.qml | 2 +- pages/settings/PageSettingsBatteries.qml | 6 +++--- pages/settings/PageSettingsCGwacs.qml | 2 +- pages/settings/PageSettingsCanbus.qml | 2 +- pages/settings/PageSettingsDvcc.qml | 2 +- pages/settings/PageSettingsEthernet.qml | 8 +++---- .../settings/PageSettingsFirmwareOffline.qml | 6 +++--- pages/settings/PageSettingsFirmwareOnline.qml | 4 ++-- pages/settings/PageSettingsGeneral.qml | 2 +- pages/settings/PageSettingsGenerator.qml | 2 +- pages/settings/PageSettingsHub4.qml | 4 ++-- .../settings/PageSettingsHub4Peakshaving.qml | 8 +++---- pages/settings/PageSettingsLogger.qml | 4 ++-- pages/settings/PageSettingsRootfsSelect.qml | 2 +- pages/settings/PageSettingsTailscale.qml | 14 ++++++------- pages/settings/PageSettingsTcpIp.qml | 4 ++-- pages/settings/PageSettingsVecanDevices.qml | 15 +++---------- pages/settings/PageTzInfo.qml | 4 +++- pages/settings/debug/PageDebug.qml | 9 +------- pages/settings/debug/PageDebugVeQItems.qml | 2 +- pages/settings/debug/PageSettingsDemo.qml | 2 +- .../devicelist/ac-in/PageAcInSetup.qml | 2 +- .../battery/BatterySettingsRelayModel.qml | 2 +- .../devicelist/battery/PageBattery.qml | 2 +- .../battery/PageBatterySettingsBattery.qml | 20 +++++++++--------- .../devicelist/rs/PageRsSystemEss.qml | 2 +- pages/solar/PageSolarParallelOperation.qml | 2 +- pages/vebusdevice/PageVeBusAdvanced.qml | 13 +++++++----- pages/vebusdevice/PageVeBusKwhCounters.qml | 2 +- 36 files changed, 93 insertions(+), 114 deletions(-) diff --git a/pages/battery/BatteryListPage.qml b/pages/battery/BatteryListPage.qml index ee5ec115c..50d7d2f79 100644 --- a/pages/battery/BatteryListPage.qml +++ b/pages/battery/BatteryListPage.qml @@ -118,13 +118,13 @@ Page { Layout.rightMargin: Theme.geometry_listItem_content_horizontalMargin source: "qrc:/images/icon_arrow_32.svg" rotation: 180 - color: mouseArea.containsPress ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon - opacity: mouseArea.enabled ? 1 : 0 + color: pressArea.containsPress ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon + opacity: pressArea.enabled ? 1 : 0 } } ListPressArea { - id: mouseArea + id: pressArea radius: parent.radius anchors.fill: parent diff --git a/pages/controlcards/ESSCard.qml b/pages/controlcards/ESSCard.qml index 9726de7f0..31aa7a2e0 100644 --- a/pages/controlcards/ESSCard.qml +++ b/pages/controlcards/ESSCard.qml @@ -49,7 +49,7 @@ ControlCard { //% "Minimum SOC" text: qsTrId("ess_card_minimum_soc") flat: true - button.text: Units.getCombinedDisplayText(VenusOS.Units_Percentage, Global.ess.minimumStateOfCharge) + secondaryText: Units.getCombinedDisplayText(VenusOS.Units_Percentage, Global.ess.minimumStateOfCharge) onClicked: Global.dialogLayer.open(minSocDialogComponent) Component { diff --git a/pages/controlcards/EVCSCard.qml b/pages/controlcards/EVCSCard.qml index 489be482a..529787572 100644 --- a/pages/controlcards/EVCSCard.qml +++ b/pages/controlcards/EVCSCard.qml @@ -40,22 +40,17 @@ ControlCard { right: parent.right } - ListItem { - id: modeListItem - + ListButton { + id: modeListButton text: CommonWords.mode + secondaryText: Global.evChargers.chargerModeToText(modeItem.value) flat: true - enabled: root.userHasWriteAccess && modeItem.isValid - - content.children: ListItemButton { - width: Math.min(implicitWidth, Theme.geometry_veBusDeviceCard_modeButton_maximumWidth) - text: Global.evChargers.chargerModeToText(modeItem.value) - onClicked: Global.dialogLayer.open(modeDialogComponent, { mode: modeItem.value }) - } + interactive: modeItem.isValid + onClicked: Global.dialogLayer.open(modeDialogComponent, { mode: modeItem.value }) } FlatListItemSeparator { - visible: modeListItem.visible + visible: modeListButton.visible } ListSpinBox { @@ -69,7 +64,7 @@ ControlCard { stepSize: 1 dataItem.uid: root.evCharger.serviceUid + "/SetCurrent" preferredVisible: dataItem.isValid - enabled: modeItem.value === VenusOS.Evcs_Mode_Manual + interactive: dataItem.isValid && modeItem.value === VenusOS.Evcs_Mode_Manual } FlatListItemSeparator { diff --git a/pages/controlcards/InverterChargerCard.qml b/pages/controlcards/InverterChargerCard.qml index 7c3325674..3eb1d9884 100644 --- a/pages/controlcards/InverterChargerCard.qml +++ b/pages/controlcards/InverterChargerCard.qml @@ -94,20 +94,17 @@ ControlCard { FlatListItemSeparator {} - ListItem { + ListButton { + id: essStateButton text: CommonWords.ess flat: true preferredVisible: essModeItem.isValid - content.children: [ - ListItemButton { - font.pixelSize: Theme.font_size_body1 - text: Global.ess.essStateToButtonText(essModeItem.value) - enabled: userHasWriteAccess - onClicked: { - Global.dialogLayer.open(essModeDialogComponent, { essMode: essModeItem.value }) - } - } - ] + secondaryText: Global.ess.essStateToButtonText(essModeItem.value) + // change the font size for the child button + button.font.pixelSize: Theme.font_size_body1 + onClicked: { + Global.dialogLayer.open(essModeDialogComponent, { essMode: essModeItem.value }) + } } ListButton { @@ -117,7 +114,7 @@ ControlCard { preferredVisible: essMinSocItem.isValid && [ VenusOS.Ess_State_OptimizedWithBatteryLife, VenusOS.Ess_State_OptimizedWithoutBatteryLife].includes(essModeItem.value) - button.text: Units.getCombinedDisplayText(VenusOS.Units_Percentage, essMinSocItem.value) + secondaryText: Units.getCombinedDisplayText(VenusOS.Units_Percentage, essMinSocItem.value) onClicked: Global.dialogLayer.open(essMinSocDialogComponent) } } diff --git a/pages/evcs/EvChargerPage.qml b/pages/evcs/EvChargerPage.qml index fbdaeafd8..9808aac1e 100644 --- a/pages/evcs/EvChargerPage.qml +++ b/pages/evcs/EvChargerPage.qml @@ -119,7 +119,7 @@ Page { to: root.evCharger.maxCurrent dataItem.uid: root.evCharger.serviceUid + "/SetCurrent" preferredVisible: dataItem.isValid - enabled: chargeMode.dataItem.value === VenusOS.Evcs_Mode_Manual + interactive: dataItem.isValid && chargeMode.dataItem.value === VenusOS.Evcs_Mode_Manual } ListSwitch { diff --git a/pages/settings/PageGeneratorRuntimeService.qml b/pages/settings/PageGeneratorRuntimeService.qml index fe230f6a8..01c1e2471 100644 --- a/pages/settings/PageGeneratorRuntimeService.qml +++ b/pages/settings/PageGeneratorRuntimeService.qml @@ -57,7 +57,7 @@ Page { text: qsTrId("page_settings_run_time_and_service_generator_total_run_time") secondaryText: Math.round(accumulatedTotalItem.value / 60 / 60) - Math.round(dataItem.value / 60 / 60) + "h" dataItem.uid: settingsBindPrefix + "/AccumulatedTotalOffset" - enabled: userHasWriteAccess && state.value === 0 + interactive: dataItem.isValid && state.value === 0 preferredVisible: dataItem.isValid && gensetBindPrefix === "" maximumLength: 6 saveInput: function() { @@ -88,7 +88,7 @@ Page { ListButton { //% "Reset daily run time counters" text: qsTrId("page_settings_run_time_and_service_reset_daily_run_time_counters") - button.text: CommonWords.press_to_reset + secondaryText: CommonWords.press_to_reset onClicked: { if (state.value === 0) { var now = new Date() @@ -176,7 +176,7 @@ Page { ListButton { //% "Reset service timer" text: qsTrId("page_settings_run_time_and_service_reset_service_timer") - button.text: CommonWords.press_to_reset + secondaryText: CommonWords.press_to_reset preferredVisible: serviceReset.isValid onClicked: { serviceReset.setValue(1) diff --git a/pages/settings/PageGeneratorTestRun.qml b/pages/settings/PageGeneratorTestRun.qml index 7ca1f4e94..25c7a0163 100644 --- a/pages/settings/PageGeneratorTestRun.qml +++ b/pages/settings/PageGeneratorTestRun.qml @@ -25,7 +25,7 @@ Page { text: qsTrId("run_interval") dataItem.uid: bindPrefix + "/TestRun/Interval" //% "%1 day(s)" - button.text: qsTrId("page_generator_test_run_days").arg(value) + secondaryText: qsTrId("page_generator_test_run_days").arg(value) stepSize: 1 from: 1 to: 30 diff --git a/pages/settings/PageSettingsAccessAndSecurity.qml b/pages/settings/PageSettingsAccessAndSecurity.qml index 3bb12a3d5..3fce29382 100644 --- a/pages/settings/PageSettingsAccessAndSecurity.qml +++ b/pages/settings/PageSettingsAccessAndSecurity.qml @@ -267,7 +267,7 @@ Page { //% "Logout" text: qsTrId("settings_logout") //% "Log out now" - button.text: qsTrId("settings_logout_now") + secondaryText: qsTrId("settings_logout_now") // Cannot log out from GX devices, VRM or Unsecured profile with no password preferredVisible: Qt.platform.os === "wasm" && !BackendConnection.vrm diff --git a/pages/settings/PageSettingsBatteries.qml b/pages/settings/PageSettingsBatteries.qml index d39ab4443..a02074c6a 100644 --- a/pages/settings/PageSettingsBatteries.qml +++ b/pages/settings/PageSettingsBatteries.qml @@ -161,13 +161,13 @@ Page { Layout.rightMargin: Theme.geometry_listItem_content_horizontalMargin source: "qrc:/images/icon_arrow_32.svg" rotation: 180 - color: mouseArea.containsPress ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon - opacity: mouseArea.enabled ? 1 : 0 + color: pressArea.containsPress ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon + opacity: pressArea.enabled ? 1 : 0 } } ListPressArea { - id: mouseArea + id: pressArea radius: parent.radius anchors.fill: parent diff --git a/pages/settings/PageSettingsCGwacs.qml b/pages/settings/PageSettingsCGwacs.qml index 25bf2521d..0b6fbe809 100644 --- a/pages/settings/PageSettingsCGwacs.qml +++ b/pages/settings/PageSettingsCGwacs.qml @@ -62,7 +62,7 @@ Page { //% "Phase type" text: qsTrId("settings_cgwacs_phase_type") dataItem.uid: root.devicePath + "/IsMultiphase" - enabled: userHasWriteAccess && multiPhaseSupport.value !== undefined + interactive: dataItem.isValid && multiPhaseSupport.value !== undefined optionModel: [ //% "Single phase" { display: qsTrId("settings_single_phase"), value: 0}, diff --git a/pages/settings/PageSettingsCanbus.qml b/pages/settings/PageSettingsCanbus.qml index d6353c6ee..afe1e03bb 100644 --- a/pages/settings/PageSettingsCanbus.qml +++ b/pages/settings/PageSettingsCanbus.qml @@ -103,7 +103,7 @@ Page { //% "Check Unique id numbers" text: qsTrId("settings_canbus_unique_id_choose") preferredVisible: root._isVecan || root._isRvc - button.text: timer.running + secondaryText: timer.running ? Utils.secondsToString(timer.remainingTime) //% "Press to check" : qsTrId("settings_canbus_unique_id_press_to_check") diff --git a/pages/settings/PageSettingsDvcc.qml b/pages/settings/PageSettingsDvcc.qml index f0e2dc64e..9a45fac24 100644 --- a/pages/settings/PageSettingsDvcc.qml +++ b/pages/settings/PageSettingsDvcc.qml @@ -121,7 +121,7 @@ Page { text: qsTrId("settings_dvcc_scs_status") dataItem.uid: Global.system.serviceUid + "/Control/BatteryCurrentSense" preferredVisible: commonSettings.dvccActive && sharedCurrentSense.checked - enabled: false + interactive: false optionModel: [ { display: CommonWords.disabled, value: 0 }, diff --git a/pages/settings/PageSettingsEthernet.qml b/pages/settings/PageSettingsEthernet.qml index 97d31f100..b00fca9cb 100644 --- a/pages/settings/PageSettingsEthernet.qml +++ b/pages/settings/PageSettingsEthernet.qml @@ -67,7 +67,7 @@ Page { } return -1 } - enabled: userHasReadAccess + interactive: userHasReadAccess onOptionClicked: function(index) { networkServices.setServiceProperty("Method", optionModel[index].value) @@ -83,7 +83,7 @@ Page { ListIpAddressField { //% "Netmask" text: qsTrId("settings_tcpip_netmask") - enabled: method.userHasWriteAccess && networkServices.manual + interactive: method.userHasWriteAccess && networkServices.manual textField.text: networkServices.netmask saveInput: function() { networkServices.setServiceProperty("Netmask", textField.text) } } @@ -91,7 +91,7 @@ Page { ListIpAddressField { //% "Gateway" text: qsTrId("settings_tcpip_gateway") - enabled: method.userHasWriteAccess && networkServices.manual + interactive: method.userHasWriteAccess && networkServices.manual textField.text: networkServices.gateway saveInput: function() { networkServices.setServiceProperty("Gateway", textField.text) } } @@ -99,7 +99,7 @@ Page { ListIpAddressField { //% "DNS server" text: qsTrId("settings_tcpip_dns_server") - enabled: method.userHasWriteAccess && networkServices.manual + interactive: method.userHasWriteAccess && networkServices.manual textField.text: networkServices.nameserver saveInput: function() { networkServices.setServiceProperty("Nameserver", textField.text) } } diff --git a/pages/settings/PageSettingsFirmwareOffline.qml b/pages/settings/PageSettingsFirmwareOffline.qml index c45c61430..8c5a740f4 100644 --- a/pages/settings/PageSettingsFirmwareOffline.qml +++ b/pages/settings/PageSettingsFirmwareOffline.qml @@ -25,7 +25,7 @@ Page { //% "Firmware found" text: qsTrId("settings_firmware_found") - button.text: { + secondaryText: { if (Global.firmwareUpdate.state === FirmwareUpdater.DownloadingAndInstalling) { //: %1 = firmware version //% "Installing %1" @@ -37,7 +37,7 @@ Page { } } - enabled: !Global.firmwareUpdate.busy + interactive: !Global.firmwareUpdate.busy writeAccessLevel: VenusOS.User_AccessType_User preferredVisible: !!Global.firmwareUpdate.offlineAvailableVersion && !Global.firmwareUpdate.checkingForUpdate onClicked: { @@ -54,7 +54,7 @@ Page { } ListMountStateButton { - button.enabled: mounted && Global.firmwareUpdate.state !== FirmwareUpdater.DownloadingAndInstalling + interactive: mounted && Global.firmwareUpdate.state !== FirmwareUpdater.DownloadingAndInstalling } } } diff --git a/pages/settings/PageSettingsFirmwareOnline.qml b/pages/settings/PageSettingsFirmwareOnline.qml index 91585a64e..fbc500016 100644 --- a/pages/settings/PageSettingsFirmwareOnline.qml +++ b/pages/settings/PageSettingsFirmwareOnline.qml @@ -77,7 +77,7 @@ Page { //% "Update available" text: qsTrId("settings_firmware_update_available") - button.text: { + secondaryText: { if (Global.firmwareUpdate.state === FirmwareUpdater.DownloadingAndInstalling) { if (progress.value) { //: Firmware update progress. %1 = firmware version, %2 = current update progress @@ -94,7 +94,7 @@ Page { } } - enabled: !Global.firmwareUpdate.busy + interactive: !Global.firmwareUpdate.busy writeAccessLevel: VenusOS.User_AccessType_User preferredVisible: !!Global.firmwareUpdate.onlineAvailableVersion && !Global.firmwareUpdate.checkingForUpdate onClicked: { diff --git a/pages/settings/PageSettingsGeneral.qml b/pages/settings/PageSettingsGeneral.qml index 4340ddae2..dda83b9d1 100644 --- a/pages/settings/PageSettingsGeneral.qml +++ b/pages/settings/PageSettingsGeneral.qml @@ -139,7 +139,7 @@ Page { ListButton { text: CommonWords.reboot //% "Reboot now" - button.text: qsTrId("settings_reboot_now") + secondaryText: qsTrId("settings_reboot_now") writeAccessLevel: VenusOS.User_AccessType_User onClicked: Global.dialogLayer.open(confirmRebootDialogComponent) diff --git a/pages/settings/PageSettingsGenerator.qml b/pages/settings/PageSettingsGenerator.qml index 4bcdc7119..c8c4758d4 100644 --- a/pages/settings/PageSettingsGenerator.qml +++ b/pages/settings/PageSettingsGenerator.qml @@ -88,7 +88,7 @@ Page { //% "Detect generator at AC input" text: qsTrId("page_settings_generator_detect_generator_at_ac_input") dataItem.uid: settingsBindPrefix + "/Alarms/NoGeneratorAtAcIn" - enabled: dataItem.isValid && (generatorIsSet || checked) + interactive: dataItem.isValid && (generatorIsSet || checked) onClicked: { if (!checked) { if (!generatorIsSet) { diff --git a/pages/settings/PageSettingsHub4.qml b/pages/settings/PageSettingsHub4.qml index da61be4a0..110fea09f 100644 --- a/pages/settings/PageSettingsHub4.qml +++ b/pages/settings/PageSettingsHub4.qml @@ -109,7 +109,7 @@ Page { //% "Minimum SOC (unless grid fails)" text: qsTrId("settings_ess_min_soc") - button.text: Global.ess.minimumStateOfCharge + "%" + secondaryText: Global.ess.minimumStateOfCharge + "%" preferredVisible: essMode.value !== VenusOS.Ess_Hub4ModeState_Disabled && batteryLifeState.dataItem.value !== VenusOS.Ess_BatteryLifeState_KeepCharged onClicked: Global.dialogLayer.open(minSocDialogComponent) @@ -141,7 +141,7 @@ Page { dataItem.uid: Global.systemSettings.serviceUid + "/Settings/CGwacs/BatteryLife/State" preferredVisible: essMode.value !== VenusOS.Ess_Hub4ModeState_Disabled && Global.ess.isBatteryLifeActive(batteryLifeState.dataItem.value) - enabled: false + interactive: false optionModel: [ // Values below taken from MaintenanceState enum in dbus-cgwacs { display: root._selfConsumptionText, value: 2 }, diff --git a/pages/settings/PageSettingsHub4Peakshaving.qml b/pages/settings/PageSettingsHub4Peakshaving.qml index bd08b2844..46d91060c 100644 --- a/pages/settings/PageSettingsHub4Peakshaving.qml +++ b/pages/settings/PageSettingsHub4Peakshaving.qml @@ -46,7 +46,7 @@ Page { ListRadioButtonGroup { //% "Peak shaving" text: qsTrId("settings_ess_peak_shaving") - enabled: !(stateItem.value === VenusOS.Ess_BatteryLifeState_KeepCharged && withoutGridMeterItem.value === 1) + interactive: !(stateItem.value === VenusOS.Ess_BatteryLifeState_KeepCharged && withoutGridMeterItem.value === 1) optionModel: [ { //% "Above minimum SOC only" @@ -86,7 +86,7 @@ Page { text: qsTrId("settings_ess_limit_system_ac_import_current") checkable: true checked: systemAcInputLimit.value >= 0 - enabled: userHasWriteAccess && withoutGridMeterItem.value === 0 && overruledShoreLimit.seen + interactive: withoutGridMeterItem.value === 0 && overruledShoreLimit.seen onCheckedChanged: { if (checked && systemAcInputLimit.value < 0) { systemAcInputLimit.setValue(40) @@ -110,7 +110,6 @@ Page { ListSpinBox { //% "Maximum system import current (per phase)" text: qsTrId("settings_ess_max_system_import_current") - enabled: userHasWriteAccess preferredVisible: maxSystemAcInputCurrentSwitch.enabled && maxSystemAcInputCurrentSwitch.checked dataItem.uid: systemAcInputLimit.uid suffix: Units.defaultUnitString(VenusOS.Units_Amp) @@ -127,7 +126,7 @@ Page { text: qsTrId("settings_ess_limit_system_ac_export_current") checkable: true checked: systemAcExportLimit.value >= 0 - enabled: userHasWriteAccess && withoutGridMeterItem.value === 0 + interactive: withoutGridMeterItem.value === 0 onCheckedChanged: { if (checked && systemAcExportLimit.value < 0) { systemAcExportLimit.setValue(40) @@ -151,7 +150,6 @@ Page { ListSpinBox { //% "Maximum system export current (per phase)" text: qsTrId("settings_ess_max_system_export_current") - enabled: userHasWriteAccess preferredVisible: maxSystemAcExportCurrentSwitch.enabled && maxSystemAcExportCurrentSwitch.checked dataItem.uid: systemAcExportLimit.uid suffix: Units.defaultUnitString(VenusOS.Units_Amp) diff --git a/pages/settings/PageSettingsLogger.qml b/pages/settings/PageSettingsLogger.qml index d530715b0..c54e529ef 100644 --- a/pages/settings/PageSettingsLogger.qml +++ b/pages/settings/PageSettingsLogger.qml @@ -285,7 +285,7 @@ Page { { display: qsTrId("settings_vrm_external_storage"), value: 2 }, ] dataItem.uid: root.loggerServiceUid + "/Buffer/Location" - enabled: dataItem.value !== undefined + interactive: dataItem.value !== undefined } ListRadioButtonGroup { @@ -306,7 +306,7 @@ Page { //% "SD card / USB stick not writable" { display: qsTrId("settings_vrm_storage_not_writable_error"), value: 5 }, ] - enabled: false + interactive: false dataItem.uid: root.loggerServiceUid + "/Buffer/ErrorState" preferredVisible: !!dataItem.value } diff --git a/pages/settings/PageSettingsRootfsSelect.qml b/pages/settings/PageSettingsRootfsSelect.qml index 51d8fe8f3..c08b18146 100644 --- a/pages/settings/PageSettingsRootfsSelect.qml +++ b/pages/settings/PageSettingsRootfsSelect.qml @@ -57,7 +57,7 @@ Page { //: %1 = backup version, %2 = backup version build number //% "Firmware %1 (%2)" text: qsTrId("settings_firmware_backup_version").arg(backupVersionItem.value).arg(backupBuildItem.value) - button.text: root._autoUpdateDisabled + secondaryText: root._autoUpdateDisabled //% "Press to boot" ? qsTrId("settings_firmware_press_to_boot") : CommonWords.disabled diff --git a/pages/settings/PageSettingsTailscale.qml b/pages/settings/PageSettingsTailscale.qml index 2e69fc326..7d3631054 100644 --- a/pages/settings/PageSettingsTailscale.qml +++ b/pages/settings/PageSettingsTailscale.qml @@ -207,7 +207,7 @@ Page { text: qsTrId("settings_tailscale_machinename") dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/MachineName" placeholderText: "--" - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled validateInput: function() { return _checkAndCleanup(textField.text, "0-9a-z-") } @@ -231,7 +231,7 @@ Page { //% "Logout from Tailscale account" text: qsTrId("settings_tailscale_logout") //% "Log out now" - button.text: qsTrId("settings_tailscale_logout_button") + secondaryText: qsTrId("settings_tailscale_logout_button") showAccessLevel: VenusOS.User_AccessType_Installer preferredVisible: root.tailscaleConnected onClicked: commandItem.setValue('logout') @@ -254,14 +254,14 @@ Page { ListSwitch { //% "Access local ethernet network" text: qsTrId("settings_tailscale_local_network_access_ethernet") - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/AccessLocalEthernet" } ListSwitch { //% "Access local WiFi network" text: qsTrId("settings_tailscale_local_network_access_wifi") - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/AccessLocalWifi" } @@ -271,7 +271,7 @@ Page { dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/CustomNetworks" //% "Example: 192.168.1.0/24" placeholderText: qsTrId("settings_tailscale_local_network_access_custom_networks_placeholder") - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled validateInput: function() { return _checkAndCleanup(textField.text, "0-9./,") } @@ -313,7 +313,7 @@ Page { text: qsTrId("settings_tailscale_advanced_custom_tailscale_up_arguments") dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/CustomArguments" placeholderText: "--" - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled validateInput: function() { return _checkAndCleanup(textField.text, "0-9a-z-_=+:., ") } @@ -324,7 +324,7 @@ Page { text: qsTrId("settings_tailscale_advanced_custom_server_url") dataItem.uid: Global.systemSettings.serviceUid + "/Settings/Services/Tailscale/CustomServerUrl" placeholderText: "--" - enabled: !root.tailscaleEnabled && userHasWriteAccess + interactive: dataItem.isValid && !root.tailscaleEnabled validateInput: function() { return _checkAndCleanup(textField.text, "0-9a-z-:/.") } diff --git a/pages/settings/PageSettingsTcpIp.qml b/pages/settings/PageSettingsTcpIp.qml index 2f6941b00..7cadb0472 100644 --- a/pages/settings/PageSettingsTcpIp.qml +++ b/pages/settings/PageSettingsTcpIp.qml @@ -163,7 +163,7 @@ Page { //% "Connect to network?" text: qsTrId("settings_tcpip_connect_to_network") //% "Connect" - button.text: qsTrId("settings_tcpip_connect") + secondaryText: qsTrId("settings_tcpip_connect") preferredVisible: root.ready && root._wifi && root._disconnected && (service.favorite || !service.secured) writeAccessLevel: VenusOS.User_AccessType_User @@ -176,7 +176,7 @@ Page { //% "Forget network?" text: qsTrId("settings_tcpip_forget_network") //% "Forget" - button.text: qsTrId("settings_tcpip_forget") + secondaryText: qsTrId("settings_tcpip_forget") preferredVisible: root.ready && root._wifi && service.favorite writeAccessLevel: VenusOS.User_AccessType_User onClicked: Global.dialogLayer.open(forgetNetworkDialogComponent) diff --git a/pages/settings/PageSettingsVecanDevices.qml b/pages/settings/PageSettingsVecanDevices.qml index 71291e20a..81a1448d6 100644 --- a/pages/settings/PageSettingsVecanDevices.qml +++ b/pages/settings/PageSettingsVecanDevices.qml @@ -34,20 +34,11 @@ Page { anchors.verticalCenter: parent.verticalCenter source: "qrc:/images/icon_arrow_32.svg" rotation: 180 - color: listDelegate.containsPress ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon + color: listDelegate.down ? Theme.color_listItem_down_forwardIcon : Theme.color_listItem_forwardIcon } - ListPressArea { - id: mouseArea - - parent: listDelegate.backgroundRect - radius: listDelegate.backgroundRect.radius - anchors.fill: parent - onClicked: { - Global.pageManager.pushPage("/pages/settings/PageSettingsVecanDevice.qml", - { bindPrefix: model.uid, title: text }) - } - } + onClicked: Global.pageManager.pushPage("/pages/settings/PageSettingsVecanDevice.qml", + { bindPrefix: model.uid, title: text }) VeQuickItem { id: modelName diff --git a/pages/settings/PageTzInfo.qml b/pages/settings/PageTzInfo.qml index 5d3e0ff8a..9e9422358 100644 --- a/pages/settings/PageTzInfo.qml +++ b/pages/settings/PageTzInfo.qml @@ -97,16 +97,18 @@ Page { //% "Date/Time local" text: qsTrId("settings_tz_date_time_local") writeAccessLevel: VenusOS.User_AccessType_User - enabled: preferredVisible && Global.systemSettings.time.isValid + interactive: Global.systemSettings.time.isValid content.children: Row { spacing: Theme.geometry_listItem_content_spacing ListItemButton { text: ClockTime.currentDate + enabled: timeZoneButton.clickable onClicked: root._openDateSelector() } ListItemButton { text: ClockTime.currentTime + enabled: timeZoneButton.clickable onClicked: root._openTimeSelector() } } diff --git a/pages/settings/debug/PageDebug.qml b/pages/settings/debug/PageDebug.qml index 9a3497159..fcdad18af 100644 --- a/pages/settings/debug/PageDebug.qml +++ b/pages/settings/debug/PageDebug.qml @@ -15,19 +15,12 @@ Page { component SwitchItem : ListItem { id: switchItem - signal clicked property alias checked: childSwitch.checked content.children: Switch { id: childSwitch onClicked: switchItem.clicked() } - - ListPressArea { - anchors.fill: switchItem.backgroundRect - radius: switchItem.backgroundRect.radius - onClicked: switchItem.clicked() - } } ListText { @@ -43,7 +36,7 @@ Page { text: qsTrId("settings_page_debug_quit_application") //% "Quit" - button.text: qsTrId("settings_page_debug_quit") + secondaryText: qsTrId("settings_page_debug_quit") onClicked: Qt.quit() } diff --git a/pages/settings/debug/PageDebugVeQItems.qml b/pages/settings/debug/PageDebugVeQItems.qml index 68e24a325..4d4979687 100644 --- a/pages/settings/debug/PageDebugVeQItems.qml +++ b/pages/settings/debug/PageDebugVeQItems.qml @@ -31,7 +31,7 @@ Page { return model.value !== undefined ? model.value : "--" } - enabled: subModel.rowCount > 0 + interactive: subModel.rowCount > 0 onClicked: { Global.pageManager.pushPage("/pages/settings/debug/PageDebugVeQItems.qml", diff --git a/pages/settings/debug/PageSettingsDemo.qml b/pages/settings/debug/PageSettingsDemo.qml index 1f6446800..983e5c059 100644 --- a/pages/settings/debug/PageSettingsDemo.qml +++ b/pages/settings/debug/PageSettingsDemo.qml @@ -167,7 +167,7 @@ Page { ListButton { text: "Button" - button.text: "Click this" + secondaryText: "Click this" onClicked: console.log("Button was clicked") } diff --git a/pages/settings/devicelist/ac-in/PageAcInSetup.qml b/pages/settings/devicelist/ac-in/PageAcInSetup.qml index 86f1d6bda..5e6812c45 100644 --- a/pages/settings/devicelist/ac-in/PageAcInSetup.qml +++ b/pages/settings/devicelist/ac-in/PageAcInSetup.qml @@ -106,7 +106,7 @@ Page { text: qsTrId("ac-in-setup_phase_configuration") preferredVisible: productId.value == ProductInfo.ProductId_EnergyMeter_Em24 dataItem.uid: root.bindPrefix + "/PhaseConfig" - enabled: !em24Locked() + interactive: dataItem.isValid && !em24Locked() optionModel: [ { display: "3P.n", value: 0 }, { display: "3P.1", value: 1 }, diff --git a/pages/settings/devicelist/battery/BatterySettingsRelayModel.qml b/pages/settings/devicelist/battery/BatterySettingsRelayModel.qml index 380adc9fb..15c57407e 100644 --- a/pages/settings/devicelist/battery/BatterySettingsRelayModel.qml +++ b/pages/settings/devicelist/battery/BatterySettingsRelayModel.qml @@ -42,7 +42,7 @@ ObjectModel { ListSwitch { text: CommonWords.state dataItem.uid: root.bindPrefix + "/Relay/0/State" - enabled: mode.dataItem.isValid && mode.dataItem.value === 2 + interactive: dataItem.isValid && mode.dataItem.isValid && mode.dataItem.value === 2 preferredVisible: dataItem.isValid } diff --git a/pages/settings/devicelist/battery/PageBattery.qml b/pages/settings/devicelist/battery/PageBattery.qml index fbd860e1f..41559e086 100644 --- a/pages/settings/devicelist/battery/PageBattery.qml +++ b/pages/settings/devicelist/battery/PageBattery.qml @@ -442,7 +442,7 @@ Page { text: qsTrId("battery_redetect_battery") //% "Press to redetect" secondaryText: qsTrId("battery_press_to_redetect") - enabled: redetect.value === 0 + interactive: redetect.value === 0 preferredVisible: redetect.isValid writeAccessLevel: VenusOS.User_AccessType_User onClicked: { diff --git a/pages/settings/devicelist/battery/PageBatterySettingsBattery.qml b/pages/settings/devicelist/battery/PageBatterySettingsBattery.qml index 6afdba2ef..413f8c772 100644 --- a/pages/settings/devicelist/battery/PageBatterySettingsBattery.qml +++ b/pages/settings/devicelist/battery/PageBatterySettingsBattery.qml @@ -38,7 +38,7 @@ Page { //% "Capacity" text: qsTrId("batterysettingsbattery_capacity") preferredVisible: dataItem.isValid - enabled: !root.locked + interactive: dataItem.isValid && !root.locked dataItem.uid: root.bindPrefix + "/Settings/Battery/Capacity" suffix: "Ah" } @@ -47,7 +47,7 @@ Page { //% "Charged voltage" text: qsTrId("batterysettingsbattery_charged_voltage") preferredVisible: dataItem.isValid - enabled: !root.locked + interactive: dataItem.isValid && !root.locked dataItem.uid: root.bindPrefix + "/Settings/Battery/ChargedVoltage" suffix: "V" decimals: 1 @@ -57,7 +57,7 @@ Page { ListSpinBox { //% "Tail current" text: qsTrId("batterysettingsbattery_tail_current") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/TailCurrent" suffix: "%" @@ -68,7 +68,7 @@ Page { ListSpinBox { //% "Charged detection time" text: qsTrId("batterysettingsbattery_charged_detection_time") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/ChargedDetectionTime" suffix: "min" @@ -77,7 +77,7 @@ Page { ListSpinBox { //% "Peukert exponent" text: qsTrId("batterysettingsbattery_peukert_exponent") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/PeukertExponent" decimals: 2 @@ -87,7 +87,7 @@ Page { ListSpinBox { //% "Charge efficiency factor" text: qsTrId("batterysettingsbattery_charge_efficiency_factor") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/ChargeEfficiency" suffix: "%" @@ -96,7 +96,7 @@ Page { ListSpinBox { //% "Current threshold" text: qsTrId("batterysettingsbattery_current_threshold") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/CurrentThreshold" suffix: Units.defaultUnitString(VenusOS.Units_Amp) @@ -107,7 +107,7 @@ Page { ListSpinBox { //% "Time-to-go averaging period" text: qsTrId("batterysettingsbattery_time_to_go_averaging_period") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/TTGAveragingPeriod" suffix: "min" @@ -127,7 +127,7 @@ Page { ListSpinBox { //% "Time-to-go discharge floor" text: qsTrId("batterysettingsbattery_time_to_go_discharge_floor") - enabled: !root.locked + interactive: dataItem.isValid && !root.locked preferredVisible: dataItem.isValid dataItem.uid: root.bindPrefix + "/Settings/Battery/DischargeFloor" suffix: "%" @@ -145,7 +145,7 @@ Page { text: qsTrId("batterysettingsbattery_synchronise_state_of_charge_to_100%") //% "Press to sync" secondaryText: qsTrId("batterysettingsbattery_press_to_sync") - enabled: !root.locked + interactive: !root.locked onClicked: sync.setValue(1) preferredVisible: sync.isValid diff --git a/pages/settings/devicelist/rs/PageRsSystemEss.qml b/pages/settings/devicelist/rs/PageRsSystemEss.qml index 3c14b2abc..7cc0a5da9 100644 --- a/pages/settings/devicelist/rs/PageRsSystemEss.qml +++ b/pages/settings/devicelist/rs/PageRsSystemEss.qml @@ -38,7 +38,7 @@ Page { ListButton { //% "Minimum SOC (unless grid fails)" text: qsTrId("settings_rs_ess_min_soc") - button.text: Units.getCombinedDisplayText(VenusOS.Units_Percentage, essMinSocItem.value) + secondaryText: Units.getCombinedDisplayText(VenusOS.Units_Percentage, essMinSocItem.value) preferredVisible: root.isModeOptimized onClicked: Global.dialogLayer.open(minSocDialogComponent) diff --git a/pages/solar/PageSolarParallelOperation.qml b/pages/solar/PageSolarParallelOperation.qml index bc27c5671..8a7516769 100644 --- a/pages/solar/PageSolarParallelOperation.qml +++ b/pages/solar/PageSolarParallelOperation.qml @@ -126,7 +126,7 @@ Page { ListButton { //% "BMS control" text: qsTrId("charger_network_bms_control") - button.text: CommonWords.reset + secondaryText: CommonWords.reset preferredVisible: bmsControlled.dataItem.value === 1 onClicked: { bmsControlled.dataItem.setValue(0) diff --git a/pages/vebusdevice/PageVeBusAdvanced.qml b/pages/vebusdevice/PageVeBusAdvanced.qml index 83e853995..e8cafc941 100644 --- a/pages/vebusdevice/PageVeBusAdvanced.qml +++ b/pages/vebusdevice/PageVeBusAdvanced.qml @@ -102,7 +102,7 @@ Page { ? qsTrId("vebus_device_interrupt_equalization") //% "Equalization" : qsTrId("vebus_device_equalization") - button.text: { + secondaryText: { if (interruptTimer.running) //% "Interrupting..." return qsTrId("vebus_device_interrupting") @@ -115,7 +115,10 @@ Page { //% "Press to start" return qsTrId("vebus_device_press_to_start") } - enabled: !isNaN(setChargerState.value) && !isNaN(vebusSubState.value) && !startTimer.running && !interruptTimer.running + interactive: !isNaN(setChargerState.value) && + !isNaN(vebusSubState.value) && + !startTimer.running && + !interruptTimer.running preferredVisible: root.isMulti onClicked: { @@ -196,7 +199,7 @@ Page { ListButton { //% "Redetect VE.Bus system" text: qsTrId("vebus_device_redectect_vebus_system") - button.text: redetectSystem.value === 1 + secondaryText: redetectSystem.value === 1 //% "Redetecting..." ? qsTrId("vebus_device_redetecting") //% "Press to redetect" @@ -208,7 +211,7 @@ Page { ListButton { //% "Restart VE.Bus system" text: qsTrId("vebus_device_restart_vebus_system") - button.text: systemReset.value === 1 + secondaryText: systemReset.value === 1 //% "Restarting..." ? qsTrId("vebus_device_restarting") //% "Press to restart" @@ -237,7 +240,7 @@ Page { //% "ESS Relay test" text: qsTrId("vebus_device_ess_relay_test") dataItem.uid: root.bindPrefix + "/Devices/0/ExtendStatus/WaitingForRelayTest" - enabled: false + interactive: false preferredVisible: dataItem.isValid && isEssOrHub4 && isMulti optionModel: [ //% "Completed" diff --git a/pages/vebusdevice/PageVeBusKwhCounters.qml b/pages/vebusdevice/PageVeBusKwhCounters.qml index c1ad50915..2c3e4e332 100644 --- a/pages/vebusdevice/PageVeBusKwhCounters.qml +++ b/pages/vebusdevice/PageVeBusKwhCounters.qml @@ -24,7 +24,7 @@ Page { ListRadioButtonGroup { text: "Power Type" dataItem.uid: service + "/Ac/PowerMeasurementType" - enabled: false + interactive: false optionModel: [ { display: "Apparent power, phase masters", value: 0 }, { display: "Real power, phase master, no snapshot", value: 1 },