/*************************************************************************** BionxControl Copyright © 2025 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 ***************************************************************************/ #include #include #include #include #include #include class ThemeSwitchButton : public QPushButton { Q_OBJECT public: explicit ThemeSwitchButton(QWidget *parent = nullptr) : QPushButton(parent), m_isDarkMode(true) { // 1. Visuelles Setup: Flach, keine Ränder, Hand-Cursor setFlat(true); setCursor(Qt::PointingHandCursor); setFixedSize(32, 24); // Kleiner Footprint im StatusBar // CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt // Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind setStyleSheet(R"( QPushButton { border: none; background-color: transparent; font-size: 14pt; } QPushButton:hover { background-color: rgba(128, 128, 128, 30); /* Leichter Hover-Effekt */ border-radius: 4px; } )"); // 2. Initialer Status (Startet im Dark Mode -> zeigt Mond) updateIcon(); // 3. Klick verbinden connect(this, &QPushButton::clicked, this, &ThemeSwitchButton::toggle); } signals: void themeChanged(bool isDark); private slots: void toggle() { m_isDarkMode = !m_isDarkMode; updateIcon(); emit themeChanged(m_isDarkMode); } private: void updateIcon() { // Logik: // Ist Dark Mode an? Zeige Mond (oder Sonne, je nach Geschmack). // Hier: Zeige das Symbol des AKTUELLEN Modus. setText(m_isDarkMode ? "🌙" : "☀️"); setToolTip(m_isDarkMode ? "Switch to Light Mode" : "Switch to Dark Mode"); } bool m_isDarkMode; }; /* class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { setWindowTitle("Fluent Theme Switcher"); resize(800, 600); // --- STATUSBAR SETUP --- QStatusBar *statBar = statusBar(); // Optional: Normale Nachricht links statBar->showMessage("Ready"); // 1. Unseren Switcher erstellen ThemeSwitchButton *themeBtn = new ThemeSwitchButton(this); // 2. WICHTIG: Rechts hinzufügen statBar->addPermanentWidget(themeBtn); // 3. Signal verbinden: Button klick -> Theme ändern connect(themeBtn, &ThemeSwitchButton::themeChanged, this, [this](bool isDark){ if (isDark) { applyFluentDarkTheme(*qApp); // Funktion von vorhin statusBar()->showMessage("Dark Mode Activated", 3000); } else { applyFluentLightTheme(*qApp); // Funktion von vorhin statusBar()->showMessage("Light Mode Activated", 3000); } }); // Initiale Anwendung (Dark Mode) applyFluentDarkTheme(*qApp); } }; */ bool setApplicationStyleSheet( QAnyStringView path ) { QFile styleFile( path.toString() ); if (styleFile.open(QIODevice::ReadOnly | QIODevice::Text)) { QString style = styleFile.readAll(); qApp->setStyleSheet(style); styleFile.close(); return true; } qWarning() << "Konnte Stylesheet nicht laden:" << styleFile.errorString(); return true; } int main(int argc, char *argv[]) { QApplication app(argc, argv); //setApplicationStyleSheet( ":/claude_light_mode.qss"_L1 ); /* app.setStyleSheet(R"( QWidget { background-color: #F3F3F3; font-family: 'Segoe UI Variable', 'Segoe UI', sans-serif; } )"); */ /* app.setStyleSheet(R"( * { font-family: 'Calibri', 'Carlito', 'Arial', sans-serif; font-size: 12pt; })"); */ //QFont font("segoe UI", 12); // Name, Größe //QFont font("calibri", 12); // Name, Größe //app.setFont(font); BCMainWindow w; w.show(); return app.exec(); // 🌙☀️ ! }