Added gui widgets as own classes, part I

This commit is contained in:
2026-01-10 14:39:43 +01:00
parent 9f0382965f
commit dc3669f513
6 changed files with 167 additions and 130 deletions

View File

@@ -49,9 +49,10 @@ SOURCES += \
bcanimateddelegate.cpp \ bcanimateddelegate.cpp \
bcdeviceview.cpp \ bcdeviceview.cpp \
bcdriver.cpp \ bcdriver.cpp \
bcdriverstatewidget.cpp \
bcdrivertinycan.cpp \ bcdrivertinycan.cpp \
bcguihelpers.cpp \
bcsliderstyle.cpp \ bcsliderstyle.cpp \
bcthemeswitchbutton.cpp \
bctransmitter.cpp \ bctransmitter.cpp \
bcvalue.cpp \ bcvalue.cpp \
bcvaluemodel.cpp \ bcvaluemodel.cpp \
@@ -66,10 +67,11 @@ HEADERS += \
bcanimateddelegate.h \ bcanimateddelegate.h \
bcdeviceview.h \ bcdeviceview.h \
bcdriver.h \ bcdriver.h \
bcdriverstatewidget.h \
bcdrivertinycan.h \ bcdrivertinycan.h \
bcguihelpers.h \
bcmainwindow.h \ bcmainwindow.h \
bcsliderstyle.h \ bcsliderstyle.h \
bcthemeswitchbutton.h \
bctransmitter.h \ bctransmitter.h \
bcvalue.h \ bcvalue.h \
bcvaluemodel.h \ bcvaluemodel.h \

View File

@@ -30,61 +30,10 @@
***************************************************************************/ ***************************************************************************/
#include <bcguihelpers.h> #include <bcdriverstatewidget.h>
#include <QHBoxLayout>
BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent ) #include <QMouseEvent>
: 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");
}
/// -----------------------------------------------------------------------------------
/// -----------------------------------------------------------------------------------
/** /**
@@ -127,33 +76,33 @@ void BCDriverStateWidget::updateStyle()
switch (_state) switch (_state)
{ {
case BCDriver::DriverState::NotPresent: case BCDriver::DriverState::NotPresent:
// FLUENT GRAY (Neutral) // FLUENT GRAY (Neutral)
// Wir machen es dunkelgrau mit hellem Rand -> "Ausgeschaltet"-Look // Wir machen es dunkelgrau mit hellem Rand -> "Ausgeschaltet"-Look
ledStyle = "background-color: #3B3B3B; border: 1px solid #606060;"; ledStyle = "background-color: #3B3B3B; border: 1px solid #606060;";
toolTipText = "Kein Treiber geladen."; toolTipText = "Kein Treiber geladen.";
break; break;
case BCDriver::DriverState::Error: case BCDriver::DriverState::Error:
// FLUENT RED (Critical) // FLUENT RED (Critical)
ledStyle = "background-color: #C42B1C; border: 1px solid #A80000;"; ledStyle = "background-color: #C42B1C; border: 1px solid #A80000;";
toolTipText = "Fehler beim Laden des Treibers."; toolTipText = "Fehler beim Laden des Treibers.";
break; break;
// hier: dll vorhanden, Treiber geladen // hier: dll vorhanden, Treiber geladen
case BCDriver::DriverState::Loaded: case BCDriver::DriverState::Loaded:
case BCDriver::DriverState::Initialized: case BCDriver::DriverState::Initialized:
case BCDriver::DriverState::Opened: case BCDriver::DriverState::Opened:
// ORANGE // ORANGE
ledStyle = "background-color: #FF8C00; border: 1px solid #A80000;"; ledStyle = "background-color: #FF8C00; border: 1px solid #A80000;";
toolTipText = "Kein Gerät verbunden."; toolTipText = "Kein Gerät verbunden.";
break; break;
case BCDriver::DriverState::DeviceReady: case BCDriver::DriverState::DeviceReady:
// FLUENT GREEN (Success) // FLUENT GREEN (Success)
ledStyle = "background-color: #107C10; border: 1px solid #0E600E;"; ledStyle = "background-color: #107C10; border: 1px solid #0E600E;";
toolTipText = "Verbindung erfolgreich hergestellt."; toolTipText = "Verbindung erfolgreich hergestellt.";
break; break;
} }
// Styles anwenden (immer rund machen) // Styles anwenden (immer rund machen)
@@ -172,5 +121,3 @@ void BCDriverStateWidget::mouseReleaseEvent(QMouseEvent* event)
emit clicked(); emit clicked();
QWidget::mouseReleaseEvent(event); QWidget::mouseReleaseEvent(event);
} }

View File

@@ -30,51 +30,8 @@
***************************************************************************/ ***************************************************************************/
#ifndef BCGUIHELPERS_H #ifndef BCDRIVERSTATEWIDGET_H
#define BCGUIHELPERS_H #define BCDRIVERSTATEWIDGET_H
#include <QPushButton>
#include <QLabel>
#include <QHBoxLayout>
#include <QMouseEvent>
#include <bcdriver.h>
/**
* @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};
};
/// -----------------------------------------------------------------------------------
/// -----------------------------------------------------------------------------------
/** /**
@@ -82,6 +39,12 @@ private:
* Drivers anzuzeigen. * Drivers anzuzeigen.
*/ */
#include <QLabel>
#include <bcdriver.h>
class BCDriverStateWidget : public QWidget class BCDriverStateWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
@@ -110,4 +73,4 @@ protected:
}; };
#endif // BCGUIHELPERS_H #endif // BCDRIVERSTATEWIDGET_H

View File

@@ -29,15 +29,16 @@
***************************************************************************/ ***************************************************************************/
#include <QFile> #include <QFile>
#include <QTimer> #include <QTimer>
#include <QMessageBox> #include <QMessageBox>
#include "qassert.h" #include <bcthemeswitchbutton.h>
#include <bcdriverstatewidget.h>
#include <bcmainwindow.h> #include <bcmainwindow.h>
#include <bcanimateddelegate.h> #include <bcanimateddelegate.h>
#include <ui_bcmainwindow.h> #include <ui_bcmainwindow.h>
#include <bcguihelpers.h>
/** /**
* @brief Das Mainwindow erzeugen * @brief Das Mainwindow erzeugen

52
bcthemeswitchbutton.cpp Normal file
View File

@@ -0,0 +1,52 @@
#include <bcthemeswitchbutton.h>
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");
}

72
bcthemeswitchbutton.h Normal file
View File

@@ -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 <info@bigxionflasher.org>
@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 <QPushButton>
#include <bcdriver.h>
/**
* @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