From dc3669f51356a874a671bb267bcc9f5abbb9d350 Mon Sep 17 00:00:00 2001 From: "PANIK\\chris" Date: Sat, 10 Jan 2026 14:39:43 +0100 Subject: [PATCH] Added gui widgets as own classes, part I --- BionxControl.pro | 6 +- bcguihelpers.cpp => bcdriverstatewidget.cpp | 107 +++++--------------- bcguihelpers.h => bcdriverstatewidget.h | 55 ++-------- bcmainwindow.cpp | 5 +- bcthemeswitchbutton.cpp | 52 ++++++++++ bcthemeswitchbutton.h | 72 +++++++++++++ 6 files changed, 167 insertions(+), 130 deletions(-) rename bcguihelpers.cpp => bcdriverstatewidget.cpp (50%) rename bcguihelpers.h => bcdriverstatewidget.h (69%) create mode 100644 bcthemeswitchbutton.cpp create mode 100644 bcthemeswitchbutton.h diff --git a/BionxControl.pro b/BionxControl.pro index 7680059..75f8f7b 100644 --- a/BionxControl.pro +++ b/BionxControl.pro @@ -49,9 +49,10 @@ SOURCES += \ bcanimateddelegate.cpp \ bcdeviceview.cpp \ bcdriver.cpp \ + bcdriverstatewidget.cpp \ bcdrivertinycan.cpp \ - bcguihelpers.cpp \ bcsliderstyle.cpp \ + bcthemeswitchbutton.cpp \ bctransmitter.cpp \ bcvalue.cpp \ bcvaluemodel.cpp \ @@ -66,10 +67,11 @@ HEADERS += \ bcanimateddelegate.h \ bcdeviceview.h \ bcdriver.h \ + bcdriverstatewidget.h \ bcdrivertinycan.h \ - bcguihelpers.h \ bcmainwindow.h \ bcsliderstyle.h \ + bcthemeswitchbutton.h \ bctransmitter.h \ bcvalue.h \ bcvaluemodel.h \ diff --git a/bcguihelpers.cpp b/bcdriverstatewidget.cpp similarity index 50% rename from bcguihelpers.cpp rename to bcdriverstatewidget.cpp index fe8ca77..43e241f 100644 --- a/bcguihelpers.cpp +++ b/bcdriverstatewidget.cpp @@ -30,61 +30,10 @@ ***************************************************************************/ -#include +#include - -BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent ) - : QPushButton(parent) -{ - // Visuelles Setup: Flach, keine Ränder, Hand-Cursor - setFlat(true); - setCursor(Qt::PointingHandCursor); - setFixedSize(24, 24); - updateIcon(); - - connect(this, &QPushButton::clicked, this, &BCThemeSwitchButton::toggleMode); -} - - -/** - * @brief Setzt den DarkMode - */ - -void BCThemeSwitchButton::setDarkMode( bool isDark ) -{ - _isDarkMode = !isDark; - toggleMode(); -} - - -/** - * @brief Schaltet den akutellen Mode um. - */ - -void BCThemeSwitchButton::toggleMode() -{ - _isDarkMode = !_isDarkMode; - updateIcon(); - emit themeChanged(_isDarkMode); -} - - -/** - * @brief Icon & Tooltip anpassen - */ - -void BCThemeSwitchButton::updateIcon() -{ - // Logik: - // Ist Dark Mode an? Zeige Mond (oder Sonne, je nach Geschmack). - // Hier: Zeige das Symbol des AKTUELLEN Modus. - setText(_isDarkMode ? "🌙" : "☀️"); - setToolTip(_isDarkMode ? "Zum LightMode wechseln" : "Zum DarkMode wechseln"); -} - - -/// ----------------------------------------------------------------------------------- -/// ----------------------------------------------------------------------------------- +#include +#include /** @@ -127,33 +76,33 @@ void BCDriverStateWidget::updateStyle() switch (_state) { - case BCDriver::DriverState::NotPresent: - // FLUENT GRAY (Neutral) - // Wir machen es dunkelgrau mit hellem Rand -> "Ausgeschaltet"-Look - ledStyle = "background-color: #3B3B3B; border: 1px solid #606060;"; - toolTipText = "Kein Treiber geladen."; - break; + case BCDriver::DriverState::NotPresent: + // FLUENT GRAY (Neutral) + // Wir machen es dunkelgrau mit hellem Rand -> "Ausgeschaltet"-Look + ledStyle = "background-color: #3B3B3B; border: 1px solid #606060;"; + toolTipText = "Kein Treiber geladen."; + break; - case BCDriver::DriverState::Error: - // FLUENT RED (Critical) - ledStyle = "background-color: #C42B1C; border: 1px solid #A80000;"; - toolTipText = "Fehler beim Laden des Treibers."; - break; + case BCDriver::DriverState::Error: + // FLUENT RED (Critical) + ledStyle = "background-color: #C42B1C; border: 1px solid #A80000;"; + toolTipText = "Fehler beim Laden des Treibers."; + break; - // hier: dll vorhanden, Treiber geladen - case BCDriver::DriverState::Loaded: - case BCDriver::DriverState::Initialized: - case BCDriver::DriverState::Opened: - // ORANGE - ledStyle = "background-color: #FF8C00; border: 1px solid #A80000;"; - toolTipText = "Kein Gerät verbunden."; - break; + // hier: dll vorhanden, Treiber geladen + case BCDriver::DriverState::Loaded: + case BCDriver::DriverState::Initialized: + case BCDriver::DriverState::Opened: + // ORANGE + ledStyle = "background-color: #FF8C00; border: 1px solid #A80000;"; + toolTipText = "Kein Gerät verbunden."; + break; - case BCDriver::DriverState::DeviceReady: - // FLUENT GREEN (Success) - ledStyle = "background-color: #107C10; border: 1px solid #0E600E;"; - toolTipText = "Verbindung erfolgreich hergestellt."; - break; + case BCDriver::DriverState::DeviceReady: + // FLUENT GREEN (Success) + ledStyle = "background-color: #107C10; border: 1px solid #0E600E;"; + toolTipText = "Verbindung erfolgreich hergestellt."; + break; } // Styles anwenden (immer rund machen) @@ -172,5 +121,3 @@ void BCDriverStateWidget::mouseReleaseEvent(QMouseEvent* event) emit clicked(); QWidget::mouseReleaseEvent(event); } - - diff --git a/bcguihelpers.h b/bcdriverstatewidget.h similarity index 69% rename from bcguihelpers.h rename to bcdriverstatewidget.h index 8caca4a..d7276c9 100644 --- a/bcguihelpers.h +++ b/bcdriverstatewidget.h @@ -30,51 +30,8 @@ ***************************************************************************/ -#ifndef BCGUIHELPERS_H -#define BCGUIHELPERS_H - -#include -#include -#include -#include - -#include - - -/** - * @brief Einfaches Buttonwidget, um zwischen Dark- und Lightmode - * zu wechseln - */ - -class BCThemeSwitchButton : public QPushButton -{ - Q_OBJECT - -public: - - explicit BCThemeSwitchButton(QWidget *parent = nullptr); - void setDarkMode( bool isDark ); - -signals: - - void themeChanged(bool isDark); - -private slots: - - void toggleMode(); - -private: - - void updateIcon(); - - bool _isDarkMode{false}; - -}; - - - -/// ----------------------------------------------------------------------------------- -/// ----------------------------------------------------------------------------------- +#ifndef BCDRIVERSTATEWIDGET_H +#define BCDRIVERSTATEWIDGET_H /** @@ -82,6 +39,12 @@ private: * Drivers anzuzeigen. */ + + +#include + + +#include class BCDriverStateWidget : public QWidget { Q_OBJECT @@ -110,4 +73,4 @@ protected: }; -#endif // BCGUIHELPERS_H +#endif // BCDRIVERSTATEWIDGET_H diff --git a/bcmainwindow.cpp b/bcmainwindow.cpp index c5d471c..d849d97 100644 --- a/bcmainwindow.cpp +++ b/bcmainwindow.cpp @@ -29,15 +29,16 @@ ***************************************************************************/ + #include #include #include -#include "qassert.h" +#include +#include #include #include #include -#include /** * @brief Das Mainwindow erzeugen diff --git a/bcthemeswitchbutton.cpp b/bcthemeswitchbutton.cpp new file mode 100644 index 0000000..de571a9 --- /dev/null +++ b/bcthemeswitchbutton.cpp @@ -0,0 +1,52 @@ +#include + + + +BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent ) + : QPushButton(parent) +{ + // Visuelles Setup: Flach, keine Ränder, Hand-Cursor + setFlat(true); + setCursor(Qt::PointingHandCursor); + setFixedSize(24, 24); + updateIcon(); + + connect(this, &QPushButton::clicked, this, &BCThemeSwitchButton::toggleMode); +} + + +/** + * @brief Setzt den DarkMode + */ + +void BCThemeSwitchButton::setDarkMode( bool isDark ) +{ + _isDarkMode = !isDark; + toggleMode(); +} + + +/** + * @brief Schaltet den akutellen Mode um. + */ + +void BCThemeSwitchButton::toggleMode() +{ + _isDarkMode = !_isDarkMode; + updateIcon(); + emit themeChanged(_isDarkMode); +} + + +/** + * @brief Icon & Tooltip anpassen + */ + +void BCThemeSwitchButton::updateIcon() +{ + // Logik: + // Ist Dark Mode an? Zeige Mond (oder Sonne, je nach Geschmack). + // Hier: Zeige das Symbol des AKTUELLEN Modus. + setText(_isDarkMode ? "🌙" : "☀️"); + setToolTip(_isDarkMode ? "Zum LightMode wechseln" : "Zum DarkMode wechseln"); +} diff --git a/bcthemeswitchbutton.h b/bcthemeswitchbutton.h new file mode 100644 index 0000000..9174780 --- /dev/null +++ b/bcthemeswitchbutton.h @@ -0,0 +1,72 @@ +/*************************************************************************** + + BionxControl + © 2025 -2026 christoph holzheuer + christoph.holzheuer@gmail.com + + Using: + + mhs_can_drv.c + © 2011 - 2023 by MHS-Elektronik GmbH & Co. KG, Germany + Klaus Demlehner, klaus@mhs-elektronik.de + @see www.mhs-elektronik.de + + Based on Bionx data type descriptions from: + + BigXionFlasher USB V 0.2.4 rev. 97 + © 2011-2013 by Thomas Koenig + @see www.bigxionflasher.org + + Bionx Bike Info + © 2018 Thorsten Schmidt (tschmidt@ts-soft.de) + @see www.ts-soft.de + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + @see https://github.com/bikemike/bionx-bikeinfo + + ***************************************************************************/ + + +#ifndef BCTHEMESWITCHBUTTON_H +#define BCTHEMESWITCHBUTTON_H + +#include + +#include + + +/** + * @brief Einfaches Buttonwidget, um zwischen Dark- und Lightmode + * zu wechseln + */ + +class BCThemeSwitchButton : public QPushButton +{ + Q_OBJECT + +public: + + explicit BCThemeSwitchButton(QWidget *parent = nullptr); + void setDarkMode( bool isDark ); + +signals: + + void themeChanged(bool isDark); + +private slots: + + void toggleMode(); + +private: + + void updateIcon(); + + bool _isDarkMode{false}; + +}; + + +#endif // BCTHEMESWITCHBUTTON_H