From ae0ac5317dea7ed890a16ffe511dfc407f94fc4f Mon Sep 17 00:00:00 2001 From: "PANIK\\chris" Date: Tue, 6 Jan 2026 01:21:17 +0100 Subject: [PATCH] Simplifications. --- bcguihelpers.cpp | 5 ----- bctransmitter.cpp | 4 ++-- bionxcontrol.qrc | 9 ++++++--- doc/Challenges.docx | Bin 17650 -> 17747 bytes 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/bcguihelpers.cpp b/bcguihelpers.cpp index 59358e8..72bd28a 100644 --- a/bcguihelpers.cpp +++ b/bcguihelpers.cpp @@ -238,15 +238,10 @@ void BCDriverStateWidget::updateStyle() void BCDriverStateWidget::mouseReleaseEvent(QMouseEvent* event) { - qDebug() << " --- RELAASE!"; - if (event->button() == Qt::LeftButton) { - qDebug() << " --- MOO?!"; - emit clicked(); } - QWidget::mouseReleaseEvent(event); } diff --git a/bctransmitter.cpp b/bctransmitter.cpp index b2c473c..b3533db 100644 --- a/bctransmitter.cpp +++ b/bctransmitter.cpp @@ -123,7 +123,7 @@ void BCTransmitter::disconnectCanDriver() void BCTransmitter::onEnqueueValue( BCValuePtrConst value) { // Hier sind wir noch in GUI Thread - QMutexLocker locker(&_mutex); + //QMutexLocker locker(&_mutex); _valueQueue.enqueue( value ); // wir wollen nicht den ganzen Value verschicken, erstrecht @@ -156,7 +156,7 @@ void BCTransmitter::onProcessValue() { BCValuePtrConst valuePtr{}; { - QMutexLocker locker(&_mutex); + //QMutexLocker locker(&_mutex); if (_valueQueue.isEmpty()) { _isBusy = false; diff --git a/bionxcontrol.qrc b/bionxcontrol.qrc index f2d4cd4..d5e1960 100644 --- a/bionxcontrol.qrc +++ b/bionxcontrol.qrc @@ -2,8 +2,8 @@ resources/bikeinfo.xml resources/bionxcontrol.qss - resources/claude_dark_mode.qss - resources/claude_light_mode.qss + resources/claude_dark_mode.qss + resources/claude_light_mode.qss resources/bionx_akku.png resources/bionx_console.png resources/bionx_motor.png @@ -13,6 +13,9 @@ resources/splash.png resources/connect.png resources/connected.png - resources/disconnected.png + resources/disconnected.png + resources/connect_white.svg + resources/sync_green.svg + resources/sync_yellow.svg diff --git a/doc/Challenges.docx b/doc/Challenges.docx index 32177f2ee8c7fb79fb8bb3512bc8f323e88fbe4d..eface7b3993ab77c27fd638b70781360d6d81641 100644 GIT binary patch delta 6285 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