/*************************************************************************** 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 ***************************************************************************/ #include #include #include BCValueSlider::BCValueSlider( QWidget *parent ) : QWidget(parent) { setupUi(this); // wir wollen ja modern sein _slider->setStyle(new BCValueSliderStyle()); setAutoFillBackground(true); QSizePolicy sp = _commitButton->sizePolicy(); sp.setRetainSizeWhenHidden(true); // <--- Das ist der magische Schalter _commitButton->setSizePolicy(sp); // Wenn Slider bewegt wird -> Signal nach außen senden connect(_slider, &QSlider::valueChanged, this, [this](int val) { emit valueChanged(val); }); // Wenn Reset gedrückt wird -> Slider auf 0 (löst auch valueChanged aus) connect(_commitButton, &QPushButton::clicked, this, [this]() { emit valueCommited( value() ); }); } int BCValueSlider::value() const { return _slider->value(); } void BCValueSlider::setValueAndRange( const BCValue::ValueRange& params ) { _slider->setRange( params.min, params.max); // Block Signals verhindern Endlosschleifen, falls das Model // das Widget während des Updates neu setzt (passiert manchmal bei Live-Updates). if (params.value != _slider->value()) { bool blocked = _slider->blockSignals(true); _slider->setValue(params.value); _slider->blockSignals(blocked); } } QRect BCValueSlider::updateEditorRect( const QRect& rect) { return rect.adjusted ( rect.width() - cTextBlockOffset, // Von rechts: cTextBlockOffset (==130) px (Breite der Progress Bar) 0, // Oben: kein Offset -cPaddingRight, // Rechts: 8px Padding 0 // Unten: kein Offset ); }