#include "ProgramSettingsPage.h" #include "ui_ProgramSettingsPage.h" #include "CANDevice.h" //#include "CANMessage.h" //#include "CANSignal.h" //#include "PCANBasic.h" CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) : QWidget(parent), ui(new Ui::CProgramSettingsPage) { ui->setupUi(this); mDevicesList = 0; ui->mDBSignalDetailsTable->setColumnCount(10); ui->mDBSignalDetailsTable->setHorizontalHeaderLabels(QStringList() << "Signal" << "Bit No" << "Length" << "Type" << "Max Val" << "Min Val" << "Offset" << "Scale factor" << "Unit" << "Byte order"); ui->mCANBaudrateComboBx->clear(); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_1M",QVariant(PCAN_BAUD_1M)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_800K",QVariant(PCAN_BAUD_800K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_500K",QVariant(PCAN_BAUD_500K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_250K",QVariant(PCAN_BAUD_250K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_125K",QVariant(PCAN_BAUD_125K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_100K",QVariant(PCAN_BAUD_100K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_95K",QVariant(PCAN_BAUD_95K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_83K",QVariant(PCAN_BAUD_83K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_50K",QVariant(PCAN_BAUD_50K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_47K",QVariant(PCAN_BAUD_47K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_33K",QVariant(PCAN_BAUD_33K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_20K",QVariant(PCAN_BAUD_20K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_10K",QVariant(PCAN_BAUD_10K)); ui->mCANBaudrateComboBx->addItem("PCAN_BAUD_5K",QVariant(PCAN_BAUD_5K)); ui->mCANIDComboBx->addItem("PCAN_USBBUS1",QVariant(PCAN_USBBUS1)); ui->mCANIDComboBx->addItem("PCAN_USBBUS2",QVariant(PCAN_USBBUS2)); ui->mCANIDComboBx->addItem("PCAN_USBBUS3",QVariant(PCAN_USBBUS3)); ui->mCANIDComboBx->addItem("PCAN_USBBUS4",QVariant(PCAN_USBBUS4)); ui->mCANIDComboBx->addItem("PCAN_USBBUS5",QVariant(PCAN_USBBUS5)); ui->mCANIDComboBx->addItem("PCAN_USBBUS6",QVariant(PCAN_USBBUS6)); ui->mCANIDComboBx->addItem("PCAN_USBBUS7",QVariant(PCAN_USBBUS7)); ui->mCANIDComboBx->addItem("PCAN_USBBUS8",QVariant(PCAN_USBBUS8)); ui->mCANIDComboBx->addItem("PCAN_USBBUS9",QVariant(PCAN_USBBUS9)); ui->mCANIDComboBx->addItem("PCAN_USBBUS10",QVariant(PCAN_USBBUS10)); ui->mCANIDComboBx->addItem("PCAN_USBBUS11",QVariant(PCAN_USBBUS11)); ui->mCANIDComboBx->addItem("PCAN_USBBUS12",QVariant(PCAN_USBBUS12)); ui->mCANIDComboBx->addItem("PCAN_USBBUS13",QVariant(PCAN_USBBUS13)); ui->mCANIDComboBx->addItem("PCAN_USBBUS14",QVariant(PCAN_USBBUS14)); ui->mCANIDComboBx->addItem("PCAN_USBBUS15",QVariant(PCAN_USBBUS15)); ui->mCANIDComboBx->addItem("PCAN_USBBUS16",QVariant(PCAN_USBBUS16)); ui->mDeviceDescriptionTxtEdit->setEnabled(false); ui->mDatabaseFileSelectBtn->hide(); ui->mCANBaudrateComboBx->setEnabled(false); ui->mCANIDComboBx->setEnabled(false); connect(ui->mDevicesList,&QListWidget::itemSelectionChanged,this,&CProgramSettingsPage::DeviceSelectionChanged); connect(ui->mDBMessagesListWidget,&QListWidget::itemSelectionChanged,this,&CProgramSettingsPage::MessageSelectionChanged); connect(ui->mModifyDevParamsBtn,&QPushButton::clicked,this,&CProgramSettingsPage::ModifyDeviceBtnPressed); // connect(ui->mDBSignalDetailsTable,&QTableWidget::itemSelectionChanged,this,&CProgramSettingsPage::SignalSelectionChanged); } CProgramSettingsPage::~CProgramSettingsPage() { delete ui; } int CProgramSettingsPage::SetDevicesList(QList *DevicesList) { if(DevicesList == 0) { return RET_GENERAL_ERROR; } mDevicesList = DevicesList; if(mDevicesList == 0) { return RET_GENERAL_ERROR; } ui->mDevicesList->clear(); for(int i = 0; i < mDevicesList->size(); i++) { QString name = mDevicesList->at(i)->mDeviceName; if(name.isEmpty()) { name = QString("Device %1").arg(i+1); } ui->mDevicesList->addItem(name); } ui->mDevicesList->setCurrentRow(0); return RET_OK; } int CProgramSettingsPage::ClearDatabaseData() { ui->mDBMessagesListWidget->clear(); return RET_OK; } int CProgramSettingsPage::UpdatePage() { int index = ui->mDevicesList->currentRow(); if(index < 0 || index >= mDevicesList->size()) { return RET_GENERAL_ERROR; } CCANDevice *Device = mDevicesList->at(index); if(Device != 0) { //update device information ui->mCANBaudrateComboBx->setCurrentIndex(ui->mCANBaudrateComboBx->findData(Device->mCANDeviceBaudrate)); ui->mCANIDComboBx->setCurrentIndex(ui->mCANIDComboBx->findData(Device->mCANDeviceID)); ui->mDeviceDescriptionTxtEdit->setPlainText(Device->mDeviceDescription); ui->mDatabaseFileNameLbl->setText(QString("Database: %1").arg(Device->mCANDeviceDatabaseFilename)); //update device database information ui->mDBMessagesListWidget->clear(); ui->mDBSignalDetailsTable->clearContents(); ui->mDBSignalDetailsTable->setRowCount(0); if(Device->mMessageList.isEmpty()) { ui->mDBMessagesListWidget->insertItem(0,"Aucun message"); ui->mDBMessageIDLbl->setText("Message ID: "); ui->mDBMessageLengthLbl->setText("Message Length: "); ui->mDBMessageNameLbl->setText("Message Name: "); ui->mDBMessageNbSignalsLbl->setText("Number of signals: "); } else { ui->mDBMessagesListWidget->clear(); for(int msg = 0; msg < Device->mMessageList.size(); msg++) { ui->mDBMessagesListWidget->insertItem(msg,Device->mMessageList.at(msg)->mCANMsgName); } ui->mDBMessagesListWidget->setCurrentRow(0); } } } int CProgramSettingsPage::UpdateMessageInformation() { int index = ui->mDevicesList->currentRow(); if(index < 0 || index >= mDevicesList->size()) { return RET_GENERAL_ERROR; } CCANDevice *Device = mDevicesList->at(index); if(Device != 0) { int MsgIndex = ui->mDBMessagesListWidget->currentRow(); if(MsgIndex < 0 || MsgIndex >= Device->mMessageList.size()) { return RET_GENERAL_ERROR; } CCANMessage *Message = Device->mMessageList.at(MsgIndex); ui->mDBMessageIDLbl->setText(QString("Message ID: 0x%1").arg(Message->mCANMsgID,0,16)); ui->mDBMessageLengthLbl->setText(QString("Message Length: %1").arg(Message->mCANMsgLength)); ui->mDBMessageNameLbl->setText(QString("Message Name: %1").arg(Message->mCANMsgName)); ui->mDBMessageNbSignalsLbl->setText(QString("Number of signals: %1").arg(Message->mSignalsList.size())); ui->mDBSignalDetailsTable->clearContents(); ui->mDBSignalDetailsTable->setRowCount(0); ui->mDBSignalDetailsTable->setRowCount(Message->mSignalsList.size()); for(int Sig = 0; Sig < Message->mSignalsList.size(); Sig++) { CCANSignal *Signal = Message->mSignalsList.at(Sig); QTableWidgetItem *NewItem; //Signal name NewItem = new QTableWidgetItem(Signal->mSignalName); ui->mDBSignalDetailsTable->setItem(Sig,0,NewItem); //Bit No NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mStartBit)); ui->mDBSignalDetailsTable->setItem(Sig,1,NewItem); //Length NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mSignalSize)); ui->mDBSignalDetailsTable->setItem(Sig,2,NewItem); //Type NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueType)); ui->mDBSignalDetailsTable->setItem(Sig,3,NewItem); //Max Val NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mMaxValue,0,'f',1)); ui->mDBSignalDetailsTable->setItem(Sig,4,NewItem); //Min Val NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mMinValue,0,'f',1)); ui->mDBSignalDetailsTable->setItem(Sig,5,NewItem); //Offset NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueOffset)); ui->mDBSignalDetailsTable->setItem(Sig,6,NewItem); //Scale Factor NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueFactor,0,'f',1)); ui->mDBSignalDetailsTable->setItem(Sig,7,NewItem); //Unit NewItem = new QTableWidgetItem(Signal->mSignalUnit); ui->mDBSignalDetailsTable->setItem(Sig,8,NewItem); //Endian NewItem = new QTableWidgetItem(QString("%1").arg(Signal->mValueType)); ui->mDBSignalDetailsTable->setItem(Sig,9,NewItem); } ui->mDBSignalDetailsTable->resizeColumnsToContents(); } } void CProgramSettingsPage::DeviceSelectionChanged() { UpdatePage(); } void CProgramSettingsPage::SignalSelectionChanged() { } void CProgramSettingsPage::MessageSelectionChanged() { UpdateMessageInformation(); } void CProgramSettingsPage::ModifyDeviceBtnPressed() { if(mDeviceChangeModeEnabled) { ui->mDeviceDescriptionTxtEdit->setEnabled(false); ui->mDatabaseFileSelectBtn->hide(); ui->mCANBaudrateComboBx->setEnabled(false); ui->mCANIDComboBx->setEnabled(false); ui->mDevicesList->setEnabled(true); ui->mModifyDevParamsBtn->setText("Modifier"); mDeviceChangeModeEnabled = false; } else { ui->mDeviceDescriptionTxtEdit->setEnabled(true); ui->mDatabaseFileSelectBtn->show(); ui->mCANBaudrateComboBx->setEnabled(true); ui->mCANIDComboBx->setEnabled(true); ui->mDevicesList->setEnabled(false); ui->mModifyDevParamsBtn->setText("Sauvegarder"); mDeviceChangeModeEnabled = true; } }