summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsuchinton2001 <suchinton.2001@gmail.com>2023-10-20 15:50:09 +0530
committersuchinton2001 <suchinton.2001@gmail.com>2023-10-23 00:19:17 +0530
commit9af16ad7272f4e1d068004fc4443db5d14f89b3c (patch)
tree79871060d0157332ca971fcbe1c86f02f61419fa
parent20fe2d131df0041e121eccaf4fc58d4ac88dfbbc (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.md2
-rw-r--r--Widgets/Dashboard.py62
-rw-r--r--Widgets/HVACPage.py58
-rw-r--r--Widgets/ICPage.py71
-rw-r--r--Widgets/SteeringCtrlPage.py67
-rw-r--r--Widgets/settings.py65
-rwxr-xr-xdocker/install_packages.sh3
-rw-r--r--extras/FeedCAN.py11
-rw-r--r--extras/FeedKuksa.py23
-rw-r--r--extras/Kuksa_Instance.py7
-rw-r--r--extras/UI_Handeler.py58
-rw-r--r--main.py94
-rw-r--r--ui/Dashboard.ui293
-rw-r--r--ui/HVAC.ui1558
-rw-r--r--ui/IC.ui1751
-rw-r--r--ui/Settings_Window.ui154
-rw-r--r--ui/SteeringControls.ui697
17 files changed, 2656 insertions, 2318 deletions
diff --git a/README.md b/README.md
index 6256ccc..fb01471 100644
--- a/README.md
+++ b/README.md
@@ -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()
diff --git a/main.py b/main.py
index c4185f6..9fe799e 100644
--- a/main.py
+++ b/main.py
@@ -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>
diff --git a/ui/HVAC.ui b/ui/HVAC.ui
index 8779962..eff65e0 100644
--- a/ui/HVAC.ui
+++ b/ui/HVAC.ui
@@ -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>
diff --git a/ui/IC.ui b/ui/IC.ui
index 4452564..b337ef6 100644
--- a/ui/IC.ui
+++ b/ui/IC.ui
@@ -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>