diff --git a/bcitemdelegate.cpp b/bcitemdelegate.cpp index eaf2aba..db4c38d 100644 --- a/bcitemdelegate.cpp +++ b/bcitemdelegate.cpp @@ -141,7 +141,7 @@ QSize BCItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelI } -void BCItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +void BCItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { /* // 1. Standard-Zeichnen (Text, Hintergrund, Selection) durchführen @@ -193,17 +193,57 @@ void BCItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option if (m_rowOpacities.contains(row)) { + /* qreal opacity = m_rowOpacities.value(row); - if (opacity > 0.01) { + if (opacity > 0.01) + { painter->save(); painter->setOpacity(opacity); painter->fillRect(option.rect, QColor(255, 140, 0, 120)); painter->restore(); } + */ + paintHighlightRow(painter,option,index); } } +void BCItemDelegate::paintHighlightRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + painter->save(); + painter->setRenderHint(QPainter::Antialiasing); + + int row = index.row(); + qreal opacity = m_rowOpacities.value(row); + painter->setOpacity(opacity); + // Margin von 4px + QRect itemRect = option.rect.adjusted(4, 4, -4, -4); + + // Border von 2px berücksichtigen (nach innen) + QRect contentRect = itemRect.adjusted(2, 2, -2, -2); + + // Hintergrund (weiß) + painter->setBrush(Qt::white); + painter->setPen(Qt::NoPen); + painter->drawRoundedRect(itemRect, 8, 8); + + // Border (2px solid #2196F3) + QPen borderPen( Qt::red, 2); + painter->setPen(borderPen); + painter->setBrush(Qt::NoBrush); + painter->drawRoundedRect(itemRect, 8, 8); + + // Padding von 8px für den Content + QRect textRect = contentRect.adjusted(8, 8, -8, -8); + + // Text zeichnen + painter->setPen(Qt::black); // oder option.palette.color(QPalette::Text) + QString text = index.data(Qt::DisplayRole).toString(); + painter->drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, text); + + painter->restore(); +} + void BCItemDelegate::onHighlightRow(int row) { diff --git a/bcitemdelegate.h b/bcitemdelegate.h index 0803fbb..6194a63 100644 --- a/bcitemdelegate.h +++ b/bcitemdelegate.h @@ -40,6 +40,7 @@ public: emit viewUpdateNeeded(); } + void clearAllHighlights(); public slots: @@ -55,6 +56,7 @@ private: void updateRow(int row); QString formatDisplayString(const QModelIndex &index) const; + void paintHighlightRow(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; int _highlightedRow{-1}; qreal _opacity{1.0}; @@ -63,10 +65,9 @@ private: private: - - QHash m_rowOpacities; QHash m_rowAnimations; + }; diff --git a/bcmainwindow.ui b/bcmainwindow.ui index b532a57..5ce326d 100644 --- a/bcmainwindow.ui +++ b/bcmainwindow.ui @@ -78,12 +78,74 @@ 0 0 800 - 18 + 22 + + + + :restart.png:restart.png + + + pimp + + + Pimp my Ride + + + + + + :bionx_motor.png:bionx_motor.png + + + motor + + + Show motor settings + + + + + + :bionx_akku.png:bionx_akku.png + + + battery + + + Show battery settings + + + + + + :bionx_console.png:bionx_console.png + + + console + + + Show console settings + + + + + + :exit.png:exit.png + + + Exit + + + Exit + + - + + + diff --git a/bionxcontrol.qrc b/bionxcontrol.qrc index 873e5f2..714868b 100644 --- a/bionxcontrol.qrc +++ b/bionxcontrol.qrc @@ -1,16 +1,16 @@ - data/bikeinfo.xml - data/bionxcontrol.qss - images/bionx_akku.png - images/bionx_console.png - images/bionx_motor.png - images/exit.png - images/important.png - images/restart.png - images/splash.png - images/connect.png - images/connected.png - images/disconnected.png + resources/bikeinfo.xml + resources/bionxcontrol.qss + resources/bionx_akku.png + resources/bionx_console.png + resources/bionx_motor.png + resources/exit.png + resources/important.png + resources/restart.png + resources/splash.png + resources/connect.png + resources/connected.png + resources/disconnected.png diff --git a/main.cpp b/main.cpp index e101082..4cbe0da 100644 --- a/main.cpp +++ b/main.cpp @@ -84,37 +84,8 @@ bool setApplicationStyleSheet( QAnyStringView path ) // 2. Datei öffnen und lesen int main(int argc, char *argv[]) { - auto x = BC::ID::Motor_Status_Main; - - enum class Color : uint8_t { Red, Green, Blue }; - - QMap map; - map.insert(Color::Red, QStringLiteral("rot")); - map[Color::Green] = QStringLiteral("grün"); - - - qDebug() << " --- sach bloss das geht: " << x << " ui: " << uint8_t(x) << " : " << map[Color::Red]; - - QApplication app(argc, argv); - //setApplicationStyleSheet( ":/BionxControl.qss"_L1 ); - - QMetaEnum metaEnum = QMetaEnum::fromType(); - - bool ok = false; - QString inputString = "x3"; - BC::ID yyy{}; - - // keyToValue parst den String ("x1") und liefert den int-Wert - int intVal = metaEnum.keyToValue(inputString.toLatin1().constData(), &ok); - if (ok) - yyy = static_cast(intVal); - - auto xxx = BC::ID::Battery_Config_Force_Done; - //QString result = fullString.section("::", -1); - qDebug() << " schön: " << xxx << " -- " << uint8_t(xxx) << " : " << yyy; - qDebug() << " nice: " << metaEnum.enumName() << " : " <className(); - + setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 ); BCMainWindow w; w.show(); diff --git a/data/bikeinfo.xml b/resources/bikeinfo.xml similarity index 100% rename from data/bikeinfo.xml rename to resources/bikeinfo.xml diff --git a/images/bionx_akku.png b/resources/bionx_akku.png similarity index 100% rename from images/bionx_akku.png rename to resources/bionx_akku.png diff --git a/images/bionx_console.png b/resources/bionx_console.png similarity index 100% rename from images/bionx_console.png rename to resources/bionx_console.png diff --git a/images/bionx_motor.png b/resources/bionx_motor.png similarity index 100% rename from images/bionx_motor.png rename to resources/bionx_motor.png diff --git a/data/bionxcontrol.qss b/resources/bionxcontrol.qss similarity index 95% rename from data/bionxcontrol.qss rename to resources/bionxcontrol.qss index 1d64a87..278e89d 100644 --- a/data/bionxcontrol.qss +++ b/resources/bionxcontrol.qss @@ -70,9 +70,11 @@ QListView::item:selected:hover QListView::item:focus { -// outline: none; /* Entfernt das Focus-Rectangle */ +/* +// outline: none; Entfernt das Focus-Rectangle // border-color: green; // background-color: #ffe0b2; +*/ border: 2px solid gray; border-style: inset; background-color: white; diff --git a/images/connect.png b/resources/connect.png similarity index 100% rename from images/connect.png rename to resources/connect.png diff --git a/images/connected.png b/resources/connected.png similarity index 100% rename from images/connected.png rename to resources/connected.png diff --git a/images/disconnected.png b/resources/disconnected.png similarity index 100% rename from images/disconnected.png rename to resources/disconnected.png diff --git a/images/exit.png b/resources/exit.png similarity index 100% rename from images/exit.png rename to resources/exit.png diff --git a/images/important.png b/resources/important.png similarity index 100% rename from images/important.png rename to resources/important.png diff --git a/images/restart.png b/resources/restart.png similarity index 100% rename from images/restart.png rename to resources/restart.png diff --git a/images/splash.pdn b/resources/splash.pdn similarity index 100% rename from images/splash.pdn rename to resources/splash.pdn diff --git a/images/splash.png b/resources/splash.png similarity index 100% rename from images/splash.png rename to resources/splash.png