/*************************************************************************** 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 BCDeviceView::BCDeviceView(QWidget *parent) : QTableView(parent) { setModel( &_valueModel ); //resizeColumnsToContents(); //horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); // __fix! ziemlich wildes ge-pointere, hier _itemDelegate = new BCValueDelegate( _valueModel.getValueList(), this); setItemDelegateForColumn( 1, _itemDelegate ); } void BCDeviceView::setDeviceID( BCDevice::ID deviceID ) { _devideID = deviceID; } BCDevice::ID BCDeviceView::getDeviceID() const { return _devideID; } /** * @brief Gibt eine Referenz auf der ValueList zurück. */ const BCValueList& BCDeviceView::getValueList() { return _valueModel.getValueList(); } /** * @brief Flag, ob diese View schonmal angezeigt wurde. */ bool BCDeviceView::firstExpose() { bool stored = _firstExpose; _firstExpose = false; return stored; } /** * @brief SLOT, der aufgerufen wird, wenn die ValueList vom XML-Lader fertig geladen wurde. * Die DeviceView nimmt die ValueList dann in Besitz. */ void BCDeviceView::onValueListReady( BCDevice::ID deviceID, BCValueList valueList ) { if(_devideID == deviceID) { _valueModel.takeValueList( valueList ); const BCValueList& list = _valueModel.getValueList(); int rows = _valueModel.rowCount(); for (int r = 0; r < rows; ++r) { BCValuePtr bcValue = list[r]; if( !bcValue->isReadOnly() ) { QModelIndex index = _valueModel.index(r, 1); openPersistentEditor(index); } } } // if id } /** * @brief SLOT, der aufgerufen wird, wenn ein Value geändert wurde. Gibt dem ItemDelegate Bescheid. */ void BCDeviceView::updateValue(int index,BCValue::Flags newState, uint32_t rawValue ) { _valueModel.updateValue( index, newState, rawValue ); _itemDelegate->onHighlightRow( index ); } /** * @brief Die Spalte mit dem Label soll immer bei 60% der Gesamtbreite liegen. * @param event */ void BCDeviceView::resizeEvent(QResizeEvent *event) { // Zuerst die Basisklasse aufrufen (Wichtig für Layouts!) QWidget::resizeEvent(event); // Berechnung: 40% der aktuellen Breite // Tipp: viewport()->width() ist genauer als width(), da es Scrollbars rausrechnet! int totalWidth = viewport()->width(); int col0Width = static_cast(totalWidth * 0.60); // Setzen der Breite horizontalHeader()->resizeSection(0, col0Width); }