diff options
author | suchinton2001 <suchinton.2001@gmail.com> | 2023-10-20 15:50:09 +0530 |
---|---|---|
committer | suchinton2001 <suchinton.2001@gmail.com> | 2023-10-23 00:19:17 +0530 |
commit | 9af16ad7272f4e1d068004fc4443db5d14f89b3c (patch) | |
tree | 79871060d0157332ca971fcbe1c86f02f61419fa | |
parent | 20fe2d131df0041e121eccaf4fc58d4ac88dfbbc (diff) |
agl-demo-control-panel: Fix Svg icons scaling on Dashboard
V1:
- Use QtSvg to set icons for dashboard icons
- Update Readme and install_package script for docker image
V2: Clean up code and improve formatting
V3:
- Increase font size for UI files
- Fix HVAC bug, Control panel no longer
crashes when Temp goes out of range
- Refactor blocking subscription updates when CP in use
Bug-AGL: SPEC-4939
Signed-off-by: suchinton2001 <suchinton.2001@gmail.com>
Change-Id: I4f256d29fac614dd3e3c4193c2a08b230359906e
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | Widgets/Dashboard.py | 62 | ||||
-rw-r--r-- | Widgets/HVACPage.py | 58 | ||||
-rw-r--r-- | Widgets/ICPage.py | 71 | ||||
-rw-r--r-- | Widgets/SteeringCtrlPage.py | 67 | ||||
-rw-r--r-- | Widgets/settings.py | 65 | ||||
-rwxr-xr-x | docker/install_packages.sh | 3 | ||||
-rw-r--r-- | extras/FeedCAN.py | 11 | ||||
-rw-r--r-- | extras/FeedKuksa.py | 23 | ||||
-rw-r--r-- | extras/Kuksa_Instance.py | 7 | ||||
-rw-r--r-- | extras/UI_Handeler.py | 58 | ||||
-rw-r--r-- | main.py | 94 | ||||
-rw-r--r-- | ui/Dashboard.ui | 293 | ||||
-rw-r--r-- | ui/HVAC.ui | 1558 | ||||
-rw-r--r-- | ui/IC.ui | 1751 | ||||
-rw-r--r-- | ui/Settings_Window.ui | 154 | ||||
-rw-r--r-- | ui/SteeringControls.ui | 697 |
17 files changed, 2656 insertions, 2318 deletions
@@ -19,7 +19,7 @@ A PyQt5 application to simulate CAN Bus signals using Kuksa.val for the AGL Demo ```bash $ nano requirements.txt # -> Comment pyqt5 dependency using "#" - $ sudo apt install python3-pyqt5 python3-qtpy pyqt5-dev-tools + $ sudo apt install python3-pyqt5 python3-qtpy pyqt5-dev-tools python3-pyqt5.qtsvg -y ``` and skip to step 2 diff --git a/Widgets/Dashboard.py b/Widgets/Dashboard.py index e7e17a6..8b6a11f 100644 --- a/Widgets/Dashboard.py +++ b/Widgets/Dashboard.py @@ -14,12 +14,18 @@ limitations under the License. """ +from PyQt5 import QtCore, QtGui, QtWidgets +from extras.FeedKuksa import FeedKuksa import os import sys from PyQt5 import uic -from PyQt5 import QtWidgets +from PyQt5 import QtWidgets +from PyQt5.QtWidgets import * +from PyQt5.QtSvg import * from PyQt5.QtCore import pyqtSignal -from PyQt5 import QtCore, QtGui +from PyQt5.QtGui import QIcon +from PyQt5 import QtCore +from PyQt5 import QtSvg current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -27,14 +33,11 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(current_dir)) -from extras.FeedKuksa import FeedKuksa Form, Base = uic.loadUiType(os.path.join(current_dir, "../ui/Dashboard.ui")) # ======================================== -from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtCore import pyqtSignal class Dashboard(Base, Form): """ @@ -64,33 +67,34 @@ class Dashboard(Base, Form): self.feed_kuksa = FeedKuksa() Dashboard_tiles = (self.DB_IC_Tile, - self.DB_HVAC_Tile, - self.DB_Steering_Tile, - self.DB_Settings_Tile) + self.DB_HVAC_Tile, + self.DB_Steering_Tile, + self.DB_Settings_Tile) DashboardTiles = QtWidgets.QButtonGroup(self) - + DashboardTiles.buttonClicked.connect(self.tile_clicked) for i, tile in enumerate(Dashboard_tiles): - self.set_icon(tile, 55) + self.set_icon(tile, 90) DashboardTiles.addButton(tile) - def set_icon(self, tile, size): - """ - Sets the icon for the given tile. - - Parameters: - - tile: The tile for which the icon needs to be set. - - size: The size of the icon. - """ + def set_icon(self, tile, icon_size): try: - icon = tile.icon() - if icon.availableSizes(): - pixmap = icon.pixmap(icon.availableSizes()[0]) - scaled_pixmap = pixmap.scaled(size, size, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) - tile.setIcon(QtGui.QIcon(scaled_pixmap)) - tile.setIconSize(QtCore.QSize(size, size)) + if tile == self.DB_IC_Tile: + file = ":/Carbon_Icons/carbon_icons/meter.svg" + if tile == self.DB_HVAC_Tile: + file = ":/Carbon_Icons/carbon_icons/windy--strong.svg" + if tile == self.DB_Steering_Tile: + file = ":/Images/Images/steering-wheel.svg" + if tile == self.DB_Settings_Tile: + file = ":/Carbon_Icons/carbon_icons/settings.svg" + getsize = QtSvg.QSvgRenderer(file) + svg_widget = QtSvg.QSvgWidget(file) + svg_widget.setFixedSize(getsize.defaultSize()*2) + svg_widget.setStyleSheet("background-color: transparent;") + tile.setIcon(QIcon(svg_widget.grab())) + tile.setIconSize(QtCore.QSize(icon_size, icon_size)) except Exception as e: print(f"Failed to set icon: {e}") @@ -110,4 +114,12 @@ class Dashboard(Base, Form): elif tile == self.DB_Settings_Tile: self.parent().setCurrentIndex(4) - self.tileClickedSignal.emit()
\ No newline at end of file + self.tileClickedSignal.emit() + + +if __name__ == '__main__': + import sys + app = QApplication(sys.argv) + w = Dashboard() + w.show() + sys.exit(app.exec_())
\ No newline at end of file diff --git a/Widgets/HVACPage.py b/Widgets/HVACPage.py index 312f82b..56d7f8b 100644 --- a/Widgets/HVACPage.py +++ b/Widgets/HVACPage.py @@ -14,6 +14,7 @@ limitations under the License. """ +from extras.FeedKuksa import FeedKuksa import os import sys from PyQt5 import uic @@ -25,12 +26,12 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(current_dir)) -from extras.FeedKuksa import FeedKuksa Form, Base = uic.loadUiType(os.path.join(current_dir, "../ui/HVAC.ui")) # ======================================== + class HVAC_Paths(): def __init__(self): self.leftTemp = "Vehicle.Cabin.HVAC.Station.Row1.Left.Temperature" @@ -38,9 +39,10 @@ class HVAC_Paths(): self.rightTemp = "Vehicle.Cabin.HVAC.Station.Row1.Right.Temperature" self.rightFanSpeed = "Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed" - # temperatureList contains values from 32 to 16 + # temperatureList contains values from 32 to 16 self.temperatureList = [str(i) + "°C" for i in range(32, 15, -1)] + class HVACWidget(Base, Form): """ A widget for controlling HVAC settings. @@ -58,42 +60,52 @@ class HVACWidget(Base, Form): super(self.__class__, self).__init__(parent) self.setupUi(self) - + self.HVAC = HVAC_Paths() self.feed_kuksa = FeedKuksa() - + self.leftTempList = self.findChild(QListWidget, "leftTempList") self.leftTempList.addItems(self.HVAC.temperatureList) self.leftTempList.setCurrentRow(0) self.leftTempList.itemClicked.connect(self.leftTempListClicked) - self.leftTempList.itemSelectionChanged.connect(self.leftTempListClicked) + self.leftTempList.itemSelectionChanged.connect( + self.leftTempListClicked) self.leftTempList.wheelEvent = lambda event: None self.rightTempList = self.findChild(QListWidget, "rightTempList") self.rightTempList.addItems(self.HVAC.temperatureList) self.rightTempList.setCurrentRow(0) self.rightTempList.itemClicked.connect(self.rightTempListClicked) - self.rightTempList.itemSelectionChanged.connect(self.rightTempListClicked) + self.rightTempList.itemSelectionChanged.connect( + self.rightTempListClicked) self.rightTempList.wheelEvent = lambda event: None self.leftTempUp = self.findChild(QPushButton, "leftTempUp") - self.leftTempUp.clicked.connect(lambda: self.leftTempList.setCurrentRow(self.leftTempList.currentRow() - 1)) + self.leftTempUp.clicked.connect( + lambda: self.leftTempList.setCurrentRow(self.leftTempList.currentRow() - 1)) self.leftTempDown = self.findChild(QPushButton, "leftTempDown") - self.leftTempDown.clicked.connect(lambda: self.leftTempList.setCurrentRow(self.leftTempList.currentRow() + 1)) + self.leftTempDown.clicked.connect( + lambda: self.leftTempList.setCurrentRow(self.leftTempList.currentRow() + 1)) self.rightTempUp = self.findChild(QPushButton, "rightTempUp") - self.rightTempUp.clicked.connect(lambda: self.rightTempList.setCurrentRow(self.rightTempList.currentRow() - 1)) + self.rightTempUp.clicked.connect( + lambda: self.rightTempList.setCurrentRow(self.rightTempList.currentRow() - 1)) self.rightTempDown = self.findChild(QPushButton, "rightTempDown") - self.rightTempDown.clicked.connect(lambda: self.rightTempList.setCurrentRow(self.rightTempList.currentRow() + 1)) + self.rightTempDown.clicked.connect( + lambda: self.rightTempList.setCurrentRow(self.rightTempList.currentRow() + 1)) - self.leftFanSpeed_slider = self.findChild(QSlider, "leftFanSpeed_slider") - self.leftFanSpeed_slider.valueChanged.connect(self.leftFanSpeed_sliderChanged) + self.leftFanSpeed_slider = self.findChild( + QSlider, "leftFanSpeed_slider") + self.leftFanSpeed_slider.valueChanged.connect( + self.leftFanSpeed_sliderChanged) - self.rightFanSpeed_slider = self.findChild(QSlider, "rightFanSpeed_slider") - self.rightFanSpeed_slider.valueChanged.connect(self.rightFanSpeed_sliderChanged) + self.rightFanSpeed_slider = self.findChild( + QSlider, "rightFanSpeed_slider") + self.rightFanSpeed_slider.valueChanged.connect( + self.rightFanSpeed_sliderChanged) def leftTempListClicked(self): """ @@ -101,10 +113,7 @@ class HVACWidget(Base, Form): Sends the selected temperature value to the feed_kuksa object. """ - item = self.leftTempList.currentItem() - self.leftTempList.scrollToItem(item, 1) - self.feed_kuksa.send_values(self.HVAC.leftTemp, item.text()[:-2]) - print(item.text()) + self.setTemperature(self.leftTempList, self.HVAC.leftTemp) def rightTempListClicked(self): """ @@ -112,10 +121,14 @@ class HVACWidget(Base, Form): Sends the selected temperature value to the feed_kuksa object. """ - item = self.rightTempList.currentItem() - self.rightTempList.scrollToItem(item, 1) - self.feed_kuksa.send_values(self.HVAC.rightTemp, item.text()[:-2]) - print(item.text()) + self.setTemperature(self.rightTempList, self.HVAC.rightTemp) + + def setTemperature(self, list_widget, path): + item = list_widget.currentItem() + if item is not None: + list_widget.scrollToItem(item, 1) + self.feed_kuksa.send_values(path, item.text()[:-2]) + print(item.text()) def leftFanSpeed_sliderChanged(self): """ @@ -137,6 +150,7 @@ class HVACWidget(Base, Form): self.feed_kuksa.send_values(self.HVAC.rightFanSpeed, str(value)) print(value) + if __name__ == '__main__': import sys app = QApplication(sys.argv) diff --git a/Widgets/ICPage.py b/Widgets/ICPage.py index 2d11cdf..d4d6592 100644 --- a/Widgets/ICPage.py +++ b/Widgets/ICPage.py @@ -14,6 +14,7 @@ limitations under the License. """ +from extras.FeedKuksa import FeedKuksa import os import sys from PyQt5 import uic, QtCore, QtWidgets @@ -24,6 +25,7 @@ import time from PyQt5.QtWidgets import QWidget from qtwidgets import AnimatedToggle import threading +import logging current_dir = os.path.dirname(os.path.abspath(__file__)) @@ -31,7 +33,6 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(current_dir)) -from extras.FeedKuksa import FeedKuksa Form, Base = uic.loadUiType(os.path.join(current_dir, "../ui/IC.ui")) @@ -65,9 +66,9 @@ class ICWidget(Base, Form): """ super(self.__class__, self).__init__(parent) self.setupUi(self) - + self.IC = IC_Paths() - #self.vehicle_simulator = VehicleSimulator(self) + # self.vehicle_simulator = VehicleSimulator(self) self.feed_kuksa = FeedKuksa() self.feed_kuksa.start() @@ -142,8 +143,10 @@ class ICWidget(Base, Form): """ speed = int(self.Speed_slider.value()) self.Speed_monitor.display(speed) - try: self.feed_kuksa.send_values(self.IC.speed, str(speed), 'value') - except Exception as e: print(e) + try: + self.feed_kuksa.send_values(self.IC.speed, str(speed), 'value') + except Exception as e: + logging.error(f"Error sending values to kuksa {e}") def update_RPM_monitor(self): """ @@ -151,24 +154,31 @@ class ICWidget(Base, Form): """ rpm = int(self.RPM_slider.value()) self.RPM_monitor.display(rpm) - try: self.feed_kuksa.send_values(self.IC.engineRPM, str(rpm), 'value') - except Exception as e: print(e) + try: + self.feed_kuksa.send_values(self.IC.engineRPM, str(rpm), 'value') + except Exception as e: + logging.error(f"Error sending values to kuksa {e}") def update_coolantTemp_monitor(self): """ Updates the coolant temperature monitor with the current coolant temperature value. """ coolantTemp = int(self.coolantTemp_slider.value()) - try: self.feed_kuksa.send_values(self.IC.coolantTemp, str(coolantTemp), 'value') - except Exception as e: print(e) + try: + self.feed_kuksa.send_values( + self.IC.coolantTemp, str(coolantTemp), 'value') + except Exception as e: + logging.error(f"Error sending values to kuksa {e}") def update_fuelLevel_monitor(self): """ Updates the fuel level monitor with the current fuel level value. """ fuelLevel = int(self.fuelLevel_slider.value()) - try: self.feed_kuksa.send_values(self.IC.fuelLevel, str(fuelLevel)) - except Exception as e: print(e) + try: + self.feed_kuksa.send_values(self.IC.fuelLevel, str(fuelLevel)) + except Exception as e: + logging.error(f"Error sending values to kuksa {e}") def hazardBtnClicked(self): """ @@ -192,13 +202,12 @@ class ICWidget(Base, Form): self.leftIndicatorBtn.setChecked(self.hazardBtn.isChecked()) self.rightIndicatorBtn.setChecked(self.hazardBtn.isChecked()) - try: + try: self.feed_kuksa.send_values(self.IC.leftIndicator, value) self.feed_kuksa.send_values(self.IC.rightIndicator, value) self.feed_kuksa.send_values(self.IC.hazard, value) except Exception as e: - print(e) - + logging.error(f"Error sending values to kuksa {e}") def leftIndicatorBtnClicked(self): """ @@ -219,8 +228,10 @@ class ICWidget(Base, Form): painter.end() self.leftIndicatorBtn.setIcon(QIcon(leftIndicatorIcon)) - try: self.feed_kuksa.send_values(self.IC.leftIndicator, value) - except Exception as e: print(e) + try: + self.feed_kuksa.send_values(self.IC.leftIndicator, value) + except Exception as e: + logging.error(f"Error sending values to kuksa {e}") def rightIndicatorBtnClicked(self): """ @@ -241,11 +252,10 @@ class ICWidget(Base, Form): painter.end() self.rightIndicatorBtn.setIcon(QIcon(rightIndicatorIcon)) - try: + try: self.feed_kuksa.send_values(self.IC.rightIndicator, value) except Exception as e: - print(e) - + logging.error(f"Error sending values to kuksa {e}") def accelerationBtnPressed(self): """ @@ -309,9 +319,9 @@ class ICWidget(Base, Form): self.reverseBtn: "-1", self.neutralBtn: "0" } - + checked_button = self.driveGroupBtns.checkedButton() - + if checked_button in gear_mapping: gear_value = gear_mapping[checked_button] self.accelerationBtn.setEnabled(True) @@ -320,10 +330,11 @@ class ICWidget(Base, Form): try: self.feed_kuksa.send_values(self.IC.selectedGear, gear_value) except Exception as e: - print(e) + logging.error(f"Error sending values to kuksa {e}") else: print("Unknown button checked!") + class AccelerationFns(): def calculate_speed(time, acceleration) -> int: # acceleration = 60 / 5 # acceleration from 0 to 60 in 5 seconds @@ -353,7 +364,8 @@ class AccelerationFns(): engine_rpm = wheel_rps * gear_ratios[current_gear - 1] * 60 return int(engine_rpm) - + + class VehicleSimulator(QObject): # Define signals for updating speed and rpm speed_changed = pyqtSignal(int) @@ -399,11 +411,11 @@ class VehicleSimulator(QObject): self.brake(40, 2000, 4) self.accelerate(90, 3000, 5) self.brake(1, 650, 5) - + # Ensure reset is called when not in cruise mode if not self.running: self.reset() - + time.sleep(5) def accelerate(self, target_speed, target_rpm, duration): @@ -432,19 +444,19 @@ class VehicleSimulator(QObject): self.rpm_changed.emit(int(self.engine_speed)) time.sleep(1 / self.freq) - def increase(self, bycruise = True): + def increase(self, bycruise=True): if self.CRUISEACTIVE: target_speed = self.vehicle_speed + 5 target_rpm = self.engine_speed * 1.1 self.accelerate(target_speed, target_rpm, 2, bycruise) - def decrease(self, bycruise = True): + def decrease(self, bycruise=True): if self.CRUISEACTIVE: target_speed = self.vehicle_speed - 5 target_rpm = self.engine_speed * 0.9 self.brake(target_speed, target_rpm, 2, bycruise) - def resume(self, bycruise = True): + def resume(self, bycruise=True): target_speed = self.CRUISESPEED target_rpm = self.CRUISERPM current_speed = self.get_vehicle_speed() @@ -453,8 +465,9 @@ class VehicleSimulator(QObject): else: self.brake(target_speed, target_rpm, 2, bycruise) + if __name__ == '__main__': app = QApplication(sys.argv) w = ICWidget() w.show() - sys.exit(app.exec_())
\ No newline at end of file + sys.exit(app.exec_()) diff --git a/Widgets/SteeringCtrlPage.py b/Widgets/SteeringCtrlPage.py index de3585d..a610f9b 100644 --- a/Widgets/SteeringCtrlPage.py +++ b/Widgets/SteeringCtrlPage.py @@ -14,6 +14,9 @@ limitations under the License. """ +from . import settings +import extras.FeedCAN as feed_can +from extras.FeedKuksa import FeedKuksa import os import sys from PyQt5 import uic @@ -25,78 +28,78 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(current_dir)) -from extras.FeedKuksa import FeedKuksa -import extras.FeedCAN as feed_can -from . import settings -Form, Base = uic.loadUiType(os.path.join(current_dir, "../ui/SteeringControls.ui")) +Form, Base = uic.loadUiType(os.path.join( + current_dir, "../ui/SteeringControls.ui")) # ======================================== + class Steering_Paths(): def __init__(self): self.switches = { "VolumeUp": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeUp", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeUp", "CAN": "021#FFFFFFFF40000000"}, "VolumeDown": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeDown", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeDown", "CAN": "021#FFFFFFFF10000000"}, "VolumeMute": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeMute", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.VolumeMute", "CAN": "021#FFFFFFFF01000000"}, "Mode": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Mode", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Mode", "CAN": "021#FFFFFFFF20000000"}, "NextTrack": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Next", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Next", "CAN": "021#FFFFFFFF08000000"}, "PreviousTrack": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Previous", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Previous", "CAN": "021#FFFFFFFF80000000"}, "Info": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Info", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Info", "CAN": "021#FFFFFFFF02000000"}, "PhoneCall": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.PhoneCall", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.PhoneCall", "CAN": "021#FFFFFFFF00010000"}, "PhoneHangup": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup", "CAN": "021#FFFFFFFF00020000"}, "Voice": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Voice", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Voice", "CAN": "021#FFFFFFFF00040000"}, "LaneDeparture": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning", "CAN": "021#FFFFFFFF00000001"}, "Horn": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Horn", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.Horn", "CAN": "021#FFFFFFFF00000080"}, "CruiseEnable": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable", "CAN": "021#FFFFFFFF00008000"}, "CruiseSet": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseSet", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseSet", "CAN": "021#FFFFFFFF00001000"}, "CruiseResume": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseResume", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseResume", "CAN": "021#FFFFFFFF00004000"}, "CruiseCancel": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel", "CAN": "021#FFFFFFFF00000800"}, "CruiseLimit": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit", "CAN": "021#FFFFFFFF00000200"}, "CruiseDistance": { - "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance", + "Kuksa": "Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance", "CAN": "021#FFFFFFFF00000100"} } - + + class SteeringCtrlWidget(Base, Form): def __init__(self, parent=None): super(self.__class__, self).__init__(parent) self.setupUi(self) - + self.Steering = Steering_Paths() self.feed_kuksa = FeedKuksa() self.settings = settings @@ -113,9 +116,9 @@ class SteeringCtrlWidget(Base, Form): self.NextTrack, self.PreviousTrack, self.Info, - self.PhoneCall, + self.PhoneCall, self.PhoneHangup, - self.Voice, + self.Voice, self.LaneDeparture, self.Horn, self.CruiseEnable, @@ -136,16 +139,20 @@ class SteeringCtrlWidget(Base, Form): button_clicked = button.objectName() signal_type = settings.Steering_Signal_Type if signal_type == "Kuksa": - self.feed_kuksa.send_values(self.Steering.switches[button_clicked]["Kuksa"], "1") - self.feed_kuksa.send_values(self.Steering.switches[button_clicked]["Kuksa"], "0") + self.feed_kuksa.send_values( + self.Steering.switches[button_clicked]["Kuksa"], "1") + self.feed_kuksa.send_values( + self.Steering.switches[button_clicked]["Kuksa"], "0") elif signal_type == "CAN": - feed_can.send_can_signal(self.Steering.switches[button_clicked]["CAN"]) + feed_can.send_can_signal( + self.Steering.switches[button_clicked]["CAN"]) # Making sure button state goes back to off feed_can.send_can_signal("021#FFFFFFFF00000000") + if __name__ == '__main__': import sys app = QApplication(sys.argv) w = SteeringCtrlWidget() w.show() - sys.exit(app.exec_())
\ No newline at end of file + sys.exit(app.exec_()) diff --git a/Widgets/settings.py b/Widgets/settings.py index a7820fc..f1eed41 100644 --- a/Widgets/settings.py +++ b/Widgets/settings.py @@ -13,6 +13,8 @@ # limitations under the License. +from extras import config +import extras.Kuksa_Instance as kuksa_instance import os import sys import time @@ -31,8 +33,6 @@ current_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(current_dir)) -import extras.Kuksa_Instance as kuksa_instance -from extras import config Form, Base = uic.loadUiType(os.path.join( current_dir, "../ui/Settings_Window.ui")) @@ -41,12 +41,14 @@ Form, Base = uic.loadUiType(os.path.join( Steering_Signal_Type = "Kuksa" + def create_animated_toggle(): return AnimatedToggle( checked_color="#4BD7D6", pulse_checked_color="#00ffff", ) + class settings(Base, Form): """ A class representing the settings widget of the AGL Demo Control Panel. @@ -61,14 +63,14 @@ class settings(Base, Form): - refreshBtn: A QPushButton object representing the refresh button. - startClientBtn: A QPushButton object representing the start client button. """ - + def __init__(self, parent=None): """ Initializes the settings widget of the AGL Demo Control Panel. """ super(self.__class__, self).__init__(parent) self.setupUi(self) - + self.SSL_toggle = create_animated_toggle() self.Protocol_toggle = create_animated_toggle() self.CAN_Kuksa_toggle = create_animated_toggle() @@ -79,11 +81,13 @@ class settings(Base, Form): list_of_configs = config.get_list_configs() default_config_name = config.get_default_config() - self.List_Configs_ComboBox = self.findChild(QComboBox, "List_Configs_ComboBox") + self.List_Configs_ComboBox = self.findChild( + QComboBox, "List_Configs_ComboBox") self.List_Configs_ComboBox.setItemDelegate(QStyledItemDelegate()) self.List_Configs_ComboBox.addItems(list_of_configs) self.List_Configs_ComboBox.setCurrentText(default_config_name) - self.List_Configs_ComboBox.currentTextChanged.connect(lambda: self.set_settings(self.List_Configs_ComboBox.currentText())) + self.List_Configs_ComboBox.currentTextChanged.connect( + lambda: self.set_settings(self.List_Configs_ComboBox.currentText())) self.IPAddrInput = self.findChild(QLineEdit, "IPAddrInput") self.PortInput = self.findChild(QLineEdit, "PortInput") @@ -99,16 +103,18 @@ class settings(Base, Form): self.reconnectBtn.clicked.connect(self.reconnectClient) self.SSL_toggle.clicked.connect(self.toggleSSL) self.CAN_Kuksa_toggle.clicked.connect(self.toggle_CAN_Kuksa) - + Frame_GS = self.findChild(QWidget, "frame_general_settings") Frame_PS = self.findChild(QWidget, "frame_page_settings") GS_layout = Frame_GS.layout() PS_layout = Frame_PS.layout() - + GS_layout.replaceWidget(self.place_holder_toggle_1, self.SSL_toggle) - GS_layout.replaceWidget(self.place_holder_toggle_2, self.Protocol_toggle) - PS_layout.replaceWidget(self.place_holder_toggle_3, self.CAN_Kuksa_toggle) - + GS_layout.replaceWidget( + self.place_holder_toggle_2, self.Protocol_toggle) + PS_layout.replaceWidget( + self.place_holder_toggle_3, self.CAN_Kuksa_toggle) + self.place_holder_toggle_1.deleteLater() self.place_holder_toggle_2.deleteLater() self.place_holder_toggle_3.deleteLater() @@ -121,7 +127,8 @@ class settings(Base, Form): self.set_instance() if self.client is not None: self.startClientBtn.setStyleSheet("border: 1px solid red;") - self.startClientBtn.setIcon(QtGui.QIcon(":/Carbon_Icons/carbon_icons/stop.svg")) + self.startClientBtn.setIcon(QtGui.QIcon( + ":/Carbon_Icons/carbon_icons/stop.svg")) self.startClientBtn.setText("Stop Client") else: self.startClientBtn.setChecked(False) @@ -131,9 +138,9 @@ class settings(Base, Form): self.client.stop() self.startClientBtn.setStyleSheet("border: 1px solid green;") - self.startClientBtn.setIcon(QtGui.QIcon(":/Carbon_Icons/carbon_icons/play.svg")) + self.startClientBtn.setIcon(QtGui.QIcon( + ":/Carbon_Icons/carbon_icons/play.svg")) self.startClientBtn.setText("Start Client") - def toggleSSL(self): """ @@ -150,7 +157,8 @@ class settings(Base, Form): if (self.CAN_Kuksa_toggle.isChecked()): # check if can0 is available try: - can_bus = can.interface.Bus(channel='can0', bustype='socketcan_native') + can_bus = can.interface.Bus( + channel='can0', bustype='socketcan_native') can_bus.shutdown() Steering_Signal_Type = "CAN" except: @@ -193,13 +201,15 @@ class settings(Base, Form): if (self.client is None): self.connectionStatus.setText('Not Connected') self.connectionLogo.setStyleSheet("background-color: red") - self.connectionLogo.setPixmap(QtGui.QPixmap(":/Carbon_Icons/carbon_icons/connection-signal--off.svg")) + self.connectionLogo.setPixmap(QtGui.QPixmap( + ":/Carbon_Icons/carbon_icons/connection-signal--off.svg")) return None if (self.client.checkConnection() == True): self.connectionStatus.setText('Connected') self.connectionLogo.setStyleSheet("background-color: green") - self.connectionLogo.setPixmap(QtGui.QPixmap(":/Carbon_Icons/carbon_icons/connection-signal.svg")) + self.connectionLogo.setPixmap(QtGui.QPixmap( + ":/Carbon_Icons/carbon_icons/connection-signal.svg")) self.client.start() return True @@ -207,7 +217,8 @@ class settings(Base, Form): self.client.stop() self.connectionStatus.setText('Disconnected') self.connectionLogo.setStyleSheet("background-color: yellow") - self.connectionLogo.setPixmap(QtGui.QPixmap(":/Carbon_Icons/carbon_icons/connection-signal--off.svg")) + self.connectionLogo.setPixmap(QtGui.QPixmap( + ":/Carbon_Icons/carbon_icons/connection-signal--off.svg")) return False except: pass @@ -240,7 +251,8 @@ class settings(Base, Form): text = widget.text() if text: if os.path.exists(text): - widget.setStyleSheet("border: 1px solid #4BD7D6 ; /* light blue */") + widget.setStyleSheet( + "border: 1px solid #4BD7D6 ; /* light blue */") if key: self.new_config[key] = text else: @@ -248,18 +260,19 @@ class settings(Base, Form): else: widget.setStyleSheet("border: 1px solid red;") return None - + new_config = {} new_config["ip"] = self.IPAddrInput.text() new_config["port"] = self.PortInput.text() new_config["protocol"] = self.get_protocol() new_config["insecure"] = not self.SSL_toggle.isChecked() - new_config["tls_server_name"] = self.TLS_Server_Name.text() if self.Protocol_toggle.isChecked() else None + new_config["tls_server_name"] = self.TLS_Server_Name.text( + ) if self.Protocol_toggle.isChecked() else None validate_and_set_style(self, self.CA_File, "cacertificate") validate_and_set_style(self, self.Auth_Token) return new_config - + def set_settings(self, config_name): """ Reloads the parameters of settings widget. @@ -272,11 +285,14 @@ class settings(Base, Form): self.IPAddrInput.setText(self.kuksa_config["ip"]) self.PortInput.setText(self.kuksa_config["port"]) self.SSL_toggle.setChecked(not self.kuksa_config["insecure"]) - self.Protocol_toggle.setChecked(self.kuksa_config["protocol"] == 'grpc') + self.Protocol_toggle.setChecked( + self.kuksa_config["protocol"] == 'grpc') self.CA_File.setText(self.kuksa_config["cacertificate"]) - self.TLS_Server_Name.setText(self.kuksa_config["tls_server_name"] if self.kuksa_config["tls_server_name"] is not None else "") + self.TLS_Server_Name.setText( + self.kuksa_config["tls_server_name"] if self.kuksa_config["tls_server_name"] is not None else "") self.Auth_Token.setText(self.kuksa_token) + class RefreshThread(QThread): def __init__(self, settings): QThread.__init__(self) @@ -286,6 +302,7 @@ class RefreshThread(QThread): time.sleep(2) self.settings.refreshStatus() + if __name__ == '__main__': import sys app = QApplication(sys.argv) diff --git a/docker/install_packages.sh b/docker/install_packages.sh index 4e94a37..7fdb621 100755 --- a/docker/install_packages.sh +++ b/docker/install_packages.sh @@ -21,7 +21,8 @@ apt-get install --yes \ python3-pip \ python3-pyqt5 \ python3-qtpy \ - pyqt5-dev-tools + pyqt5-dev-tools \ + python3-pyqt5.qtsvgqq # Set bash as default shell echo "dash dash/sh boolean false" | debconf-set-selections - && dpkg-reconfigure dash diff --git a/extras/FeedCAN.py b/extras/FeedCAN.py index 9cd01d5..1282e61 100644 --- a/extras/FeedCAN.py +++ b/extras/FeedCAN.py @@ -17,6 +17,7 @@ import can import logging + def send_can_signal(frame): """ Sends a CAN signal to the CAN bus using the given frame. @@ -26,7 +27,7 @@ def send_can_signal(frame): None """ msg = separate_can_frame(frame) - + try: bus = can.interface.Bus(channel='can0', bustype='socketcan') except Exception as e: @@ -38,7 +39,7 @@ def send_can_signal(frame): print("CAN signal sent successfully:") print("CAN ID:", hex(msg.arbitration_id)) print("Data:", msg.data) - if frame!="021#FFFFFFFF00000000": + if frame != "021#FFFFFFFF00000000": # Turn off signal send_can_signal("021#FFFFFFFF00000000") @@ -47,13 +48,14 @@ def send_can_signal(frame): finally: bus.shutdown() + def separate_can_frame(frame): """ Separates a CAN frame into its arbitration ID and data parts. - + Args: frame (str): A string representing the CAN frame in the format "ARBID#DATA". - + Returns: can.Message: A can.Message object with the arbitration ID and data extracted from the input frame. """ @@ -68,5 +70,6 @@ def main(): frame = "021#FFFFFFFF10000000" send_can_signal(frame) + if __name__ == "__main__": main() diff --git a/extras/FeedKuksa.py b/extras/FeedKuksa.py index cda2a30..75846d5 100644 --- a/extras/FeedKuksa.py +++ b/extras/FeedKuksa.py @@ -16,13 +16,12 @@ import logging from PyQt5.QtCore import QThread -from PyQt5.QtCore import pyqtSignal +from PyQt5.QtCore import pyqtSignal, QObject from . import Kuksa_Instance as kuksa_instance +from . import UI_Handeler import threading class FeedKuksa(QThread): - sending_values = pyqtSignal() - finished_sending_values = pyqtSignal() """ A class to handle sending values to Kuksa. @@ -35,6 +34,9 @@ class FeedKuksa(QThread): client : kuksa_instance.KuksaClientSingleton.instance().client A client object to interact with the Kuksa server. """ + + sending_values = pyqtSignal() + finished_sending_values = pyqtSignal() def __init__(self, parent=None): """ @@ -45,9 +47,12 @@ class FeedKuksa(QThread): parent : QObject The parent object of the FeedKuksa object. """ - QThread.__init__(self,parent) + QThread.__init__(self, parent) self.stop_flag = False + self.sending_values.connect(UI_Handeler.UI_Handeler.block_updates) + self.finished_sending_values.connect(UI_Handeler.UI_Handeler.unblock_updates) + def run(self): """ Starts the thread and sets the instance of the Kuksa client. @@ -60,7 +65,7 @@ class FeedKuksa(QThread): Stops the thread. """ self.stop_flag = True - + logging.info("Stopping thread") def set_instance(self): @@ -88,7 +93,7 @@ class FeedKuksa(QThread): Exception If there is an error sending values to Kuksa. """ - + if self.client is None: logging.error("Kuksa client is None, try reconnecting") return @@ -102,11 +107,11 @@ class FeedKuksa(QThread): if attribute is not None: self.sending_values.emit() self.client.setValue(path, value, attribute) + self.finished_sending_values.emit() else: self.sending_values.emit() self.client.setValue(path, value) - - self.finished_sending_values.emit() + self.finished_sending_values.emit() except Exception as e: logging.error(f"Error sending values to kuksa {e}") - threading.Thread(target=self.set_instance).start()
\ No newline at end of file + threading.Thread(target=self.set_instance).start() diff --git a/extras/Kuksa_Instance.py b/extras/Kuksa_Instance.py index 1ff8056..cda539e 100644 --- a/extras/Kuksa_Instance.py +++ b/extras/Kuksa_Instance.py @@ -19,6 +19,7 @@ import kuksa_client as kuksa import threading import time + class KuksaClientSingleton: """ A singleton class that provides a single instance of KuksaClientThread. @@ -88,7 +89,7 @@ class KuksaClientSingleton: """ if self.client: self.client.stop() - + self.client = kuksa.KuksaClientThread(config) self.client.authorize(token) self.client.start() @@ -104,7 +105,7 @@ class KuksaClientSingleton: return self.client else: return None - + def get_config(self): """ Returns the configuration. @@ -128,4 +129,4 @@ class KuksaClientSingleton: Stops the client instance. """ if self.client: - self.client.stop()
\ No newline at end of file + self.client.stop() diff --git a/extras/UI_Handeler.py b/extras/UI_Handeler.py index 261df94..3e653e4 100644 --- a/extras/UI_Handeler.py +++ b/extras/UI_Handeler.py @@ -20,32 +20,26 @@ from PyQt5.QtCore import QPropertyAnimation from PyQt5.QtWidgets import QWidget from PyQt5.QtCore import QEasingCurve from PyQt5.QtWidgets import QGraphicsOpacityEffect -from PyQt5.QtWidgets import QDesktopWidget import logging import json -from . import FeedKuksa as feed_kuksa from . import Kuksa_Instance as kuksa_instance # Global variables subscribed = False -should_execute_callback = True block_subscription_updates = False + class UI_Handeler(MainWindow): - """ - This class handles the UI of the AGL Demo Control Panel application. - """ - def __init__(self): - self.feed_kuksa = feed_kuksa.FeedKuksa() - self.feed_kuksa.sending_values.connect(self.block_updates) - self.feed_kuksa.finished_sending_values.connect(self.unblock_updates) - - def block_updates(self): + + def display_sending_message(self): + print("message sent") + + def block_updates(): global block_subscription_updates block_subscription_updates = True - def unblock_updates(self): + def unblock_updates(): global block_subscription_updates block_subscription_updates = False @@ -59,7 +53,8 @@ class UI_Handeler(MainWindow): height = self.BottomMenuSubContainer.height() heightExtended = 75 if bool_arg else 0 - self.animation = QPropertyAnimation(self.BottomMenuSubContainer, b"minimumHeight") + self.animation = QPropertyAnimation( + self.BottomMenuSubContainer, b"minimumHeight") self.animation.setDuration(400) self.animation.setStartValue(height) self.animation.setEndValue(heightExtended) @@ -73,7 +68,8 @@ class UI_Handeler(MainWindow): Args: - index: The index of the page to switch to. """ - self.fader_widget = FaderWidget(self.stackedWidget.currentWidget(), self.stackedWidget.widget(index)) + self.fader_widget = FaderWidget( + self.stackedWidget.currentWidget(), self.stackedWidget.widget(index)) self.stackedWidget.setCurrentIndex(index) def toggleMaximized(self): @@ -96,30 +92,28 @@ class UI_Handeler(MainWindow): self.move(self.pos() + event.globalPos() - self.clickPosition) self.clickPosition = event.globalPos() event.accept() - + def mousePressEvent(self, event): self.clickPosition = event.globalPos() event.accept() - + def mouseReleaseEvent(self, event): self.clickPosition = None event.accept() - - def set_instance(self): - """ - This method sets the instance of the Kuksa client. - Returns: - - True if the client is connected to Kuksa, False otherwise. - """ + def set_instance(self): self.kuksa = kuksa_instance.KuksaClientSingleton.instance() self.client = self.kuksa.get_client() if self.client is not None and self.client.checkConnection(): return True else: - print("No connection to Kuksa") + logging.error("Kuksa client is not connected, try reconnecting") return False + def stop_client(self): + if self.client is not None and self.client.checkConnection(): + self.client.stop() + def subscribe_VSS_Signals(self): """ This method subscribes to the VSS signals from Kuksa. @@ -144,13 +138,15 @@ class UI_Handeler(MainWindow): "Vehicle.Cabin.HVAC.Station.Row1.Right.FanSpeed"] for signal in signals: - self.client.subscribe(signal, lambda data: UI_Handeler.VSS_callback(self,data), 'value') + self.client.subscribe( + signal, lambda data: UI_Handeler.VSS_callback(self, data), 'value') subscribed = True else: subscribed = False - print("No connection to Kuksa") + logging.error( + "Kuksa client is not connected, try reconnecting") - def VSS_callback(self,data): + def VSS_callback(self, data): """ This method is the callback function for the VSS signals from Kuksa. @@ -160,7 +156,7 @@ class UI_Handeler(MainWindow): global block_subscription_updates if block_subscription_updates: return - + IC_Page = self.stackedWidget.widget(1) HVAC_Page = self.stackedWidget.widget(2) @@ -219,7 +215,7 @@ class UI_Handeler(MainWindow): class FaderWidget(QWidget): def __init__(self, old_widget, new_widget): super().__init__(new_widget) - + self.old_widget = old_widget self.new_widget = new_widget @@ -241,4 +237,4 @@ class FaderWidget(QWidget): def close(self): self.old_widget.close() self.new_widget.show() - super().close()
\ No newline at end of file + super().close() @@ -14,6 +14,8 @@ limitations under the License. """ +from Widgets.Dashboard import Dashboard +from extras.UI_Handeler import * import sys import os @@ -22,12 +24,13 @@ from PyQt5.QtWidgets import QApplication, QPushButton, QWidget from functools import partial from PyQt5 import QtGui from PyQt5.QtCore import Qt +from PyQt5 import QtSvg +from PyQt5.QtSvg import * +from PyQt5.QtGui import QIcon current_dir = os.path.dirname(os.path.abspath(__file__)) Form, Base = uic.loadUiType(os.path.join(current_dir, "Main_Window.ui")) -from extras.UI_Handeler import * -from Widgets.Dashboard import Dashboard class MainWindow(Base, Form): """ @@ -50,22 +53,28 @@ class MainWindow(Base, Form): self.setupUi(self) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) - self.setStyle(QtWidgets.QStyleFactory.create('Fusion')) - #self.resize(1400,840) - self.headerContainer = self.findChild(QWidget, 'headerContainer') - self.headerContainer.DoubleClickMaximize = lambda: UI_Handeler.toggleMaximized(self) - self.headerContainer.mouseMoveEvent = lambda event: UI_Handeler.moveWindow(self, event) - self.headerContainer.mousePressEvent = lambda event: UI_Handeler.mousePressEvent(self, event) - self.headerContainer.mouseReleaseEvent = lambda event: UI_Handeler.mouseReleaseEvent(self, event) - self.leftMenuSubContainer = self.findChild(QWidget, 'leftMenuSubContainer') + self.headerContainer = self.findChild(QWidget, 'headerContainer') + self.headerContainer.DoubleClickMaximize = lambda: UI_Handeler.toggleMaximized( + self) + self.headerContainer.mouseMoveEvent = lambda event: UI_Handeler.moveWindow( + self, event) + self.headerContainer.mousePressEvent = lambda event: UI_Handeler.mousePressEvent( + self, event) + self.headerContainer.mouseReleaseEvent = lambda event: UI_Handeler.mouseReleaseEvent( + self, event) + + self.leftMenuSubContainer = self.findChild( + QWidget, 'leftMenuSubContainer') self.dashboardButton = self.findChild(QPushButton, 'dashboardButton') - UI_Handeler.Hide_Navbar(self,bool_arg=True) + UI_Handeler.Hide_Navbar(self, bool_arg=True) - self.stackedWidget.currentChanged.connect(lambda: UI_Handeler.subscribe_VSS_Signals(self) if UI_Handeler.set_instance(self) else None) + self.stackedWidget.currentChanged.connect(lambda: UI_Handeler.subscribe_VSS_Signals( + self) if UI_Handeler.set_instance(self) else None) - self.notificationContent = self.findChild(QWidget, 'notificationContent') + self.notificationContent = self.findChild( + QWidget, 'notificationContent') # Window Controls closeButton = self.findChild(QPushButton, 'closeBtn') @@ -73,17 +82,26 @@ class MainWindow(Base, Form): maximizeButton = self.findChild(QPushButton, 'maximizeBtn') # make the close button also end all threads - closeButton.clicked.connect(lambda: [self.close(), self.stop_thread_signal.emit()]) + closeButton.clicked.connect( + lambda: [self.close(), self.stop_thread_signal.emit()]) minimizeButton.clicked.connect(self.showMinimized) - maximizeButton.clicked.connect(lambda: UI_Handeler.toggleMaximized(self)) + maximizeButton.clicked.connect( + lambda: UI_Handeler.toggleMaximized(self)) # Widget Navigation - Navigation_buttons = ( self.dashboardButton, - self.icButton, - self.hvacButton, - self.steeringCtrlButton, - self.settingsBtn) - + Navigation_buttons = (self.dashboardButton, + self.icButton, + self.hvacButton, + self.steeringCtrlButton, + self.settingsBtn) + + steering_icon = ":/Images/Images/steering-wheel.svg" + getsize = QtSvg.QSvgRenderer(steering_icon) + svg_widget = QtSvg.QSvgWidget(steering_icon) + svg_widget.setFixedSize(getsize.defaultSize()) + svg_widget.setStyleSheet("background-color: transparent;") + self.steeringCtrlButton.setIcon(QIcon(svg_widget.grab())) + NavigationButtons = QtWidgets.QButtonGroup(self) NavigationButtons.setExclusive(True) @@ -93,12 +111,13 @@ class MainWindow(Base, Form): button.clicked.connect(partial(UI_Handeler.animateSwitch, self, i)) self.stackedWidget.currentChanged.connect(self.handleChangedPage) - - self.stop_thread_signal.connect(self.stackedWidget.widget(0).feed_kuksa.stop) - self.stackedWidget.setCurrentIndex(0) + self.stop_thread_signal.connect( + self.stackedWidget.widget(0).feed_kuksa.stop) + + self.stackedWidget.setCurrentIndex(0) self.dashboardButton.setChecked(True) - UI_Handeler.Hide_Navbar(self,bool_arg=False) + UI_Handeler.Hide_Navbar(self, bool_arg=False) self.Dashboard = Dashboard() self.Dashboard.tileClickedSignal.connect(self.handleTileClicked) @@ -108,7 +127,7 @@ class MainWindow(Base, Form): self.centralwidget = self.findChild(QWidget, 'centralwidget') self.size_grip = QtWidgets.QSizeGrip(self) self.size_grip.setFixedSize(20, 20) - #self.size_grip.setStyleSheet("QSizeGrip { background-color: transparent; }") + # self.size_grip.setStyleSheet("QSizeGrip { background-color: transparent; }") self.size_grip.setStyleSheet(""" QSizeGrip { background-color: transparent; @@ -118,9 +137,10 @@ class MainWindow(Base, Form): border: none; } """) - self.centralwidget.layout().addWidget(self.size_grip, 0, Qt.AlignBottom | Qt.AlignRight) + self.centralwidget.layout().addWidget( + self.size_grip, 0, Qt.AlignBottom | Qt.AlignRight) - def VSS_callback(self,data): + def VSS_callback(self, data): pass def handleTileClicked(self): @@ -128,7 +148,7 @@ class MainWindow(Base, Form): Handles the tile clicked signal from the Dashboard object. Shows the navbar. """ - UI_Handeler.Hide_Navbar(self,bool_arg=False) + UI_Handeler.Hide_Navbar(self, bool_arg=False) def handleChangedPage(self, index): """ @@ -137,11 +157,12 @@ class MainWindow(Base, Form): If the index is 0, the navbar is not hidden. Otherwise, it is hidden. """ if index == 0: - UI_Handeler.Hide_Navbar(self,bool_arg=False) + UI_Handeler.Hide_Navbar(self, bool_arg=False) else: - UI_Handeler.Hide_Navbar(self,bool_arg=True) + UI_Handeler.Hide_Navbar(self, bool_arg=True) try: - self.stop_thread_signal.connect(self.stackedWidget.widget(self.current_page).feed_kuksa.stop) + self.stop_thread_signal.connect( + self.stackedWidget.widget(self.current_page).feed_kuksa.stop) self.stop_thread_signal.emit() except: pass @@ -149,15 +170,18 @@ class MainWindow(Base, Form): self.current_page = self.stackedWidget.currentIndex() try: - self.start_thread_signal.connect(self.stackedWidget.widget(self.current_page).feed_kuksa.start) + self.start_thread_signal.connect( + self.stackedWidget.widget(self.current_page).feed_kuksa.start) self.start_thread_signal.emit() except: pass + if __name__ == '__main__': app = QApplication(sys.argv) app.setApplicationName("AGL Demo Control Panel") - app.setWindowIcon(QtGui.QIcon(':/Images/Images/Automotive_Grade_Linux_logo.svg')) + app.setWindowIcon(QtGui.QIcon( + ':/Images/Images/Automotive_Grade_Linux_logo.svg')) window = MainWindow() window.show() - sys.exit(app.exec_())
\ No newline at end of file + sys.exit(app.exec_()) diff --git a/ui/Dashboard.ui b/ui/Dashboard.ui index ef30cf6..f8c8938 100644 --- a/ui/Dashboard.ui +++ b/ui/Dashboard.ui @@ -16,25 +16,17 @@ <property name="styleSheet"> <string notr="true">*{ border: none; + border-radius: 8px; background-color: transparent; - background: none; + background: none; padding: 0; margin: 0; color: #fff; } - -#scrollAreaWidgetContents{ - background-color: #131313 ; /* black */ -} - -#centralwidget{ - background-color: #131313 ; /* black */ -} - -QPushButton{ +QPushButton { background-color: #6C6C85 ; /* pastel purple */ - border-radius: 10px; - margin: 5px; + padding: 50px 50px; + border-radius: 20px; } QPushButton:pressed { @@ -50,10 +42,7 @@ QPushButton:pressed { <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="spacing"> - <number>0</number> - </property> + <layout class="QGridLayout" name="gridLayout"> <property name="leftMargin"> <number>0</number> </property> @@ -66,139 +55,149 @@ QPushButton:pressed { <property name="bottomMargin"> <number>0</number> </property> - <item> - <widget class="QScrollArea" name="scrollArea"> + <item row="1" column="1"> + <widget class="QPushButton" name="DB_Settings_Tile"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> <property name="layoutDirection"> <enum>Qt::LeftToRight</enum> </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>703</width> - <height>451</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="1"> - <widget class="QPushButton" name="DB_HVAC_Tile"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="text"> - <string>HVAC</string> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/windy--strong.svg</normaloff>:/Carbon_Icons/carbon_icons/windy--strong.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="flat"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="DB_Steering_Tile"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="text"> - <string>Steering Controls</string> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Images/Images/steering-wheel.svg</normaloff>:/Images/Images/steering-wheel.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="flat"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="DB_Settings_Tile"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="text"> - <string>Configure</string> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/settings.svg</normaloff>:/Carbon_Icons/carbon_icons/settings.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="flat"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QPushButton" name="DB_IC_Tile"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="text"> - <string>Instrument Cluster</string> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/meter.svg</normaloff>:/Carbon_Icons/carbon_icons/meter.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> + <property name="text"> + <string>Configure</string> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/settings.svg</normaloff>:/Carbon_Icons/carbon_icons/settings.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QPushButton" name="DB_IC_Tile"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="text"> + <string>Instrument Cluster</string> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/meter.svg</normaloff>:/Carbon_Icons/carbon_icons/meter.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QPushButton" name="DB_HVAC_Tile"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="text"> + <string>HVAC</string> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/windy--strong.svg</normaloff>:/Carbon_Icons/carbon_icons/windy--strong.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QPushButton" name="DB_Steering_Tile"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="text"> + <string>Steering Controls</string> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Images/Images/steering-wheel.svg</normaloff>:/Images/Images/steering-wheel.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + <property name="flat"> + <bool>false</bool> + </property> </widget> </item> </layout> @@ -189,821 +189,775 @@ QListWidget::item:hover { <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QScrollArea" name="scrollArea"> - <property name="widgetResizable"> - <bool>true</bool> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QFrame" name="frame"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>300</height> + </size> </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>799</width> - <height>517</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QFrame" name="frame"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>300</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="3" colspan="2"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="1" colspan="5" alignment="Qt::AlignBottom"> - <widget class="QFrame" name="frame_2"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>50</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item alignment="Qt::AlignHCenter"> - <widget class="QLabel" name="label_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>HVAC</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="6"> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Expanding</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="3" colspan="2"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" colspan="5" alignment="Qt::AlignBottom"> + <widget class="QFrame" name="frame_2"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>50</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item alignment="Qt::AlignHCenter"> + <widget class="QLabel" name="label_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>18</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>HVAC</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="6"> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="1" colspan="2"> + <widget class="QFrame" name="leftControls"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="0" colspan="5" alignment="Qt::AlignHCenter"> + <widget class="QLabel" name="label"> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Left Controls</string> + </property> + </widget> + </item> + <item row="0" column="0" colspan="5"> + <spacer name="verticalSpacer_7"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="5"> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" rowspan="2"> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="2" rowspan="2"> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="3" rowspan="2"> + <widget class="QFrame" name="frame_3"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item alignment="Qt::AlignHCenter|Qt::AlignBottom"> + <widget class="QPushButton" name="leftTempUp"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>40</width> + <height>40</height> + </size> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QListWidget" name="leftTempList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>152</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>60</width> + <height>152</height> + </size> + </property> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="autoFillBackground"> + <bool>false</bool> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Plain</enum> + </property> + <property name="verticalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="sizeAdjustPolicy"> + <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="dragDropMode"> + <enum>QAbstractItemView::DragOnly</enum> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::SingleSelection</enum> + </property> + <property name="textElideMode"> + <enum>Qt::ElideMiddle</enum> + </property> + <property name="verticalScrollMode"> + <enum>QAbstractItemView::ScrollPerPixel</enum> + </property> + <property name="movement"> + <enum>QListView::Snap</enum> + </property> + <property name="isWrapping" stdset="0"> + <bool>false</bool> + </property> + <property name="resizeMode"> + <enum>QListView::Adjust</enum> + </property> + <property name="layoutMode"> + <enum>QListView::SinglePass</enum> + </property> + <property name="spacing"> + <number>1</number> + </property> + <property name="viewMode"> + <enum>QListView::ListMode</enum> + </property> + <property name="uniformItemSizes"> + <bool>true</bool> + </property> + <property name="selectionRectVisible"> + <bool>true</bool> + </property> + <property name="itemAlignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignTop"> + <widget class="QPushButton" name="leftTempDown"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>40</width> + <height>40</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="5" column="0" colspan="5"> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Preferred</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="4" rowspan="2"> + <spacer name="horizontalSpacer_7"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="1"> + <widget class="QFrame" name="frame_4"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <property name="spacing"> + <number>4</number> </property> - </spacer> - </item> - <item row="1" column="1" colspan="2"> - <widget class="QFrame" name="leftControls"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> + <property name="leftMargin"> + <number>0</number> </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> + <property name="topMargin"> + <number>0</number> </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> + <property name="rightMargin"> + <number>0</number> </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="0" colspan="5" alignment="Qt::AlignHCenter"> - <widget class="QLabel" name="label"> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Left Controls</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="5"> - <spacer name="verticalSpacer_7"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="2" column="0" colspan="5"> - <spacer name="verticalSpacer_3"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="0" rowspan="2"> - <spacer name="horizontalSpacer_6"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="2" rowspan="2"> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="3" rowspan="2"> - <widget class="QFrame" name="frame_3"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <item alignment="Qt::AlignHCenter|Qt::AlignBottom"> - <widget class="QPushButton" name="leftTempUp"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>40</width> - <height>40</height> - </size> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> - <widget class="QListWidget" name="leftTempList"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>152</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>60</width> - <height>152</height> - </size> - </property> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="autoFillBackground"> - <bool>false</bool> - </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Plain</enum> - </property> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="sizeAdjustPolicy"> - <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum> - </property> - <property name="editTriggers"> - <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> - </property> - <property name="showDropIndicator" stdset="0"> - <bool>false</bool> - </property> - <property name="dragDropMode"> - <enum>QAbstractItemView::DragOnly</enum> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::SingleSelection</enum> - </property> - <property name="textElideMode"> - <enum>Qt::ElideMiddle</enum> - </property> - <property name="verticalScrollMode"> - <enum>QAbstractItemView::ScrollPerPixel</enum> - </property> - <property name="movement"> - <enum>QListView::Snap</enum> - </property> - <property name="isWrapping" stdset="0"> - <bool>false</bool> - </property> - <property name="resizeMode"> - <enum>QListView::Adjust</enum> - </property> - <property name="layoutMode"> - <enum>QListView::SinglePass</enum> - </property> - <property name="spacing"> - <number>1</number> - </property> - <property name="viewMode"> - <enum>QListView::ListMode</enum> - </property> - <property name="uniformItemSizes"> - <bool>true</bool> - </property> - <property name="selectionRectVisible"> - <bool>true</bool> - </property> - <property name="itemAlignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignTop"> - <widget class="QPushButton" name="leftTempDown"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>40</width> - <height>40</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="5" column="0" colspan="5"> - <spacer name="verticalSpacer_5"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Preferred</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="4" rowspan="2"> - <spacer name="horizontalSpacer_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="1"> - <widget class="QFrame" name="frame_4"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <property name="spacing"> - <number>4</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item alignment="Qt::AlignHCenter"> - <widget class="QSlider" name="leftFanSpeed_slider"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>40</width> - <height>0</height> - </size> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="invertedAppearance"> - <bool>false</bool> - </property> - <property name="invertedControls"> - <bool>false</bool> - </property> - <property name="tickPosition"> - <enum>QSlider::NoTicks</enum> - </property> - <property name="tickInterval"> - <number>0</number> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../assets/res.qrc">:/Images/Images/HMI_HVAC_Fan_Icon.svg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="0"> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> + <property name="bottomMargin"> + <number>0</number> </property> - <property name="sizeType"> - <enum>QSizePolicy::Expanding</enum> + <item alignment="Qt::AlignHCenter"> + <widget class="QSlider" name="leftFanSpeed_slider"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>40</width> + <height>0</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="invertedAppearance"> + <bool>false</bool> + </property> + <property name="invertedControls"> + <bool>false</bool> + </property> + <property name="tickPosition"> + <enum>QSlider::NoTicks</enum> + </property> + <property name="tickInterval"> + <number>0</number> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../assets/res.qrc">:/Images/Images/HMI_HVAC_Fan_Icon.svg</pixmap> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="5"> + <widget class="QFrame" name="rightControls"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="6" column="0" colspan="6"> + <spacer name="verticalSpacer_6"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Preferred</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="5" rowspan="3"> + <spacer name="horizontalSpacer_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="4"> + <widget class="QFrame" name="frame_6"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <property name="spacing"> + <number>4</number> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> + <property name="leftMargin"> + <number>0</number> </property> - </spacer> - </item> - <item row="1" column="5"> - <widget class="QFrame" name="rightControls"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> + <property name="topMargin"> + <number>0</number> </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> + <property name="rightMargin"> + <number>0</number> </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> + <property name="bottomMargin"> + <number>0</number> </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="6" column="0" colspan="6"> - <spacer name="verticalSpacer_6"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Preferred</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="5" rowspan="3"> - <spacer name="horizontalSpacer_8"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="4" column="4"> - <widget class="QFrame" name="frame_6"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <property name="spacing"> - <number>4</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item alignment="Qt::AlignHCenter"> - <widget class="QSlider" name="rightFanSpeed_slider"> - <property name="minimumSize"> - <size> - <width>40</width> - <height>0</height> - </size> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../assets/res.qrc">:/Images/Images/HMI_HVAC_Fan_Icon.svg</pixmap> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="3" column="2" rowspan="3" colspan="2"> - <spacer name="horizontalSpacer_5"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="0" rowspan="3"> - <spacer name="horizontalSpacer_9"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="2" column="0" colspan="6"> - <spacer name="verticalSpacer_4"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="0" colspan="6" alignment="Qt::AlignHCenter"> - <widget class="QLabel" name="label_6"> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Right Controls</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="6"> - <spacer name="verticalSpacer_8"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="4" column="1"> - <widget class="QFrame" name="frame_5"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item alignment="Qt::AlignHCenter|Qt::AlignBottom"> - <widget class="QPushButton" name="rightTempUp"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>40</width> - <height>40</height> - </size> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> - <widget class="QListWidget" name="rightTempList"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>152</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>60</width> - <height>152</height> - </size> - </property> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="focusPolicy"> - <enum>Qt::StrongFocus</enum> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="autoFillBackground"> - <bool>false</bool> - </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Plain</enum> - </property> - <property name="verticalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="sizeAdjustPolicy"> - <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum> - </property> - <property name="editTriggers"> - <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> - </property> - <property name="showDropIndicator" stdset="0"> - <bool>false</bool> - </property> - <property name="dragDropMode"> - <enum>QAbstractItemView::DragOnly</enum> - </property> - <property name="selectionMode"> - <enum>QAbstractItemView::ContiguousSelection</enum> - </property> - <property name="textElideMode"> - <enum>Qt::ElideMiddle</enum> - </property> - <property name="verticalScrollMode"> - <enum>QAbstractItemView::ScrollPerPixel</enum> - </property> - <property name="movement"> - <enum>QListView::Snap</enum> - </property> - <property name="resizeMode"> - <enum>QListView::Adjust</enum> - </property> - <property name="layoutMode"> - <enum>QListView::SinglePass</enum> - </property> - <property name="spacing"> - <number>1</number> - </property> - <property name="viewMode"> - <enum>QListView::ListMode</enum> - </property> - <property name="selectionRectVisible"> - <bool>true</bool> - </property> - <property name="itemAlignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item alignment="Qt::AlignHCenter|Qt::AlignTop"> - <widget class="QPushButton" name="rightTempDown"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>40</width> - <height>40</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> + <item alignment="Qt::AlignHCenter"> + <widget class="QSlider" name="rightFanSpeed_slider"> + <property name="minimumSize"> + <size> + <width>40</width> + <height>0</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../assets/res.qrc">:/Images/Images/HMI_HVAC_Fan_Icon.svg</pixmap> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="3" column="2" rowspan="3" colspan="2"> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" rowspan="3"> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="6"> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="6" alignment="Qt::AlignHCenter"> + <widget class="QLabel" name="label_6"> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Right Controls</string> + </property> + </widget> + </item> + <item row="0" column="0" colspan="6"> + <spacer name="verticalSpacer_8"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="1"> + <widget class="QFrame" name="frame_5"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item alignment="Qt::AlignHCenter|Qt::AlignBottom"> + <widget class="QPushButton" name="rightTempUp"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--frigid.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>40</width> + <height>40</height> + </size> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QListWidget" name="rightTempList"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>152</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>60</width> + <height>152</height> + </size> + </property> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="autoFillBackground"> + <bool>false</bool> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Plain</enum> + </property> + <property name="verticalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="sizeAdjustPolicy"> + <enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum> + </property> + <property name="editTriggers"> + <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="dragDropMode"> + <enum>QAbstractItemView::DragOnly</enum> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ContiguousSelection</enum> + </property> + <property name="textElideMode"> + <enum>Qt::ElideMiddle</enum> + </property> + <property name="verticalScrollMode"> + <enum>QAbstractItemView::ScrollPerPixel</enum> + </property> + <property name="movement"> + <enum>QListView::Snap</enum> + </property> + <property name="resizeMode"> + <enum>QListView::Adjust</enum> + </property> + <property name="layoutMode"> + <enum>QListView::SinglePass</enum> + </property> + <property name="spacing"> + <number>1</number> + </property> + <property name="viewMode"> + <enum>QListView::ListMode</enum> + </property> + <property name="selectionRectVisible"> + <bool>true</bool> + </property> + <property name="itemAlignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item alignment="Qt::AlignHCenter|Qt::AlignTop"> + <widget class="QPushButton" name="rightTempDown"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</normaloff>:/Carbon_Icons/carbon_icons/temperature--hot.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>40</width> + <height>40</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + </layout> </widget> </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> </layout> </widget> </item> @@ -165,7 +165,7 @@ QLCDNumber { <enum>QFrame::Raised</enum> </property> <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0" rowspan="3"> + <item row="0" column="0" rowspan="2"> <spacer name="horizontalSpacer_12"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -178,7 +178,7 @@ QLCDNumber { </property> </spacer> </item> - <item row="0" column="2" rowspan="3"> + <item row="0" column="2" rowspan="2"> <spacer name="horizontalSpacer_13"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -191,889 +191,890 @@ QLCDNumber { </property> </spacer> </item> - <item row="1" column="1"> - <widget class="QScrollArea" name="scrollArea"> - <property name="widgetResizable"> - <bool>true</bool> + <item row="0" column="1" rowspan="2"> + <widget class="QFrame" name="frame"> + <property name="minimumSize"> + <size> + <width>500</width> + <height>0</height> + </size> </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>684</width> - <height>782</height> - </rect> - </property> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="2" column="0"> - <spacer name="verticalSpacer_4"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0" alignment="Qt::AlignBottom"> - <widget class="QFrame" name="header_frame"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>50</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QFrame" name="frame_4"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLabel" name="label"> - <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <family>Open Sans Extrabold</family> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Instrument Cluster</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QLabel" name="label_6"> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Demo Mode</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="demoToggle"> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="7" column="0" alignment="Qt::AlignTop"> - <widget class="QFrame" name="gearSelector"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>80</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>167</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="parkBtn"> - <property name="minimumSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="font"> - <font> - <family>Open Sans</family> - <pointsize>20</pointsize> - <weight>75</weight> - <italic>false</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>P</string> - </property> - <property name="iconSize"> - <size> - <width>16</width> - <height>16</height> - </size> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="reverseBtn"> - <property name="minimumSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="font"> - <font> - <family>Open Sans</family> - <pointsize>20</pointsize> - <weight>75</weight> - <italic>false</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>R</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_8"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="neutralBtn"> - <property name="minimumSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="font"> - <font> - <family>Open Sans</family> - <pointsize>20</pointsize> - <weight>75</weight> - <italic>false</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>N</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_9"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="driveBtn"> - <property name="minimumSize"> - <size> - <width>50</width> - <height>50</height> - </size> - </property> - <property name="font"> - <font> - <family>Open Sans</family> - <pointsize>20</pointsize> - <weight>75</weight> - <italic>false</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>D</string> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>168</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </item> - <item row="4" column="0"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="0" alignment="Qt::AlignTop"> - <widget class="QFrame" name="frame_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>16777215</width> - <height>150</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="4"> - <widget class="QPushButton" name="rightIndicatorBtn"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Images/Images/right.png</normaloff>:/Images/Images/right.png</iconset> - </property> - <property name="iconSize"> - <size> - <width>60</width> - <height>60</height> - </size> - </property> - </widget> - </item> - <item row="1" column="1"> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="3"> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="0"> - <widget class="QPushButton" name="leftIndicatorBtn"> - <property name="acceptDrops"> - <bool>false</bool> - </property> - <property name="autoFillBackground"> - <bool>false</bool> - </property> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Images/Images/left.png</normaloff>:/Images/Images/left.png</iconset> - </property> - <property name="iconSize"> - <size> - <width>60</width> - <height>60</height> - </size> - </property> - <property name="checkable"> - <bool>false</bool> - </property> - <property name="checked"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QPushButton" name="hazardBtn"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Images/Images/hazard.png</normaloff>:/Images/Images/hazard.png</iconset> - </property> - <property name="iconSize"> - <size> - <width>60</width> - <height>60</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="6" column="0"> - <spacer name="verticalSpacer_3"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="5" column="0" alignment="Qt::AlignTop"> - <widget class="QFrame" name="frame_2"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item alignment="Qt::AlignTop"> - <widget class="QPushButton" name="accelerationBtn"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>80</height> - </size> - </property> - <property name="font"> - <font> - <family>Open Sans</family> - <pointsize>18</pointsize> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Accelerate</string> - </property> - <property name="icon"> - <iconset> - <normaloff>:/Misc_icons/Misc_icons/speed-up-fill.svg</normaloff>:/Misc_icons/Misc_icons/speed-up-fill.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>60</width> - <height>60</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="3" column="0" alignment="Qt::AlignTop"> - <widget class="QFrame" name="frame_1"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>200</height> - </size> - </property> - <property name="maximumSize"> - <size> - <width>16777215</width> - <height>150</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="4" column="8" alignment="Qt::AlignHCenter"> - <widget class="QLabel" name="label_5"> - <property name="font"> - <font> - <family>Open Sans</family> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Engine RPM</string> - </property> - </widget> - </item> - <item row="1" column="5" rowspan="2" colspan="2"> - <widget class="QLCDNumber" name="Speed_monitor"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>50</weight> - <italic>false</italic> - <bold>false</bold> - </font> - </property> - <property name="layoutDirection"> - <enum>Qt::LeftToRight</enum> - </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="smallDecimalPoint"> - <bool>false</bool> - </property> - <property name="digitCount"> - <number>3</number> - </property> - <property name="segmentStyle"> - <enum>QLCDNumber::Flat</enum> - </property> - </widget> - </item> - <item row="1" column="1" rowspan="4" colspan="2"> - <widget class="QFrame" name="frame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="spacing"> - <number>0</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>4</number> - </property> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../assets/res.qrc">:/Carbon_Icons/carbon_icons/temperature--water.svg</pixmap> - </property> - </widget> - </item> - <item> - <widget class="QSlider" name="coolantTemp_slider"> - <property name="minimumSize"> - <size> - <width>60</width> - <height>0</height> - </size> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="1" column="0" rowspan="4"> - <spacer name="horizontalSpacer_10"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>10</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="3" colspan="8"> - <spacer name="verticalSpacer_5"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>10</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="12" rowspan="4"> - <spacer name="horizontalSpacer_11"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>10</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="8"> - <widget class="QSlider" name="RPM_slider"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>60</height> - </size> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item row="1" column="7" rowspan="4"> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - </widget> - </item> - <item row="1" column="3" rowspan="4" colspan="2"> - <spacer name="horizontalSpacer_5"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QFrame" name="header_frame"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>50</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QFrame" name="frame_6"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <family>Open Sans Extrabold</family> + <pointsize>18</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Instrument Cluster</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QLabel" name="label_6"> + <property name="font"> + <font> + <pointsize>18</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Demo Mode</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="demoToggle"> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <widget class="QFrame" name="frame_3"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>150</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="1" column="4"> + <widget class="QPushButton" name="rightIndicatorBtn"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Images/Images/right.png</normaloff>:/Images/Images/right.png</iconset> + </property> + <property name="iconSize"> + <size> + <width>60</width> + <height>60</height> + </size> + </property> + </widget> + </item> + <item row="1" column="1"> + <spacer name="horizontalSpacer_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="3"> + <spacer name="horizontalSpacer_4"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QPushButton" name="leftIndicatorBtn"> + <property name="acceptDrops"> + <bool>false</bool> + </property> + <property name="autoFillBackground"> + <bool>false</bool> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Images/Images/left.png</normaloff>:/Images/Images/left.png</iconset> + </property> + <property name="iconSize"> + <size> + <width>60</width> + <height>60</height> + </size> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QPushButton" name="hazardBtn"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Images/Images/hazard.png</normaloff>:/Images/Images/hazard.png</iconset> + </property> + <property name="iconSize"> + <size> + <width>60</width> + <height>60</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="2" column="0"> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0"> + <widget class="QFrame" name="frame_1"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>200</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>150</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="4" column="8" alignment="Qt::AlignHCenter"> + <widget class="QLabel" name="label_5"> + <property name="font"> + <font> + <family>Open Sans</family> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Engine RPM</string> + </property> + </widget> + </item> + <item row="1" column="5" rowspan="2" colspan="2"> + <widget class="QLCDNumber" name="Speed_monitor"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <weight>50</weight> + <italic>false</italic> + <bold>false</bold> + </font> + </property> + <property name="layoutDirection"> + <enum>Qt::LeftToRight</enum> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="smallDecimalPoint"> + <bool>false</bool> + </property> + <property name="digitCount"> + <number>3</number> + </property> + <property name="segmentStyle"> + <enum>QLCDNumber::Flat</enum> + </property> + </widget> + </item> + <item row="1" column="1" rowspan="4" colspan="2"> + <widget class="QFrame" name="frame_2"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>0</number> </property> - </spacer> - </item> - <item row="1" column="8" rowspan="2"> - <widget class="QLCDNumber" name="RPM_monitor"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> + <property name="leftMargin"> + <number>0</number> </property> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> + <property name="topMargin"> + <number>0</number> </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> + <property name="rightMargin"> + <number>0</number> </property> - <property name="digitCount"> + <property name="bottomMargin"> <number>4</number> </property> - <property name="segmentStyle"> - <enum>QLCDNumber::Flat</enum> - </property> - </widget> - </item> - <item row="4" column="5" alignment="Qt::AlignHCenter"> - <widget class="QLabel" name="label_4"> - <property name="font"> - <font> - <family>Open Sans</family> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Speed (Kmph)</string> - </property> - </widget> - </item> - <item row="3" column="5"> - <widget class="QSlider" name="Speed_slider"> - <property name="minimumSize"> - <size> - <width>0</width> - <height>60</height> - </size> - </property> - <property name="font"> - <font> - <weight>50</weight> - <bold>false</bold> - </font> - </property> - <property name="maximum"> - <number>240</number> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="tickPosition"> - <enum>QSlider::NoTicks</enum> - </property> - <property name="tickInterval"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../assets/res.qrc">:/Carbon_Icons/carbon_icons/temperature--water.svg</pixmap> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="coolantTemp_slider"> + <property name="minimumSize"> + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" rowspan="4"> + <spacer name="horizontalSpacer_10"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>10</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="3" colspan="8"> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="12" rowspan="4"> + <spacer name="horizontalSpacer_11"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>10</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="8"> + <widget class="QSlider" name="RPM_slider"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>60</height> + </size> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="1" column="7" rowspan="4"> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item row="1" column="3" rowspan="4" colspan="2"> + <spacer name="horizontalSpacer_5"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="8" rowspan="2"> + <widget class="QLCDNumber" name="RPM_monitor"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="digitCount"> + <number>4</number> + </property> + <property name="segmentStyle"> + <enum>QLCDNumber::Flat</enum> + </property> + </widget> + </item> + <item row="4" column="5" alignment="Qt::AlignHCenter"> + <widget class="QLabel" name="label_4"> + <property name="font"> + <font> + <family>Open Sans</family> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Speed (Kmph)</string> + </property> + </widget> + </item> + <item row="3" column="5"> + <widget class="QSlider" name="Speed_slider"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>60</height> + </size> + </property> + <property name="font"> + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="maximum"> + <number>240</number> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="tickPosition"> + <enum>QSlider::NoTicks</enum> + </property> + <property name="tickInterval"> + <number>0</number> + </property> + </widget> + </item> + <item row="1" column="9" rowspan="4"> + <spacer name="horizontalSpacer_6"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="11" rowspan="4"> + <widget class="QFrame" name="frame_5"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <property name="spacing"> <number>0</number> </property> - </widget> - </item> - <item row="1" column="9" rowspan="4"> - <spacer name="horizontalSpacer_6"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="1" column="11" rowspan="4"> - <widget class="QFrame" name="frame_5"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> + <property name="bottomMargin"> + <number>4</number> </property> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <property name="spacing"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>4</number> - </property> - <item> - <widget class="QSlider" name="fuelLevel_slider"> - <property name="minimumSize"> - <size> - <width>60</width> - <height>0</height> - </size> - </property> - <property name="font"> - <font> - <kerning>true</kerning> - </font> - </property> - <property name="sliderPosition"> - <number>0</number> - </property> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="invertedAppearance"> - <bool>false</bool> - </property> - <property name="invertedControls"> - <bool>false</bool> - </property> - <property name="tickPosition"> - <enum>QSlider::NoTicks</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <pointsize>12</pointsize> - </font> - </property> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="text"> - <string/> - </property> - <property name="pixmap"> - <pixmap resource="../assets/res.qrc">:/Carbon_Icons/carbon_icons/rain-drop.svg</pixmap> - </property> - <property name="scaledContents"> - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> + <item> + <widget class="QSlider" name="fuelLevel_slider"> + <property name="minimumSize"> + <size> + <width>60</width> + <height>0</height> + </size> + </property> + <property name="font"> + <font> + <kerning>true</kerning> + </font> + </property> + <property name="sliderPosition"> + <number>0</number> + </property> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="invertedAppearance"> + <bool>false</bool> + </property> + <property name="invertedControls"> + <bool>false</bool> + </property> + <property name="tickPosition"> + <enum>QSlider::NoTicks</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_3"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="font"> + <font> + <pointsize>12</pointsize> + </font> + </property> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="text"> + <string/> + </property> + <property name="pixmap"> + <pixmap resource="../assets/res.qrc">:/Carbon_Icons/carbon_icons/rain-drop.svg</pixmap> + </property> + <property name="scaledContents"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + <item row="4" column="0"> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="5" column="0"> + <widget class="QFrame" name="frame_4"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item alignment="Qt::AlignTop"> + <widget class="QPushButton" name="accelerationBtn"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>80</height> + </size> + </property> + <property name="font"> + <font> + <family>Open Sans</family> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Accelerate</string> + </property> + <property name="icon"> + <iconset> + <normaloff>:/Misc_icons/Misc_icons/speed-up-fill.svg</normaloff>:/Misc_icons/Misc_icons/speed-up-fill.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>60</width> + <height>60</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="6" column="0"> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="7" column="0"> + <widget class="QFrame" name="gearSelector"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>80</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>167</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="parkBtn"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> + <property name="font"> + <font> + <family>Open Sans</family> + <pointsize>20</pointsize> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>P</string> + </property> + <property name="iconSize"> + <size> + <width>16</width> + <height>16</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_7"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="reverseBtn"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> + <property name="font"> + <font> + <family>Open Sans</family> + <pointsize>20</pointsize> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>R</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="neutralBtn"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> + <property name="font"> + <font> + <family>Open Sans</family> + <pointsize>20</pointsize> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>N</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="driveBtn"> + <property name="minimumSize"> + <size> + <width>50</width> + <height>50</height> + </size> + </property> + <property name="font"> + <font> + <family>Open Sans</family> + <pointsize>20</pointsize> + <weight>75</weight> + <italic>false</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>D</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>168</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + </layout> </widget> </item> </layout> diff --git a/ui/Settings_Window.ui b/ui/Settings_Window.ui index e1a6b81..e4d5c52 100644 --- a/ui/Settings_Window.ui +++ b/ui/Settings_Window.ui @@ -127,6 +127,7 @@ QCheckBox:indicator:disabled { <widget class="QLabel" name="label_2"> <property name="font"> <font> + <pointsize>16</pointsize> <weight>75</weight> <italic>true</italic> <bold>true</bold> @@ -154,6 +155,7 @@ QCheckBox:indicator:disabled { <widget class="QLabel" name="label_19"> <property name="font"> <font> + <pointsize>16</pointsize> <weight>75</weight> <italic>true</italic> <bold>true</bold> @@ -229,6 +231,14 @@ QCheckBox:indicator:disabled { <verstretch>0</verstretch> </sizepolicy> </property> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> <property name="text"> <string>Start client</string> </property> @@ -246,6 +256,14 @@ QCheckBox:indicator:disabled { </item> <item row="0" column="1" colspan="2" alignment="Qt::AlignRight"> <widget class="QPushButton" name="reconnectBtn"> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> <property name="text"> <string>Reconnect</string> </property> @@ -279,6 +297,13 @@ QCheckBox:indicator:disabled { <verstretch>0</verstretch> </sizepolicy> </property> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <bold>true</bold> + </font> + </property> <property name="text"> <string>Disconnected</string> </property> @@ -286,6 +311,13 @@ QCheckBox:indicator:disabled { </item> <item row="3" column="0"> <widget class="QLabel" name="status"> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <bold>true</bold> + </font> + </property> <property name="text"> <string>Status</string> </property> @@ -353,6 +385,11 @@ QCheckBox:indicator:disabled { <layout class="QGridLayout" name="gridLayout_3"> <item row="3" column="1" colspan="3"> <widget class="QLabel" name="label_4"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>HVAC</string> </property> @@ -384,6 +421,11 @@ QCheckBox:indicator:disabled { </item> <item row="2" column="1" colspan="3"> <widget class="QLabel" name="label_3"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>Instrument Cluster</string> </property> @@ -391,6 +433,11 @@ QCheckBox:indicator:disabled { </item> <item row="4" column="1" colspan="3"> <widget class="QLabel" name="label_5"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>Steering Controls</string> </property> @@ -408,6 +455,14 @@ QCheckBox:indicator:disabled { </item> <item row="5" column="2" alignment="Qt::AlignRight|Qt::AlignVCenter"> <widget class="QLabel" name="label_14"> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> <property name="text"> <string>Kuksa</string> </property> @@ -457,6 +512,14 @@ QCheckBox:indicator:disabled { </item> <item row="5" column="4" alignment="Qt::AlignLeft"> <widget class="QLabel" name="label_10"> + <property name="font"> + <font> + <pointsize>14</pointsize> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> <property name="text"> <string>CAN</string> </property> @@ -559,6 +622,11 @@ QCheckBox:indicator:disabled { <layout class="QGridLayout" name="gridLayout_2"> <item row="1" column="3" colspan="6"> <widget class="QLineEdit" name="IPAddrInput"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="placeholderText"> <string/> </property> @@ -566,6 +634,11 @@ QCheckBox:indicator:disabled { </item> <item row="2" column="0"> <widget class="QLabel" name="label_16"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>Port</string> </property> @@ -582,10 +655,21 @@ QCheckBox:indicator:disabled { </widget> </item> <item row="5" column="3" colspan="6"> - <widget class="QLineEdit" name="TLS_Server_Name"/> + <widget class="QLineEdit" name="TLS_Server_Name"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + </widget> </item> <item row="0" column="0"> <widget class="QLabel" name="label_18"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>Default Config</string> </property> @@ -593,6 +677,11 @@ QCheckBox:indicator:disabled { </item> <item row="1" column="0" colspan="3"> <widget class="QLabel" name="IPAddr"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>IP Address</string> </property> @@ -600,6 +689,11 @@ QCheckBox:indicator:disabled { </item> <item row="3" column="0" colspan="3"> <widget class="QLabel" name="label"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="toolTip"> <string>Default: Secure</string> </property> @@ -609,34 +703,57 @@ QCheckBox:indicator:disabled { </widget> </item> <item row="2" column="3" colspan="6"> - <widget class="QLineEdit" name="PortInput"/> + <widget class="QLineEdit" name="PortInput"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + </widget> </item> <item row="6" column="0"> <widget class="QLabel" name="label_21"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>Auth Token</string> </property> </widget> </item> <item row="6" column="3" colspan="6"> - <widget class="QLineEdit" name="Auth_Token"/> + <widget class="QLineEdit" name="Auth_Token"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + </widget> </item> <item row="4" column="3" alignment="Qt::AlignHCenter"> <widget class="QLabel" name="label_12"> <property name="font"> <font> + <pointsize>14</pointsize> <weight>75</weight> <italic>true</italic> <bold>true</bold> </font> </property> <property name="text"> - <string>ws</string> + <string>WS</string> </property> </widget> </item> <item row="5" column="0"> <widget class="QLabel" name="label_20"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>TLS Server Name</string> </property> @@ -657,6 +774,11 @@ QCheckBox:indicator:disabled { </item> <item row="4" column="0" colspan="2"> <widget class="QLabel" name="label_11"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="toolTip"> <string>Default: WS</string> </property> @@ -666,7 +788,13 @@ QCheckBox:indicator:disabled { </widget> </item> <item row="0" column="3" colspan="6"> - <widget class="QComboBox" name="List_Configs_ComboBox"/> + <widget class="QComboBox" name="List_Configs_ComboBox"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + </widget> </item> <item row="3" column="3" alignment="Qt::AlignHCenter"> <widget class="QLabel" name="label_9"> @@ -682,25 +810,37 @@ QCheckBox:indicator:disabled { <widget class="QLabel" name="label_13"> <property name="font"> <font> + <pointsize>14</pointsize> <weight>75</weight> <italic>true</italic> <bold>true</bold> </font> </property> <property name="text"> - <string>grpc</string> + <string>gRPC</string> </property> </widget> </item> <item row="7" column="0"> <widget class="QLabel" name="label_17"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> <property name="text"> <string>CA.pem File</string> </property> </widget> </item> <item row="7" column="3" colspan="6"> - <widget class="QLineEdit" name="CA_File"/> + <widget class="QLineEdit" name="CA_File"> + <property name="font"> + <font> + <pointsize>14</pointsize> + </font> + </property> + </widget> </item> </layout> </widget> diff --git a/ui/SteeringControls.ui b/ui/SteeringControls.ui index 6d4a4d2..26f40e0 100644 --- a/ui/SteeringControls.ui +++ b/ui/SteeringControls.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>1034</width> + <width>1190</width> <height>600</height> </rect> </property> @@ -67,215 +67,17 @@ QPushButton:checked { </property> <widget class="QWidget" name="centralwidget"> <layout class="QGridLayout" name="gridLayout"> - <item row="2" column="1" rowspan="4" alignment="Qt::AlignRight|Qt::AlignVCenter"> - <widget class="QFrame" name="LeftControls"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item alignment="Qt::AlignHCenter|Qt::AlignVCenter"> - <widget class="QFrame" name="TopLeftControls"> - <property name="minimumSize"> - <size> - <width>200</width> - <height>0</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="2" column="2"> - <widget class="QPushButton" name="NextTrack"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/skip--forward--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/skip--forward--filled.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - </widget> - </item> - <item row="3" column="0" colspan="3"> - <widget class="QPushButton" name="VolumeDown"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/volume--down--filled--alt.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--down--filled--alt.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="Mode"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - <property name="font"> - <font> - <weight>75</weight> - <italic>true</italic> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>MODE</string> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - <property name="checkable"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QPushButton" name="PreviousTrack"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/skip--back--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/skip--back--filled.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - </widget> - </item> - <item row="1" column="0" colspan="3"> - <widget class="QPushButton" name="VolumeUp"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/volume--up--filled--alt.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--up--filled--alt.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - <property name="flat"> - <bool>false</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item alignment="Qt::AlignBottom"> - <widget class="QFrame" name="BottomLeftControls"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QPushButton" name="Info"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/information.svg</normaloff>:/Carbon_Icons/carbon_icons/information.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="VolumeMute"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Carbon_Icons/carbon_icons/volume--mute--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--mute--filled.svg</iconset> - </property> - <property name="iconSize"> - <size> - <width>45</width> - <height>45</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </item> - <item row="2" column="2" rowspan="3" alignment="Qt::AlignVCenter"> - <widget class="QFrame" name="frame"> + <item row="2" column="3" rowspan="5" alignment="Qt::AlignVCenter"> + <widget class="QFrame" name="RightControls"> <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> - <width>0</width> + <width>250</width> <height>0</height> </size> </property> @@ -285,7 +87,7 @@ QPushButton:checked { <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> - <layout class="QGridLayout" name="gridLayout_2"> + <layout class="QGridLayout" name="gridLayout_4"> <property name="leftMargin"> <number>0</number> </property> @@ -301,49 +103,14 @@ QPushButton:checked { <property name="spacing"> <number>0</number> </property> - <item row="1" column="0" alignment="Qt::AlignVCenter"> - <widget class="QPushButton" name="Horn"> + <item row="3" column="0" alignment="Qt::AlignTop"> + <widget class="QFrame" name="BottomRightControls"> <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset resource="../assets/res.qrc"> - <normaloff>:/Images/Images/logo_agl.png</normaloff>:/Images/Images/logo_agl.png</iconset> - </property> - <property name="iconSize"> - <size> - <width>250</width> - <height>250</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="2" column="3" rowspan="4" alignment="Qt::AlignVCenter"> - <widget class="QFrame" name="RightControls"> - <property name="minimumSize"> - <size> - <width>200</width> - <height>0</height> - </size> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="3" column="0" alignment="Qt::AlignTop"> - <widget class="QFrame" name="BottomRightControls"> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> @@ -351,8 +118,14 @@ QPushButton:checked { <enum>QFrame::Raised</enum> </property> <layout class="QGridLayout" name="gridLayout_6"> - <item row="0" column="0"> + <item row="0" column="0" alignment="Qt::AlignHCenter"> <widget class="QPushButton" name="CruiseLimit"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="minimumSize"> <size> <width>0</width> @@ -376,6 +149,18 @@ QPushButton:checked { </item> <item row="0" column="1"> <widget class="QPushButton" name="CruiseDistance"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>70</height> + </size> + </property> <property name="font"> <font> <weight>75</weight> @@ -409,6 +194,12 @@ QPushButton:checked { </item> <item row="1" column="0" alignment="Qt::AlignBottom"> <widget class="QFrame" name="TopRightControls"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> @@ -487,7 +278,7 @@ QPushButton:checked { </property> </widget> </item> - <item row="1" column="2"> + <item row="1" column="2" alignment="Qt::AlignHCenter"> <widget class="QPushButton" name="CruiseCancel"> <property name="sizePolicy"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> @@ -495,6 +286,12 @@ QPushButton:checked { <verstretch>0</verstretch> </sizepolicy> </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> <property name="font"> <font> <weight>75</weight> @@ -542,36 +339,10 @@ QPushButton:checked { </layout> </widget> </item> - <item row="2" column="4" rowspan="4"> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="6" column="0" colspan="5"> - <spacer name="verticalSpacer_4"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item row="5" column="2" alignment="Qt::AlignBottom"> + <item row="6" column="2" alignment="Qt::AlignBottom"> <widget class="QFrame" name="ExtraControls"> <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <sizepolicy hsizetype="Expanding" vsizetype="Ignored"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -585,6 +356,12 @@ QPushButton:checked { <layout class="QHBoxLayout" name="horizontalLayout_2"> <item alignment="Qt::AlignBottom"> <widget class="QPushButton" name="PhoneCall"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Ignored" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string/> </property> @@ -602,6 +379,12 @@ QPushButton:checked { </item> <item alignment="Qt::AlignBottom"> <widget class="QPushButton" name="PhoneHangup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Ignored" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string/> </property> @@ -619,6 +402,12 @@ QPushButton:checked { </item> <item alignment="Qt::AlignBottom"> <widget class="QPushButton" name="Voice"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Ignored" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string/> </property> @@ -636,6 +425,12 @@ QPushButton:checked { </item> <item alignment="Qt::AlignBottom"> <widget class="QPushButton" name="LaneDeparture"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Ignored" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="text"> <string/> </property> @@ -654,7 +449,7 @@ QPushButton:checked { </layout> </widget> </item> - <item row="2" column="0" rowspan="4"> + <item row="2" column="0" rowspan="5"> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -667,6 +462,255 @@ QPushButton:checked { </property> </spacer> </item> + <item row="2" column="1" rowspan="5" alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QFrame" name="LeftControls"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>250</width> + <height>0</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>0</number> + </property> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <item alignment="Qt::AlignVCenter"> + <widget class="QFrame" name="TopLeftControls"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="2" column="2"> + <widget class="QPushButton" name="NextTrack"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/skip--forward--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/skip--forward--filled.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + <item row="3" column="0" colspan="3"> + <widget class="QPushButton" name="VolumeDown"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/volume--down--filled--alt.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--down--filled--alt.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QPushButton" name="Mode"> + <property name="sizePolicy"> + <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="font"> + <font> + <weight>75</weight> + <italic>true</italic> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>MODE</string> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QPushButton" name="PreviousTrack"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/skip--back--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/skip--back--filled.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3"> + <widget class="QPushButton" name="VolumeUp"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/volume--up--filled--alt.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--up--filled--alt.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + <property name="flat"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item alignment="Qt::AlignBottom"> + <widget class="QFrame" name="BottomLeftControls"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="Info"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>70</height> + </size> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/information.svg</normaloff>:/Carbon_Icons/carbon_icons/information.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="VolumeMute"> + <property name="minimumSize"> + <size> + <width>0</width> + <height>70</height> + </size> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Carbon_Icons/carbon_icons/volume--mute--filled.svg</normaloff>:/Carbon_Icons/carbon_icons/volume--mute--filled.svg</iconset> + </property> + <property name="iconSize"> + <size> + <width>45</width> + <height>45</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> <item row="0" column="0" colspan="5"> <spacer name="verticalSpacer_3"> <property name="orientation"> @@ -683,6 +727,113 @@ QPushButton:checked { </property> </spacer> </item> + <item row="2" column="4" rowspan="5"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="7" column="0" colspan="5"> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="2" rowspan="3" alignment="Qt::AlignHCenter|Qt::AlignVCenter"> + <widget class="QFrame" name="frame"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <property name="leftMargin"> + <number>0</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <property name="rightMargin"> + <number>0</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> + <property name="spacing"> + <number>0</number> + </property> + <item row="1" column="0" alignment="Qt::AlignVCenter"> + <widget class="QPushButton" name="Horn"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../assets/res.qrc"> + <normaloff>:/Images/Images/logo_agl.png</normaloff>:/Images/Images/logo_agl.png</iconset> + </property> + <property name="iconSize"> + <size> + <width>350</width> + <height>250</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="5" column="2"> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>50</height> + </size> + </property> + </spacer> + </item> </layout> </widget> </widget> |