2026-08-04 21:31:40 +05:30
|
|
|
import QtQuick
|
|
|
|
|
import QtQuick.Effects
|
|
|
|
|
import QtQuick.Controls
|
|
|
|
|
import QtQuick.Controls.Material
|
|
|
|
|
|
|
|
|
|
Popup {
|
|
|
|
|
id: settings_popup
|
|
|
|
|
signal saveConfig(config: var)
|
2026-09-23 17:36:00 +05:30
|
|
|
signal deleteConfig()
|
2026-08-04 21:31:40 +05:30
|
|
|
property color accent_color: "#00000000"
|
|
|
|
|
property int font_enlarged_text_size: 20
|
|
|
|
|
property int font_normal_text_size: 16
|
2026-09-23 17:36:00 +05:30
|
|
|
property color background_color: "#00000000"
|
2026-08-04 21:31:40 +05:30
|
|
|
property var config: {
|
|
|
|
|
"max": 0,
|
|
|
|
|
"min": 0,
|
|
|
|
|
"alert": 0,
|
|
|
|
|
"interval": 0,
|
2026-09-23 17:36:00 +05:30
|
|
|
"url": "none",
|
|
|
|
|
"water_tank_width": 2,
|
|
|
|
|
"water_tank_height": 1.3,
|
|
|
|
|
"rate_of_fill_enable": true,
|
|
|
|
|
"current_reading_enable": true,
|
|
|
|
|
"percentage_enable": true,
|
|
|
|
|
"filling_status_enable": true,
|
|
|
|
|
"expected_to_fill_enable": true,
|
|
|
|
|
"accent_color": "F05FAF5F",
|
|
|
|
|
"dark_accent_color": "FF5F7F5F",
|
|
|
|
|
"danger_color": "F0AF2F1F",
|
|
|
|
|
"water_color": "F00F7FAF",
|
|
|
|
|
"water_color_above_alert": "F00FAF0F",
|
|
|
|
|
"background_color": "1F1F1F",
|
|
|
|
|
"font_normal_text_size": 16,
|
|
|
|
|
"font_enlarged_text_size": 20
|
2026-08-04 21:31:40 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
background: Rectangle {
|
|
|
|
|
color: "#F0121212"
|
|
|
|
|
radius: 5
|
|
|
|
|
border.color: settings_popup.accent_color
|
|
|
|
|
border.width: 1
|
|
|
|
|
}
|
2026-08-12 14:32:54 +05:30
|
|
|
height: Math.max(parent.height / 1.6, contentHeight)
|
|
|
|
|
width: parent.width / 1.2
|
2026-08-04 21:31:40 +05:30
|
|
|
anchors.centerIn: Overlay.overlay
|
|
|
|
|
Rectangle {
|
|
|
|
|
id: settings_base
|
|
|
|
|
anchors.fill: parent
|
|
|
|
|
color: "#F0121212"
|
|
|
|
|
|
2026-09-23 17:36:00 +05:30
|
|
|
ScrollView {
|
|
|
|
|
id: rect_base_scroll_view
|
2026-08-04 21:31:40 +05:30
|
|
|
anchors {
|
|
|
|
|
top: parent.top
|
|
|
|
|
horizontalCenter: parent.horizontalCenter
|
2026-09-23 17:36:00 +05:30
|
|
|
bottom: save_config.top
|
|
|
|
|
bottomMargin: 10
|
2026-08-04 21:31:40 +05:30
|
|
|
}
|
2026-09-23 17:36:00 +05:30
|
|
|
width: parent.width
|
|
|
|
|
clip: true
|
2026-08-04 21:31:40 +05:30
|
|
|
|
2026-09-23 17:36:00 +05:30
|
|
|
// Use contentWidth and contentHeight to define the scrollable area
|
|
|
|
|
contentWidth: availableWidth
|
|
|
|
|
contentHeight: settings_column.height
|
2026-08-04 21:31:40 +05:30
|
|
|
|
2026-09-23 17:36:00 +05:30
|
|
|
Column {
|
|
|
|
|
id: settings_column
|
|
|
|
|
width: rect_base_scroll_view.width
|
|
|
|
|
spacing: 20
|
|
|
|
|
|
|
|
|
|
Text {
|
|
|
|
|
id: settings_label
|
|
|
|
|
text: "Settings"
|
|
|
|
|
width: parent.width
|
|
|
|
|
horizontalAlignment: Text.AlignHCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_enlarged_text_size
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Max Threshold
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Max Threshold: "
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: max_thres_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: max_thres_input
|
|
|
|
|
text: config.max
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Min Threshold
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Min Threshold: "
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: min_thres_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: min_thres_input
|
|
|
|
|
text: config.min
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Alert Threshold
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Alert Threshold: "
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: alert_thres_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: alert_thres_input
|
|
|
|
|
text: config.alert
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Update Interval
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Update Interval: "
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: interval_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: interval_input
|
|
|
|
|
text: config.interval
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// URL
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Url: "
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: http_url_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: http_url_input
|
|
|
|
|
text: config.url
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
cursorPosition: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Tank Image Width
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Tank Image Width"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: water_tank_width_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: water_tank_width_input
|
|
|
|
|
text: String(config.water_tank_width)
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
cursorPosition: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Tank Image Height
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Tank Image Height"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: water_tank_height_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: water_tank_height_input
|
|
|
|
|
text: String(config.water_tank_height)
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
cursorPosition: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Accent Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Accent Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: accent_color_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: accent_color_input
|
|
|
|
|
text: config.accent_color
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Dark Accent Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Dark Accent Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: dark_accent_color_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: dark_accent_color_input
|
|
|
|
|
text: config.dark_accent_color
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Danger Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Danger Text Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: danger_color_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: danger_color_input
|
|
|
|
|
text: config.danger_color
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Water Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Water Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: water_color_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: water_color_input
|
|
|
|
|
text: config.water_color
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Alert Water Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Alert Water Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: water_color_above_alert_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: water_color_above_alert_input
|
|
|
|
|
text: config.water_color_above_alert
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Background Color
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Backgound Color"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: background_color_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorInput {
|
|
|
|
|
id: background_color_input
|
|
|
|
|
text: config.background_color
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Normal Font Size
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Font Size"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: font_normal_text_size_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: font_normal_text_size_input
|
|
|
|
|
text: String(config.font_normal_text_size)
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
cursorPosition: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Header Font Size
|
|
|
|
|
Row {
|
|
|
|
|
width: parent.width
|
|
|
|
|
spacing: 10
|
|
|
|
|
Text {
|
|
|
|
|
text: "Header Font Size"
|
|
|
|
|
width: parent.width * 0.4
|
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
anchors {
|
|
|
|
|
verticalCenter: font_enlarged_text_size_input.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TextField {
|
|
|
|
|
id: font_enlarged_text_size_input
|
|
|
|
|
text: String(config.font_enlarged_text_size)
|
|
|
|
|
width: parent.width * 0.55
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_normal_text_size
|
|
|
|
|
cursorPosition: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckBox
|
|
|
|
|
CustomCheckBox {
|
|
|
|
|
id: current_reading_enable
|
|
|
|
|
checked: config.current_reading_enable
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_point_size: settings_popup.font_normal_text_size
|
|
|
|
|
text: "Enable Current Reading"
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckBox
|
|
|
|
|
CustomCheckBox {
|
|
|
|
|
id: percentage_enable
|
|
|
|
|
checked: config.percentage_enable
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_point_size: settings_popup.font_normal_text_size
|
|
|
|
|
text: "Enable Percentage Reading"
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckBox
|
|
|
|
|
CustomCheckBox {
|
|
|
|
|
id: filling_status_enable
|
|
|
|
|
checked: config.filling_status_enable
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_point_size: settings_popup.font_normal_text_size
|
|
|
|
|
text: "Enable Filling Status"
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckBox
|
|
|
|
|
CustomCheckBox {
|
|
|
|
|
id: rate_of_fill_enable
|
|
|
|
|
checked: config.rate_of_fill_enable
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_point_size: settings_popup.font_normal_text_size
|
|
|
|
|
text: "Enable Text Rate of Fill"
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// CheckBox
|
|
|
|
|
CustomCheckBox {
|
|
|
|
|
id: expected_to_fill_enable
|
|
|
|
|
checked: config.expected_to_fill_enable
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_point_size: settings_popup.font_normal_text_size
|
|
|
|
|
text: "Enable Expected to fill"
|
|
|
|
|
leftPadding: 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConnectButton {
|
|
|
|
|
id: delete_config_button
|
|
|
|
|
width: parent.width / 1.5
|
|
|
|
|
height: 80
|
|
|
|
|
anchors {
|
|
|
|
|
horizontalCenter: parent.horizontalCenter
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
font_color: settings_popup.accent_color
|
|
|
|
|
font_enlarged_text_size: settings_popup.font_enlarged_text_size
|
|
|
|
|
font_normal_text_size: settings_popup.font_normal_text_size
|
|
|
|
|
color: settings_popup.background_color
|
|
|
|
|
accent_color: settings_popup.accent_color
|
|
|
|
|
text: "Delete/Reset Config"
|
|
|
|
|
text2: text
|
|
|
|
|
onConnect: {
|
|
|
|
|
settings_popup.deleteConfig();
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-08-04 21:31:40 +05:30
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Rectangle {
|
|
|
|
|
id: save_config
|
|
|
|
|
anchors {
|
|
|
|
|
topMargin: 10
|
|
|
|
|
bottom: parent.bottom
|
|
|
|
|
horizontalCenter: parent.horizontalCenter
|
|
|
|
|
}
|
|
|
|
|
color: "#F0121212"
|
|
|
|
|
width: parent.width / 1.3
|
|
|
|
|
height: 60
|
|
|
|
|
border {
|
|
|
|
|
width: 1
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
}
|
|
|
|
|
radius: 3
|
|
|
|
|
|
|
|
|
|
Text {
|
|
|
|
|
anchors.centerIn: parent
|
|
|
|
|
text: "Save"
|
|
|
|
|
color: settings_popup.accent_color
|
|
|
|
|
font.pointSize: settings_popup.font_enlarged_text_size
|
|
|
|
|
}
|
|
|
|
|
MouseArea {
|
|
|
|
|
anchors.fill: parent
|
|
|
|
|
hoverEnabled: true
|
|
|
|
|
property color settings_rect_pressed_prev: "#00000000"
|
|
|
|
|
property color settings_rect_entered_prev: "#00000000"
|
|
|
|
|
onEntered: {
|
|
|
|
|
settings_rect_entered_prev = save_config.color
|
|
|
|
|
save_config.color = "#5A1F1F1F"
|
|
|
|
|
}
|
|
|
|
|
onExited: {
|
|
|
|
|
save_config.color = settings_rect_entered_prev
|
|
|
|
|
}
|
|
|
|
|
onPressed: {
|
|
|
|
|
settings_rect_pressed_prev = save_config.color
|
|
|
|
|
save_config.color = "#5A1F4F1F"
|
|
|
|
|
let max = parseFloat(max_thres_input.text);
|
|
|
|
|
let min = parseFloat(min_thres_input.text);
|
|
|
|
|
let alert = parseFloat(alert_thres_input.text);
|
|
|
|
|
let url = http_url_input.text;
|
|
|
|
|
let interval = parseInt(interval_input.text);
|
2026-09-23 17:36:00 +05:30
|
|
|
let image_width = parseFloat(water_tank_width_input.text);
|
|
|
|
|
let image_height = parseFloat(water_tank_height_input.text);
|
2026-09-23 18:06:00 +05:30
|
|
|
|
2026-09-23 17:36:00 +05:30
|
|
|
let current_reading = current_reading_enable.checked;
|
|
|
|
|
let percentage_reading = percentage_enable.checked
|
|
|
|
|
let filling_status = filling_status_enable.checked;
|
|
|
|
|
let rate_of_fill = rate_of_fill_enable.checked;
|
|
|
|
|
let expected_to_fill = expected_to_fill_enable.checked;
|
|
|
|
|
|
|
|
|
|
let normal_font_size = parseInt(font_normal_text_size_input.text);
|
|
|
|
|
let enlarged_font_size = parseInt(font_enlarged_text_size_input.text);
|
|
|
|
|
|
|
|
|
|
let accent_color = accent_color_input.text;
|
|
|
|
|
let dark_accent_color = dark_accent_color_input.text;
|
|
|
|
|
let danger_color = danger_color_input.text;
|
|
|
|
|
let water_color = water_color_input.text;
|
|
|
|
|
let water_color_above_alert = water_color_above_alert_input.text;
|
|
|
|
|
let background_color = background_color_input.text;
|
|
|
|
|
|
|
|
|
|
var new_config = {"max": max, "min": min, "alert": alert, "url": url,
|
|
|
|
|
"interval": interval,
|
|
|
|
|
"water_tank_height": image_height,
|
|
|
|
|
"water_tank_width": image_width,
|
|
|
|
|
"current_reading_enable": current_reading,
|
|
|
|
|
"percentage_enable": percentage_reading,
|
|
|
|
|
"filling_status_enable": filling_status,
|
|
|
|
|
"rate_of_fill_enable": rate_of_fill,
|
|
|
|
|
"expected_to_fill_enable": expected_to_fill,
|
|
|
|
|
"font_normal_text_size": normal_font_size,
|
|
|
|
|
"font_enlarged_text_size": enlarged_font_size,
|
|
|
|
|
"accent_color": accent_color,
|
|
|
|
|
"dark_accent_color": dark_accent_color,
|
|
|
|
|
"danger_color": danger_color,
|
|
|
|
|
"water_color": water_color,
|
|
|
|
|
"water_color_above_alert": water_color_above_alert,
|
|
|
|
|
"background_color": background_color
|
|
|
|
|
}
|
2026-08-04 21:31:40 +05:30
|
|
|
settings_popup.saveConfig(new_config)
|
|
|
|
|
settings_popup.close();
|
|
|
|
|
}
|
|
|
|
|
onReleased: {
|
|
|
|
|
save_config.color = settings_rect_pressed_prev
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|