Fixed light & dark modes.
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
#include <//qDebug>
|
||||
#include <QDebug>
|
||||
|
||||
#include <bcdrivertinycan.h>
|
||||
#include <can_drv.h>
|
||||
|
||||
@@ -44,6 +44,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
|
||||
// CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt
|
||||
// Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind
|
||||
|
||||
/*
|
||||
setStyleSheet(R"(
|
||||
BCThemeSwitchButton
|
||||
{
|
||||
@@ -57,7 +58,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
|
||||
border-radius: 24px;
|
||||
}
|
||||
)");
|
||||
|
||||
*/
|
||||
// Initialer Status (Startet im Dark Mode -> zeigt Mond)
|
||||
updateIcon();
|
||||
|
||||
|
||||
@@ -50,8 +50,12 @@ BCMainWindow::BCMainWindow(QWidget *parent)
|
||||
qRegisterMetaType<BCValue>("BCValue");
|
||||
qRegisterMetaType<QList<BCValue>>("BCValueList");
|
||||
|
||||
setupUi(this);
|
||||
#if defined(Q_OS_LINUX)
|
||||
// Für Touch screen: Window FRam weglassen
|
||||
//setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
|
||||
#endif
|
||||
|
||||
setupUi(this);
|
||||
|
||||
// Wir schreiben den 'initMainWindow()' Aufruf mit Hilfe des
|
||||
// timers in die Event-Queue, damit er erst ausgeführt wird,
|
||||
@@ -81,7 +85,6 @@ BCMainWindow::~BCMainWindow()
|
||||
|
||||
void BCMainWindow::initMainWindow()
|
||||
{
|
||||
|
||||
// Lambda um die buttons mit ihren Actions zu verbinden
|
||||
auto configureAction = [&]( QToolButton* button, QAction* action, BCDevice::ID deviceID )
|
||||
{
|
||||
@@ -115,29 +118,6 @@ void BCMainWindow::initMainWindow()
|
||||
configureAction(_consoleButton, _consoleAction, BCDevice::ID::Console );
|
||||
configureAction(_batteryButton, _batteryAction, BCDevice::ID::Battery );
|
||||
|
||||
/*
|
||||
bool m_isDarkMode = false;
|
||||
QString icon = m_isDarkMode ? "☀️" : "🌙";
|
||||
fitzeButton->setText(icon);
|
||||
|
||||
QString style = QString(
|
||||
"QPushButton {"
|
||||
" background-color: %1;"
|
||||
" border: 1px solid %2;"
|
||||
" border-radius: 6px;"
|
||||
" font-size: 12pt;"
|
||||
" padding: 0px;"
|
||||
"}"
|
||||
"QPushButton:hover {"
|
||||
" background-color: %3;"
|
||||
"}"
|
||||
).arg(m_isDarkMode ? "#2B2B2B" : "#FFFFFF")
|
||||
.arg(m_isDarkMode ? "#3F3F3F" : "#E1DFDD")
|
||||
.arg(m_isDarkMode ? "#3A3A3A" : "#F9F9F9");
|
||||
|
||||
fitzeButton->setStyleSheet(style);
|
||||
*/
|
||||
|
||||
initStatusBar();
|
||||
|
||||
_connectButton->setDefaultAction( _connectAction);
|
||||
@@ -165,11 +145,11 @@ void BCMainWindow::initMainWindow()
|
||||
//_batteryAction->trigger();
|
||||
|
||||
// Dummy sync beim starten
|
||||
|
||||
QTimer::singleShot(1000, this, [this]()
|
||||
{
|
||||
onSyncDeviceView();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -165,14 +165,10 @@
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="bionxcontrol.qrc">
|
||||
<normaloff>:/sync.png</normaloff>:/sync.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>48</width>
|
||||
<height>48</height>
|
||||
<width>64</width>
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
@@ -191,14 +187,10 @@
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="bionxcontrol.qrc">
|
||||
<normaloff>:/connect.png</normaloff>:/connect.png</iconset>
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>48</width>
|
||||
<height>48</height>
|
||||
<width>64</width>
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
@@ -223,8 +215,8 @@
|
||||
</property>
|
||||
<property name="iconSize">
|
||||
<size>
|
||||
<width>48</width>
|
||||
<height>48</height>
|
||||
<width>64</width>
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
|
||||
#include <QThread>
|
||||
#include <//qDebug>
|
||||
#include <QDebug>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include <bctransmitter.h>
|
||||
|
||||
@@ -107,6 +107,7 @@ void BCXmlLoader::loadXmlBikeData( const QString& fileName )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Lädt deie Daten des BionX eBikes
|
||||
* @param deviceID
|
||||
@@ -169,6 +170,11 @@ void BCXmlLoader::loadXmlBikeDeviceData(BCDevice::ID deviceID)
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Erzeugt einen BCValue für die DeviceID aus dem gegebenen parameter pack
|
||||
*/
|
||||
|
||||
std::optional<BCValuePtr> BCXmlLoader::makeValue( BCDevice::ID deviceID, const BCValueParams& params )
|
||||
{
|
||||
|
||||
@@ -191,13 +197,9 @@ std::optional<BCValuePtr> BCXmlLoader::makeValue( BCDevice::ID deviceID, const B
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
Wir brauchen:
|
||||
- einen gültige ID String um die enum ID herauszufinden.
|
||||
- einen gültige UnitType String um den ValueType herauszufinden.
|
||||
|
||||
*/
|
||||
// Wir brauchen:
|
||||
// - einen gültige ID String um die enum ID herauszufinden.
|
||||
// - einen gültige UnitType String um den ValueType herauszufinden.
|
||||
|
||||
// geht nicht auf qt6.8 von debian trixie
|
||||
//std::optional<quint64> IDVal = s_bcValueEnum.keyToValue64( params.ID.toLatin1().constData() );
|
||||
|
||||
@@ -1,20 +1,3 @@
|
||||
/* appqss */
|
||||
|
||||
/* Alle QWidgets bekommen diesen Font */
|
||||
QWidget
|
||||
{
|
||||
font-family: "Calibri", "Carlito", "Open Sans", sans-serif;
|
||||
font-size: 10pt;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
QLabel#_headerLabel
|
||||
{
|
||||
font-size: 14pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* ===== Fluent Dark Mode Theme ===== */
|
||||
/* Basierend auf Microsoft Fluent Design System */
|
||||
|
||||
@@ -32,6 +15,12 @@ QWidget {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
QLabel#_headerLabel
|
||||
{
|
||||
font-size: 18pt;
|
||||
/*font-weight: bold;*/
|
||||
}
|
||||
|
||||
QWidget:disabled {
|
||||
color: #6d6d6d;
|
||||
}
|
||||
@@ -128,55 +117,6 @@ QTableView::item:selected:!active {
|
||||
background-color: rgba(0, 120, 212, 0.5);
|
||||
}
|
||||
|
||||
/* === QHeaderView === */
|
||||
QHeaderView {
|
||||
background-color: #323232;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #323232;
|
||||
color: #e4e4e4;
|
||||
padding: 8px 12px;
|
||||
border: none;
|
||||
border-right: 1px solid #3d3d3d;
|
||||
border-bottom: 1px solid #3d3d3d;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
QHeaderView::section:horizontal {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
QHeaderView::section:vertical {
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
QHeaderView::section:hover {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
QHeaderView::section:pressed {
|
||||
background-color: rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
QHeaderView::section:checked {
|
||||
background-color: rgba(0, 120, 212, 0.15);
|
||||
color: #0078d4;
|
||||
}
|
||||
|
||||
/* Sort indicator */
|
||||
QHeaderView::up-arrow {
|
||||
image: url(:/icons/arrow-up-white.svg);
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
QHeaderView::down-arrow {
|
||||
image: url(:/icons/arrow-down-white.svg);
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
/* === QScrollBar Vertical === */
|
||||
QScrollBar:vertical {
|
||||
@@ -242,35 +182,6 @@ QScrollBar::sub-page:horizontal {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* === QMenu (für ToolButton Dropdown) === */
|
||||
QMenu {
|
||||
background-color: #2b2b2b;
|
||||
border: 1px solid #3d3d3d;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
QMenu::item {
|
||||
padding: 6px 24px 6px 12px;
|
||||
border-radius: 4px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QMenu::item:selected {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
}
|
||||
|
||||
QMenu::item:pressed {
|
||||
background-color: rgba(255, 255, 255, 0.03);
|
||||
}
|
||||
|
||||
QMenu::separator {
|
||||
height: 1px;
|
||||
background: #3d3d3d;
|
||||
margin: 4px 8px;
|
||||
}
|
||||
|
||||
/* === QToolTip === */
|
||||
QToolTip {
|
||||
background-color: #323232;
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
/* appqss */
|
||||
/* ===== Fluent Light Mode Theme ===== */
|
||||
/* Basierend auf Microsoft Fluent Design System */
|
||||
|
||||
/* Alle QWidgets bekommen diesen Font */
|
||||
QWidget
|
||||
{
|
||||
font-family: "Calibri", "Carlito", "Open Sans", sans-serif;
|
||||
font-size: 10pt;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
/* === Color Palette === */
|
||||
/* Background: #f3f3f3, #ffffff, #fafafa */
|
||||
/* Accent: #0078d4 (Fluent Blue) */
|
||||
/* Text: #000000, #1f1f1f */
|
||||
/* Borders: #e1e1e1, #d1d1d1 */
|
||||
|
||||
/* === QWidget Base === */
|
||||
QWidget {
|
||||
background-color: #f3f3f3;
|
||||
color: #1f1f1f;
|
||||
font-family: "Segoe UI", "Roboto", sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
QLabel#_headerLabel
|
||||
@@ -15,149 +21,124 @@ QLabel#_headerLabel
|
||||
/*font-weight: bold;*/
|
||||
}
|
||||
|
||||
/*
|
||||
QToolButton
|
||||
{
|
||||
background-color: white;
|
||||
color: #201F1E;
|
||||
border: 1px solid #8A8886;
|
||||
border-radius: 4px;
|
||||
|
||||
|
||||
min-width: 64px;
|
||||
max-width: 64px;
|
||||
min-height: 64px;
|
||||
max-height: 64px;
|
||||
|
||||
QWidget:disabled {
|
||||
color: #a0a0a0;
|
||||
}
|
||||
|
||||
QToolButton:hover
|
||||
{
|
||||
background-color: #F3F2F1;
|
||||
border: 1px solid #323130;
|
||||
}
|
||||
|
||||
QToolButton:pressed
|
||||
{
|
||||
background-color: #EDEBE9;
|
||||
border: 1px solid #201F1E;
|
||||
}
|
||||
|
||||
QToolButton:disabled
|
||||
{
|
||||
background-color: #F3F2F1;
|
||||
color: #A19F9D;
|
||||
border: 1px solid #EDEBE9;
|
||||
}
|
||||
*/
|
||||
|
||||
/* === QToolButton === */
|
||||
QToolButton
|
||||
{
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: #000000;
|
||||
border: none;
|
||||
color: #1f1f1f;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
|
||||
min-width: 64px;
|
||||
max-width: 64px;
|
||||
min-height: 64px;
|
||||
max-height: 64px;
|
||||
}
|
||||
|
||||
QToolButton:hover
|
||||
{
|
||||
background-color: #F9F9F9;
|
||||
border: 1px solid #DDDDDD;
|
||||
}
|
||||
|
||||
QToolButton:pressed
|
||||
{
|
||||
background-color: #E0E0E0;
|
||||
}
|
||||
|
||||
QToolButton:checked
|
||||
{
|
||||
background-color: #AAAAAA;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QToolButton:disabled
|
||||
{
|
||||
color: #A19F9D;
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* === QTableView & QTableWidget === */
|
||||
|
||||
QTableView, QTableWidget
|
||||
{
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
gridline-color: #E1DFDD;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
selection-background-color: #0078D4;
|
||||
}
|
||||
|
||||
QTableView::item:hover
|
||||
{
|
||||
background-color: #e8f4f8;
|
||||
}
|
||||
|
||||
|
||||
QScrollBar::handle:horizontal
|
||||
{
|
||||
background-color: #C8C6C4;
|
||||
min-width: 40px;
|
||||
border-radius: 6px;
|
||||
padding: 6px 12px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:hover
|
||||
{
|
||||
background-color: #A19F9D;
|
||||
QToolButton:hover {
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:pressed
|
||||
{
|
||||
background-color: #8A8886;
|
||||
QToolButton:pressed {
|
||||
background-color: rgba(0, 0, 0, 0.06);
|
||||
border: 1px solid rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
QScrollBar::add-line:horizontal,
|
||||
QScrollBar::sub-line:horizontal
|
||||
{
|
||||
width: 0px;
|
||||
QToolButton:checked {
|
||||
background-color: rgba(0, 120, 212, 0.1);
|
||||
border: 1px solid #0078d4;
|
||||
color: #0078d4;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:horizontal,
|
||||
QScrollBar::sub-page:horizontal
|
||||
{
|
||||
background: none;
|
||||
QToolButton:checked:hover {
|
||||
background-color: rgba(0, 120, 212, 0.15);
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
QToolButton:disabled {
|
||||
color: #a0a0a0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* ToolButton mit Icon */
|
||||
QToolButton[popupMode="1"] { /* MenuButtonPopup */
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
QToolButton::menu-button {
|
||||
border: none;
|
||||
border-left: 1px solid rgba(0, 0, 0, 0.1);
|
||||
width: 16px;
|
||||
border-top-right-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
}
|
||||
|
||||
QToolButton::menu-button:hover {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
QToolButton::menu-arrow {
|
||||
image: url(:/icons/chevron-down-black.svg);
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
/* === QTableView === */
|
||||
QTableView {
|
||||
background-color: #ffffff;
|
||||
alternate-background-color: #fafafa;
|
||||
color: #1f1f1f;
|
||||
gridline-color: #e1e1e1;
|
||||
border: 1px solid #d1d1d1;
|
||||
border-radius: 4px;
|
||||
selection-background-color: #0078d4;
|
||||
selection-color: #ffffff;
|
||||
}
|
||||
|
||||
QTableView::item {
|
||||
padding: 8px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QTableView::item:hover {
|
||||
background-color: rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
|
||||
QTableView::item:selected {
|
||||
background-color: #0078d4;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
QTableView::item:selected:hover {
|
||||
background-color: #005a9e;
|
||||
}
|
||||
|
||||
QTableView::item:selected:!active {
|
||||
background-color: rgba(0, 120, 212, 0.3);
|
||||
color: #1f1f1f;
|
||||
}
|
||||
|
||||
|
||||
/* === QScrollBar Vertical === */
|
||||
QScrollBar:vertical {
|
||||
background: transparent;
|
||||
width: 12px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
background-color: #C8C6C4;
|
||||
min-height: 40px;
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
min-height: 30px;
|
||||
border-radius: 6px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover {
|
||||
background-color: #A19F9D;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:pressed {
|
||||
background-color: #8A8886;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
QScrollBar::add-line:vertical,
|
||||
@@ -167,7 +148,81 @@ QScrollBar::sub-line:vertical {
|
||||
|
||||
QScrollBar::add-page:vertical,
|
||||
QScrollBar::sub-page:vertical {
|
||||
background: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* === QScrollBar Horizontal === */
|
||||
QScrollBar:horizontal {
|
||||
background: transparent;
|
||||
height: 12px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal {
|
||||
background: rgba(0, 0, 0, 0.25);
|
||||
min-width: 30px;
|
||||
border-radius: 6px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:hover {
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:pressed {
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
QScrollBar::add-line:horizontal,
|
||||
QScrollBar::sub-line:horizontal {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:horizontal,
|
||||
QScrollBar::sub-page:horizontal {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* === QToolTip === */
|
||||
QToolTip {
|
||||
background-color: #ffffff;
|
||||
color: #1f1f1f;
|
||||
border: 1px solid #d1d1d1;
|
||||
border-radius: 4px;
|
||||
padding: 6px 8px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/* === Corner Widget (zwischen Scrollbars) === */
|
||||
QTableView QTableCornerButton::section {
|
||||
background-color: #fafafa;
|
||||
border: none;
|
||||
border-right: 1px solid #e1e1e1;
|
||||
border-bottom: 1px solid #e1e1e1;
|
||||
}
|
||||
|
||||
/* QLineEdit */
|
||||
QLineEdit {
|
||||
background-color: #ffffff;
|
||||
color: #1f1f1f;
|
||||
border: 1px solid #d1d1d1;
|
||||
border-radius: 4px;
|
||||
padding: 6px 8px;
|
||||
selection-background-color: #0078d4;
|
||||
selection-color: #ffffff;
|
||||
}
|
||||
|
||||
QLineEdit:hover {
|
||||
border: 1px solid #a0a0a0;
|
||||
}
|
||||
|
||||
QLineEdit:focus {
|
||||
border: 1px solid #0078d4;
|
||||
border-bottom: 2px solid #0078d4;
|
||||
}
|
||||
|
||||
QLineEdit:disabled {
|
||||
background-color: #fafafa;
|
||||
color: #a0a0a0;
|
||||
border: 1px solid #e1e1e1;
|
||||
}
|
||||
@@ -2,47 +2,45 @@
|
||||
|
||||
<Bike name='franken-wheeler'>
|
||||
|
||||
<Device Type="Console">
|
||||
<Value ID='Cons_Rev_Hw' Label='Hardware Version' />
|
||||
<Value ID='Cons_Rev_Sw' Label='Software Version' />
|
||||
<Device Type='Console'>
|
||||
<Value ID='Cons_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
|
||||
<Value ID='Cons_Rev_Sw' Label='Software Version' ValueType='Plain'/>
|
||||
|
||||
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1'/>
|
||||
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' />
|
||||
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1' ValueType='Plain'/>
|
||||
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' ValueType='Plain'/>
|
||||
|
||||
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4'/>
|
||||
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4' ValueType='Number'/>
|
||||
|
||||
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
|
||||
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
|
||||
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
|
||||
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
|
||||
|
||||
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
||||
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' ValueType='Bool' />
|
||||
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' ValueType='Float'/>
|
||||
|
||||
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' ValueType='bool' />
|
||||
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70'/>
|
||||
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' ValueType='Bool' />
|
||||
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' UnitLabel='km/h' Min='0' Max='70' ValueType='Float'/>
|
||||
|
||||
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' ValueType='bool' />
|
||||
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' UnitLabel='km/h' Min='0' Max='70' />
|
||||
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' ValueType='Bool'/>
|
||||
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' ValueType='Float'/>
|
||||
|
||||
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' ValueType='bool'/>
|
||||
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' />
|
||||
|
||||
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' />
|
||||
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' UnitLabel='%' Factor='1.5625' />
|
||||
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' ValueType='Number'/>
|
||||
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' UnitLabel='%' Factor='1.5625' ValueType='Float'/>
|
||||
</Device>
|
||||
|
||||
|
||||
<Device Type="Motor">
|
||||
<Value ID='Motor_Rev_Hw' Label='Hardware Version' />
|
||||
<Value ID='Motor_Rev_Sw' Label='Software Version' />
|
||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' IsWord='1'/>
|
||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' IsWord='1' />
|
||||
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' UnitLabel='°C' />
|
||||
<Value ID='Motor_Assist_Maxspeed' Label='Motor max. Speed' Reader='Kmh' />
|
||||
|
||||
<Device Type='Motor'>
|
||||
<Value ID='Motor_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
|
||||
<Value ID='Motor_Rev_Sw' Label='Software Version' ValueType='Plain'/>
|
||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' ValueType='Plain' IsWord='1'/>
|
||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' ValueType='Plain' IsWord='1' />
|
||||
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' ValueType='Float' UnitLabel='°C' />
|
||||
<Value ID='Motor_Assist_Maxspeed' Label='Motor max. Speed' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' />
|
||||
<Value ID='Motor_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' />
|
||||
</Device>
|
||||
|
||||
<Device Type="Battery">
|
||||
<Device Type='Battery'>
|
||||
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
|
||||
<Value ID='Battery_Rev_Sw' Label='Software Version' />
|
||||
</Device>
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
/* --- GEMINI GLOBALE EINSTELLUNGEN --- */
|
||||
|
||||
QWidget {
|
||||
/* Dunkler Hintergrund (Mica-Ersatz) */
|
||||
background-color: #202020;
|
||||
|
||||
/* Fluent Textfarbe (Off-White ist augenschonender als Pure-White) */
|
||||
color: #e0e0e0;
|
||||
|
||||
/* Font Stack: Bevorzugt Segoe, Fallback auf Open Sans (Linux) */
|
||||
font-family: "Segoe UI", "Open Sans", "Carlito", sans-serif;
|
||||
|
||||
}
|
||||
|
||||
/* Deaktivierte Widgets */
|
||||
QWidget:disabled {
|
||||
color: #606060;
|
||||
}
|
||||
|
||||
/* --- QTOOLBUTTON (INTERACTIVE) --- */
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px; /* Fluent Rounded Corners */
|
||||
padding: 6px; /* Touch-freundliches Padding */
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
/* Hover-Effekt: Subtiler heller Overlay */
|
||||
QToolButton:hover {
|
||||
background-color: rgba(255, 255, 255, 0.06);
|
||||
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
/* Pressed-Effekt: Etwas dunkler/kompakter */
|
||||
QToolButton:pressed {
|
||||
background-color: rgba(255, 255, 255, 0.03);
|
||||
color: #a0a0a0;
|
||||
}
|
||||
|
||||
/* Checked (Toggle) Zustand: Akzentuierter Hintergrund */
|
||||
QToolButton:checked {
|
||||
background-color: rgba(96, 205, 255, 0.15); /* Akzentfarbe transparent */
|
||||
border: 1px solid rgba(96, 205, 255, 0.3);
|
||||
color: #60CDFF; /* Text in Akzentfarbe */
|
||||
}
|
||||
|
||||
/* --- QTABLEVIEW (DATA) --- */
|
||||
QTableView {
|
||||
/* Etwas hellerer Hintergrund als das Fenster für Tiefe */
|
||||
background-color: #292929;
|
||||
|
||||
/* Keine harten Rahmen, Fluent nutzt Whitespace */
|
||||
border: 1px solid #353535;
|
||||
border-radius: 6px;
|
||||
|
||||
/* Grid-Linien sehr subtil */
|
||||
gridline-color: #353535;
|
||||
|
||||
/* Selection Style */
|
||||
selection-background-color: #60CDFF; /* Fluent Blue */
|
||||
selection-color: #000000; /* Schwarzer Text auf hellem Blau für Kontrast */
|
||||
|
||||
outline: none; /* Entfernt den punktierten Fokus-Rahmen */
|
||||
}
|
||||
|
||||
QTableView::item {
|
||||
padding: 5px; /* Luftigkeit */
|
||||
border: none;
|
||||
}
|
||||
|
||||
QTableView::item:selected {
|
||||
background-color: #60CDFF;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
QTableView::item:hover {
|
||||
/* Hover über Zeilen (wenn SelectionMode Row ist) */
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
/* --- HEADER VIEW (SPALTENKÖPFE) --- */
|
||||
QHeaderView {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #202020; /* Verschmilzt mit Hintergrund */
|
||||
color: #a0a0a0; /* Sekundäre Textfarbe für Labels */
|
||||
border: none;
|
||||
border-bottom: 1px solid #353535; /* Trennlinie zum Inhalt */
|
||||
padding: 4px 8px;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* --- SCROLLBARS (MINIMALISTISCH) --- */
|
||||
/* Standard Linux Scrollbars zerstören den Look, daher custom: */
|
||||
QScrollBar:vertical {
|
||||
background: transparent;
|
||||
width: 12px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
background: #454545;
|
||||
min-height: 20px;
|
||||
border-radius: 6px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover {
|
||||
background: #606060;
|
||||
}
|
||||
|
||||
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
|
||||
height: 0px; /* Pfeile oben/unten ausblenden */
|
||||
}
|
||||
Reference in New Issue
Block a user