Fixed light & dark modes.
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
#include <//qDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include <bcdrivertinycan.h>
|
#include <bcdrivertinycan.h>
|
||||||
#include <can_drv.h>
|
#include <can_drv.h>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
|
|||||||
// CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt
|
// CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt
|
||||||
// Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind
|
// Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind
|
||||||
|
|
||||||
|
/*
|
||||||
setStyleSheet(R"(
|
setStyleSheet(R"(
|
||||||
BCThemeSwitchButton
|
BCThemeSwitchButton
|
||||||
{
|
{
|
||||||
@@ -57,7 +58,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
|
|||||||
border-radius: 24px;
|
border-radius: 24px;
|
||||||
}
|
}
|
||||||
)");
|
)");
|
||||||
|
*/
|
||||||
// Initialer Status (Startet im Dark Mode -> zeigt Mond)
|
// Initialer Status (Startet im Dark Mode -> zeigt Mond)
|
||||||
updateIcon();
|
updateIcon();
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,12 @@ BCMainWindow::BCMainWindow(QWidget *parent)
|
|||||||
qRegisterMetaType<BCValue>("BCValue");
|
qRegisterMetaType<BCValue>("BCValue");
|
||||||
qRegisterMetaType<QList<BCValue>>("BCValueList");
|
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
|
// Wir schreiben den 'initMainWindow()' Aufruf mit Hilfe des
|
||||||
// timers in die Event-Queue, damit er erst ausgeführt wird,
|
// timers in die Event-Queue, damit er erst ausgeführt wird,
|
||||||
@@ -81,7 +85,6 @@ BCMainWindow::~BCMainWindow()
|
|||||||
|
|
||||||
void BCMainWindow::initMainWindow()
|
void BCMainWindow::initMainWindow()
|
||||||
{
|
{
|
||||||
|
|
||||||
// Lambda um die buttons mit ihren Actions zu verbinden
|
// Lambda um die buttons mit ihren Actions zu verbinden
|
||||||
auto configureAction = [&]( QToolButton* button, QAction* action, BCDevice::ID deviceID )
|
auto configureAction = [&]( QToolButton* button, QAction* action, BCDevice::ID deviceID )
|
||||||
{
|
{
|
||||||
@@ -115,29 +118,6 @@ void BCMainWindow::initMainWindow()
|
|||||||
configureAction(_consoleButton, _consoleAction, BCDevice::ID::Console );
|
configureAction(_consoleButton, _consoleAction, BCDevice::ID::Console );
|
||||||
configureAction(_batteryButton, _batteryAction, BCDevice::ID::Battery );
|
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();
|
initStatusBar();
|
||||||
|
|
||||||
_connectButton->setDefaultAction( _connectAction);
|
_connectButton->setDefaultAction( _connectAction);
|
||||||
@@ -165,12 +145,12 @@ void BCMainWindow::initMainWindow()
|
|||||||
//_batteryAction->trigger();
|
//_batteryAction->trigger();
|
||||||
|
|
||||||
// Dummy sync beim starten
|
// Dummy sync beim starten
|
||||||
|
|
||||||
QTimer::singleShot(1000, this, [this]()
|
QTimer::singleShot(1000, this, [this]()
|
||||||
{
|
{
|
||||||
onSyncDeviceView();
|
onSyncDeviceView();
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// 2. Bild für den Zustand UNCHECKED (Off) hinzufügen
|
// 2. Bild für den Zustand UNCHECKED (Off) hinzufügen
|
||||||
|
|||||||
@@ -165,14 +165,10 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="bionxcontrol.qrc">
|
|
||||||
<normaloff>:/sync.png</normaloff>:/sync.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
<width>48</width>
|
<width>64</width>
|
||||||
<height>48</height>
|
<height>64</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="autoRaise">
|
<property name="autoRaise">
|
||||||
@@ -191,14 +187,10 @@
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
|
||||||
<iconset resource="bionxcontrol.qrc">
|
|
||||||
<normaloff>:/connect.png</normaloff>:/connect.png</iconset>
|
|
||||||
</property>
|
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
<width>48</width>
|
<width>64</width>
|
||||||
<height>48</height>
|
<height>64</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="autoRaise">
|
<property name="autoRaise">
|
||||||
@@ -223,8 +215,8 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
<width>48</width>
|
<width>64</width>
|
||||||
<height>48</height>
|
<height>64</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="autoRaise">
|
<property name="autoRaise">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <//qDebug>
|
#include <QDebug>
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
#include <bctransmitter.h>
|
#include <bctransmitter.h>
|
||||||
|
|||||||
@@ -107,6 +107,7 @@ void BCXmlLoader::loadXmlBikeData( const QString& fileName )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Lädt deie Daten des BionX eBikes
|
* @brief Lädt deie Daten des BionX eBikes
|
||||||
* @param deviceID
|
* @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 )
|
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.
|
||||||
Wir brauchen:
|
// - einen gültige UnitType String um den ValueType herauszufinden.
|
||||||
- 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
|
// geht nicht auf qt6.8 von debian trixie
|
||||||
//std::optional<quint64> IDVal = s_bcValueEnum.keyToValue64( params.ID.toLatin1().constData() );
|
//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 ===== */
|
/* ===== Fluent Dark Mode Theme ===== */
|
||||||
/* Basierend auf Microsoft Fluent Design System */
|
/* Basierend auf Microsoft Fluent Design System */
|
||||||
|
|
||||||
@@ -32,6 +15,12 @@ QWidget {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QLabel#_headerLabel
|
||||||
|
{
|
||||||
|
font-size: 18pt;
|
||||||
|
/*font-weight: bold;*/
|
||||||
|
}
|
||||||
|
|
||||||
QWidget:disabled {
|
QWidget:disabled {
|
||||||
color: #6d6d6d;
|
color: #6d6d6d;
|
||||||
}
|
}
|
||||||
@@ -128,55 +117,6 @@ QTableView::item:selected:!active {
|
|||||||
background-color: rgba(0, 120, 212, 0.5);
|
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 === */
|
||||||
QScrollBar:vertical {
|
QScrollBar:vertical {
|
||||||
@@ -242,35 +182,6 @@ QScrollBar::sub-page:horizontal {
|
|||||||
background: transparent;
|
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 === */
|
||||||
QToolTip {
|
QToolTip {
|
||||||
background-color: #323232;
|
background-color: #323232;
|
||||||
|
|||||||
@@ -1,12 +1,18 @@
|
|||||||
/* appqss */
|
/* ===== Fluent Light Mode Theme ===== */
|
||||||
|
/* Basierend auf Microsoft Fluent Design System */
|
||||||
|
|
||||||
/* Alle QWidgets bekommen diesen Font */
|
/* === Color Palette === */
|
||||||
QWidget
|
/* Background: #f3f3f3, #ffffff, #fafafa */
|
||||||
{
|
/* Accent: #0078d4 (Fluent Blue) */
|
||||||
font-family: "Calibri", "Carlito", "Open Sans", sans-serif;
|
/* Text: #000000, #1f1f1f */
|
||||||
font-size: 10pt;
|
/* Borders: #e1e1e1, #d1d1d1 */
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
/* === QWidget Base === */
|
||||||
|
QWidget {
|
||||||
|
background-color: #f3f3f3;
|
||||||
|
color: #1f1f1f;
|
||||||
|
font-family: "Segoe UI", "Roboto", sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
QLabel#_headerLabel
|
QLabel#_headerLabel
|
||||||
@@ -15,149 +21,124 @@ QLabel#_headerLabel
|
|||||||
/*font-weight: bold;*/
|
/*font-weight: bold;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
QWidget:disabled {
|
||||||
QToolButton
|
color: #a0a0a0;
|
||||||
{
|
|
||||||
background-color: white;
|
|
||||||
color: #201F1E;
|
|
||||||
border: 1px solid #8A8886;
|
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
|
|
||||||
min-width: 64px;
|
|
||||||
max-width: 64px;
|
|
||||||
min-height: 64px;
|
|
||||||
max-height: 64px;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
QToolButton {
|
||||||
{
|
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
color: #000000;
|
color: #1f1f1f;
|
||||||
border: none;
|
border: 1px solid transparent;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding: 6px;
|
padding: 6px 12px;
|
||||||
|
|
||||||
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;
|
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::handle:horizontal:hover
|
QToolButton:hover {
|
||||||
{
|
background-color: rgba(0, 0, 0, 0.03);
|
||||||
background-color: #A19F9D;
|
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::handle:horizontal:pressed
|
QToolButton:pressed {
|
||||||
{
|
background-color: rgba(0, 0, 0, 0.06);
|
||||||
background-color: #8A8886;
|
border: 1px solid rgba(0, 0, 0, 0.08);
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::add-line:horizontal,
|
QToolButton:checked {
|
||||||
QScrollBar::sub-line:horizontal
|
background-color: rgba(0, 120, 212, 0.1);
|
||||||
{
|
border: 1px solid #0078d4;
|
||||||
width: 0px;
|
color: #0078d4;
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::add-page:horizontal,
|
QToolButton:checked:hover {
|
||||||
QScrollBar::sub-page:horizontal
|
background-color: rgba(0, 120, 212, 0.15);
|
||||||
{
|
|
||||||
background: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar:vertical {
|
QToolButton:disabled {
|
||||||
|
color: #a0a0a0;
|
||||||
background-color: transparent;
|
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;
|
width: 12px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::handle:vertical {
|
QScrollBar::handle:vertical {
|
||||||
background-color: #C8C6C4;
|
background: rgba(0, 0, 0, 0.25);
|
||||||
min-height: 40px;
|
min-height: 30px;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::handle:vertical:hover {
|
QScrollBar::handle:vertical:hover {
|
||||||
background-color: #A19F9D;
|
background: rgba(0, 0, 0, 0.4);
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::handle:vertical:pressed {
|
QScrollBar::handle:vertical:pressed {
|
||||||
background-color: #8A8886;
|
background: rgba(0, 0, 0, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
QScrollBar::add-line:vertical,
|
QScrollBar::add-line:vertical,
|
||||||
@@ -167,7 +148,81 @@ QScrollBar::sub-line:vertical {
|
|||||||
|
|
||||||
QScrollBar::add-page:vertical,
|
QScrollBar::add-page:vertical,
|
||||||
QScrollBar::sub-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'>
|
<Bike name='franken-wheeler'>
|
||||||
|
|
||||||
<Device Type="Console">
|
<Device Type='Console'>
|
||||||
<Value ID='Cons_Rev_Hw' Label='Hardware Version' />
|
<Value ID='Cons_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
|
||||||
<Value ID='Cons_Rev_Sw' Label='Software Version' />
|
<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_Product_Hi' Label='Product Number' IsWord='1' ValueType='Plain'/>
|
||||||
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' />
|
<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_Maxspeed_Flag' Label='Max Limit Enabled' ValueType='Bool' />
|
||||||
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
|
<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_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_Minspeed_Flag' Label='Min 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' 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_Throttle_Maxspeed_Flag' Label='Throttle 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_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_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' ValueType='Number'/>
|
||||||
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' />
|
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' UnitLabel='%' Factor='1.5625' ValueType='Float'/>
|
||||||
|
|
||||||
<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' />
|
|
||||||
</Device>
|
</Device>
|
||||||
|
|
||||||
|
|
||||||
<Device Type="Motor">
|
<Device Type='Motor'>
|
||||||
<Value ID='Motor_Rev_Hw' Label='Hardware Version' />
|
<Value ID='Motor_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
|
||||||
<Value ID='Motor_Rev_Sw' Label='Software Version' />
|
<Value ID='Motor_Rev_Sw' Label='Software Version' ValueType='Plain'/>
|
||||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' IsWord='1'/>
|
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' ValueType='Plain' IsWord='1'/>
|
||||||
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' IsWord='1' />
|
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' ValueType='Plain' IsWord='1' />
|
||||||
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' UnitLabel='°C' />
|
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' ValueType='Float' UnitLabel='°C' />
|
||||||
<Value ID='Motor_Assist_Maxspeed' Label='Motor max. Speed' Reader='Kmh' />
|
<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' />
|
<Value ID='Motor_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' />
|
||||||
</Device>
|
</Device>
|
||||||
|
|
||||||
<Device Type="Battery">
|
<Device Type='Battery'>
|
||||||
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
|
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
|
||||||
<Value ID='Battery_Rev_Sw' Label='Software Version' />
|
<Value ID='Battery_Rev_Sw' Label='Software Version' />
|
||||||
</Device>
|
</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