Files
BionxControl/bcmainwindow.cpp

135 lines
3.6 KiB
C++

/***************************************************************************
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 <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
***************************************************************************/
#include <bcmainwindow.h>
#include <bcitemdelegate.h>
#include <ui_bcmainwindow.h>
/**
* @brief Das Mainwindow erzeugen
* @param parent
*/
BCMainWindow::BCMainWindow(QWidget *parent)
: QMainWindow(parent)
{
setupUi(this);
// Die actions an die Buttons binden
_motorButton->setDefaultAction( _motorAction);
_consoleButton->setDefaultAction( _consoleAction );
_batteryButton->setDefaultAction( _batteryAction );
_pimpButton->setDefaultAction( _pimpAction);
// die Daten des eBikes laden
_dataManager.loadXmlBikeData();
// Die Daten und auch die Datenmodelle für die Views werden
// vom DataManager verwaltet und an die Views weitergereicht.
//auto model = _dataManager.getModel( BCDevice::ID::Console );
//_consolePanel->getValueView()->setModel( model.v );
/*
if( model)
{
_valueView->setModel( *model );
_valueView->resizeColumnsToContents();
//_valueView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
}
BCItemDelegate* _delegate = new BCItemDelegate( _valueView);
//_delegate = new AnimatedDelegate(_valueView );
_valueView->setItemDelegate( _delegate );
// Verwendung:
connect(_delegate, &BCItemDelegate::viewUpdateNeeded, _valueView->viewport(), QOverload<>::of(&QWidget::update));
//_valueView->setItemDelegate(_delegate);
// Highlight mit Fade-Out:
//_delegate->onHighlightRow(2); // 2 Sekunden Fade
BCTransmitter* transmitter = _dataManager.getTransmitter();
// besser: model::emit dataChanged
// also: emit dataChanged(index, index, {Qt::DisplayRole, Qt::EditRole, ValueRole});
connect( &_dataManager, &BCDataManager::valueTouched, _delegate, &BCItemDelegate::onHighlightRow );
connect( _connectButton, &QPushButton::clicked, transmitter, &BCTransmitter::onToggleConnectionState );
connect( _syncButton, &QPushButton::clicked, &_dataManager, &BCDataManager::onSyncFromDevice );
*/
}
BCMainWindow::~BCMainWindow()
{
}
void BCMainWindow::initData()
{
// Die Daten und auch die Datenmodelle für die Views werden
// vom DataManager verwaltet und an die Views weitergereicht.
auto setDeviceModel = [&]( BCDevice::ID deviceID, BCDevicePanel* panel )
{
auto model = _dataManager.getModel( deviceID );
if( model)
{
QAbstractItemView* valueView = panel->getValueView();
valueView->setModel( *model );
//valueView->resizeColumnsToContents();
//_valueView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
}
};
_dataManager.loadXmlBikeData();
}
void BCMainWindow::onConnectButtonToggled(bool checked )
{
//_dataManager.setDriverConnectionState( checked );
}