QoL Fixes and Changes

This commit is contained in:
unrealdragon 2026-09-23 17:36:00 +05:30
commit 93995959d0

155
Main.qml
View file

@ -5,8 +5,8 @@ import QtQuick.Controls
import QtQuick.Controls.Material
Window {
width: 640
height: 1080
width: 960
height: 1400
visible: true
title: qsTr("Water Level Rewrite")
id: root
@ -24,12 +24,36 @@ Window {
property string status: "Initializing"
property string connection_text_string: "Reading WiFi Status..."
property string alarm_status_text: ""
property double water_tank_height_factor: 1.3
property double water_tank_width_factor: 2
property var root_config: ({})
property var base_config: {
"max": 0,
"min": 0,
"alert": 0,
"interval": 0,
"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
}
Rectangle {
anchors.fill: parent
color: root.background_color
id: root_rect
Rectangle {
id: top_bar
height: Math.min(root.height / 12, 100)
@ -41,6 +65,7 @@ Window {
}
color: "#0A0F0F0F"
SettingsBarIcon {
id: settings_icon
height: top_bar.height - 20
width: height
anchors {
@ -57,12 +82,40 @@ Window {
settings_popup.open()
}
}
SettingsBarIcon {
height: top_bar.height - 20
width: height
anchors {
top: parent.top
left: parent.left
bottomMargin: 5
topMargin: 10
leftMargin: 5
}
text: "🖹"
color: "#0A0F0F0F"
radius: 100
accent_color: root.accent_color
onOpen: {
request_response_popup.open()
}
}
}
RequestResponsePopup {
id: request_response_popup
accent_color: root.accent_color
font_enlarged_text_size: 20
}
SettingsPopup {
id: settings_popup
accent_color: root.accent_color
font_enlarged_text_size: 20
background_color: root.background_color
font_enlarged_text_size: root.font_enlarged_text_size
font_normal_text_size: root.font_normal_text_size
function setConfig(new_config: var) {
settings_popup.config.max = new_config.max
settings_popup.config.min = new_config.min
@ -73,6 +126,9 @@ Window {
console.log("Saving config: ", config)
config_interface.saveConfig(config);
}
onDeleteConfig: () => {
config_interface.deleteConfig();
}
}
Text {
@ -80,7 +136,6 @@ Window {
anchors {
top: top_bar.bottom
topMargin: 20
bottom: tank.top
horizontalCenter: parent.horizontalCenter
}
text: root.connection_text_string
@ -91,20 +146,24 @@ Window {
WaterTank {
id: tank
anchors {
top: top_bar.bottom
top: connection_text.bottom
horizontalCenter: parent.horizontalCenter
topMargin: 100
topMargin: 40
}
height: (parent.height - top_bar.height) / 2
width: parent.width / 2.2
height: (root_rect.height) / root.water_tank_height_factor
width: root_rect.width / root.water_tank_width_factor
base_color: root.background_color
distance: 0
tank_lid_color: "#F0121212"
tank_base_color: "#0FFFFFFF"
water_level_color: "#F00F7FAF"
water_level_color: root.water_color
tank_base_border_color: "#F0121212"
water_color_above_alert: root.water_color_above_alert
min_thres_input: 0
max_thres_input: 0
text_color: root.accent_color
font_normal_text_size: root.font_normal_text_size
font_enlarged_text_size: root.font_enlarged_text_size
}
@ -194,7 +253,7 @@ Window {
if(start_alarm.mode === 0)
{
requester.startAlarm();
root.alarm_status_text = "Started Alarm; Waiting for Trigger: " + root.root_config.alert + "%"
root.alarm_status_text = "Started Alarm; Waiting for Trigger: " + root.root_config.alert
}
else {
requester.stopAlarm();
@ -213,14 +272,16 @@ Window {
onStatusChanged: () => {
root.status = requester.status;
}
onNetworkReply: (water_level, fill_rate, expected) => {
onNetworkReply: (water_level, fill_rate, expected, data) => {
tank.setDistance(water_level);
tank.rate_of_fill = fill_rate;
tank.expected_to_fill = expected;
status.color = root.accent_color;
request_response_popup.request_response_string = data;
}
onRequestFailed: () => {
onRequestFailed: (data) => {
status.color = root.danger_color;
request_response_popup.request_response_string = data;
}
onConnectionText: (text, error) => {
@ -238,17 +299,83 @@ Window {
id: config_interface
fileName: "config.json"
onConfig: (config) => {
settings_popup.config = config
settings_popup.config = config;
console.log("Loading initial config");
setConfig(config);
if(root.status === "Initializing") {
root.status = "Press Connect.";
}
}
onConfigDeleted: () => {
let config = base_config;
settings_popup.config = config;
console.log("Loading initial config");
setConfig(config);
if(root.status === "Initializing") {
root.status = "Press Connect.";
}
}
function setConfig(config) {
tank.setConfig(config);
requester.setConfig(config);
root.root_config = config;
if(config.water_tank_height === undefined) {
config.water_tank_height = 2
}
if(config.water_tank_width === undefined) {
config.water_tank_width = 2.2
}
if(config.rate_of_fill_enable === undefined) {
config.rate_of_fill_enable = true
}
if(config.current_reading_enable === undefined) {
config.current_reading_enable = true
}
if(config.percentage_enable === undefined) {
config.percentage_enable = true
}
if(config.filling_status_enable === undefined) {
config.filling_status_enable = true
}
if(config.expected_to_fill_enable === undefined) {
config.expected_to_fill_enable = true
}
if(config.font_enlarged_text_size === undefined) {
config.font_enlarged_text_size = 20
}
if(config.font_normal_text_size === undefined) {
config.font_normal_text_size = 16
}
if(config.accent_color === undefined) {
config.accent_color = "F05FAF5F"
}
if(config.danger_color === undefined) {
config.danger_color = "F0AF2F1F"
}
if(config.dark_accent_color === undefined) {
config.dark_accent_color = "FF5F7F5F"
}
if(config.water_color === undefined) {
config.water_color = "F00F7FAF"
}
if(config.water_color_above_alert === undefined) {
config.water_color_above_alert = "F00FAF0F"
}
if(config.background_color === undefined) {
config.background_color = "1F1F1F"
}
root.water_tank_height_factor = config.water_tank_height
root.water_tank_width_factor = config.water_tank_width
root.accent_color = "#" + config.accent_color
root.danger_color = "#" + config.danger_color
root.dark_accent_color = "#" + config.dark_accent_color
root.water_color = "#" + config.water_color
root.water_color_above_alert = "#" + config.water_color_above_alert
root.background_color = "#" + config.background_color
root.font_enlarged_text_size = config.font_enlarged_text_size
root.font_normal_text_size = config.font_normal_text_size
}
}
onClosing: {