Développement program settings

This commit is contained in:
2023-01-24 19:51:06 -05:00
parent 145d07754d
commit d183780f1b
19 changed files with 1368 additions and 311 deletions
@@ -56,7 +56,7 @@ int CCANDatabase::LoadDatabaseFile(QString Filename)
qDebug("kvaDbGetFlags failed: %d\n", status);
return RET_GENERAL_ERROR;
}
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Base de données chargée avec succès. Flags: 0x%1").arg(flags),true);
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Base de données chargée avec succès. Flags: 0x%1").arg(flags),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
qDebug(" Database: flags=0x%x\n", flags);
mDatabaseFileLoaded = true;
+1 -1
View File
@@ -65,7 +65,7 @@ int CCANDevice::Init()
return RET_GENERAL_ERROR;
}
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceName));
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Dispositif [%1] initialisé avec succès!").arg(mDeviceName),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}
@@ -98,6 +98,10 @@ int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUIL
{
LogLine.prepend("%W");
}
else if(TxtErrStatus == GEN_MSG_TXT_SUCCESS_STATUS)
{
LogLine.prepend("%S");
}
if(mGeneralStatusPageHandle != 0)
{
@@ -17,6 +17,7 @@ public:
GEN_MSG_TXT_NO_ERROR_STATUS = 0,
GEN_MSG_TXT_WARNING_STATUS,
GEN_MSG_TXT_ERROR_STATUS,
GEN_MSG_TXT_SUCCESS_STATUS,
GEN_MSG_TXT_MAX_STATUS
@@ -63,6 +63,10 @@ int CGeneralStatusPage::AddColoredLineToGenMsgBox(QString Line)
{
ui->mGenMsgTextEdit->setTextColor(Qt::blue);
}
else if(Line.at(1) == QChar('S')) //The line is describing a warning... write it yellow
{
ui->mGenMsgTextEdit->setTextColor(Qt::darkGreen);
}
else
{
qDebug("GeneralStatusPage: Logic error in general message box line encoding... you should check into that");
@@ -3,6 +3,8 @@
#include "CANDevice.h"
#include "OtarcikCan.h"
#include <QFileDialog>
#include <QFileInfo>
CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
@@ -13,6 +15,7 @@ CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
mProgramPtr = 0;
mDevicesList = 0;
mDeviceChangeModeEnabled = false;
ui->mDBSignalDetailsTable->setColumnCount(10);
ui->mDBSignalDetailsTable->setHorizontalHeaderLabels(QStringList() << "Signal" << "Bit No" << "Length" << "Type" << "Max Val" << "Min Val" << "Offset" << "Scale factor" << "Unit" << "Byte order");
@@ -61,12 +64,15 @@ CProgramSettingsPage::CProgramSettingsPage(QWidget *parent) :
ui->mCANIDComboBx->setEnabled(false);
ui->mDevicePollPeriodSpinBx->setEnabled(false);
ui->mCancelModifyParamsBtn->hide();
ui->mDeviceNameEditBx->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->mCancelModifyParamsBtn,&QPushButton::clicked,this,&CProgramSettingsPage::CancelModifyDevBtnPressed);
connect(ui->mDatabaseFileSelectBtn,&QPushButton::clicked,this,&CProgramSettingsPage::SelectDBFileBtnPressed);
// connect(ui->mDBSignalDetailsTable,&QTableWidget::itemSelectionChanged,this,&CProgramSettingsPage::SignalSelectionChanged);
}
@@ -127,15 +133,20 @@ int CProgramSettingsPage::UpdatePage()
if(Device != 0)
{
//Update device name in the list (it might have just changed)
ui->mDevicesList->item(ui->mDevicesList->currentRow())->setText(Device->mDeviceName);
//update device information
ui->mDeviceNameEditBx->setPlainText(Device->mDeviceName);
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));
// ui->mDevicePollPeriodSpinBx->setEnabled(true);
ui->mDevicePollPeriodSpinBx->setValue(Device->mDevicePollPeriod);
// ui->mDevicePollPeriodSpinBx->setEnabled(false);
QFileInfo FileInfo(Device->mCANDeviceDatabaseFilename);
ui->mDatabaseFileNameLbl->setText(FileInfo.fileName());
ui->mDatabaseFileNameLbl->setToolTip(Device->mCANDeviceDatabaseFilename);
// ui->mDatabaseFileNameLbl->setText(QString("%1").arg(Device->mCANDeviceDatabaseFilename));
ui->mDevicePollPeriodSpinBx->setValue(Device->mDevicePollPeriod);
//update device database information
ui->mDBMessagesListWidget->clear();
ui->mDBSignalDetailsTable->clearContents();
@@ -313,6 +324,24 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
if(mDeviceChangeModeEnabled)
{
//Save Data
int index = ui->mDevicesList->currentRow();
if(index >= 0 && index < mDevicesList->size())
{
CCANDevice *ModifiedDevice = mDevicesList->at(index);
ModifiedDevice->mCANDeviceBaudrate = ui->mCANBaudrateComboBx->currentData().toInt();
ModifiedDevice->mCANDeviceID = ui->mCANIDComboBx->currentData().toInt();
ModifiedDevice->mCANDeviceDatabaseFilename = ui->mDatabaseFileNameLbl->toolTip(); //The full path is stored in the tooltip!
ModifiedDevice->mDeviceDescription = ui->mDeviceDescriptionTxtEdit->toPlainText();
ModifiedDevice->mDeviceName = ui->mDeviceNameEditBx->toPlainText();
ModifiedDevice->mDevicePollPeriod = ui->mDevicePollPeriodSpinBx->value();
mProgramPtr->SaveSystemConfigRequest();
}
ui->mDeviceDescriptionTxtEdit->setEnabled(false);
ui->mDatabaseFileSelectBtn->hide();
ui->mCANBaudrateComboBx->setEnabled(false);
@@ -321,9 +350,11 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
ui->mDevicePollPeriodSpinBx->setEnabled(false);
ui->mModifyDevParamsBtn->setText("Modifier");
ui->mCancelModifyParamsBtn->hide();
ui->mDeviceNameEditBx->setEnabled(false);
mDeviceChangeModeEnabled = false;
}
else
{
@@ -336,6 +367,7 @@ void CProgramSettingsPage::ModifyDeviceBtnPressed()
ui->mDevicePollPeriodSpinBx->setEnabled(true);
ui->mModifyDevParamsBtn->setText("Sauvegarder");
ui->mCancelModifyParamsBtn->show();
ui->mDeviceNameEditBx->setEnabled(true);
mDeviceChangeModeEnabled = true;
}
@@ -351,8 +383,24 @@ void CProgramSettingsPage::CancelModifyDevBtnPressed()
ui->mDevicePollPeriodSpinBx->setEnabled(false);
ui->mModifyDevParamsBtn->setText("Modifier");
ui->mCancelModifyParamsBtn->hide();
ui->mDeviceNameEditBx->setEnabled(false);
mDeviceChangeModeEnabled = false;
UpdatePage();
}
void CProgramSettingsPage::SelectDBFileBtnPressed()
{
QString FileName;
FileName = QFileDialog::getOpenFileName(this,tr("Fichier database"), "./", tr("Fichiers dbc (*.dbc)"));
if(!FileName.isEmpty())
{
QFileInfo FileInfo(FileName);
ui->mDatabaseFileNameLbl->setText(FileInfo.fileName());
ui->mDatabaseFileNameLbl->setToolTip(FileName);
}
}
@@ -40,6 +40,7 @@ public slots:
void MessageSelectionChanged();
void ModifyDeviceBtnPressed();
void CancelModifyDevBtnPressed();
void SelectDBFileBtnPressed();
};
#endif // PROGRAMSETTINGSPAGE_H
+24 -27
View File
@@ -70,7 +70,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<y>60</y>
<width>91</width>
<height>16</height>
</rect>
@@ -91,7 +91,7 @@
<property name="geometry">
<rect>
<x>100</x>
<y>39</y>
<y>59</y>
<width>131</width>
<height>20</height>
</rect>
@@ -101,7 +101,7 @@
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<y>90</y>
<width>91</width>
<height>16</height>
</rect>
@@ -122,7 +122,7 @@
<property name="geometry">
<rect>
<x>100</x>
<y>70</y>
<y>90</y>
<width>131</width>
<height>21</height>
</rect>
@@ -173,20 +173,20 @@
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<y>120</y>
<width>301</width>
<height>51</height>
</rect>
</property>
<property name="title">
<string>Base de données</string>
<string>Fichier base de données</string>
</property>
<widget class="QLabel" name="mDatabaseFileNameLbl">
<property name="geometry">
<rect>
<x>0</x>
<y>27</y>
<width>301</width>
<x>10</x>
<y>26</y>
<width>291</width>
<height>16</height>
</rect>
</property>
@@ -215,24 +215,6 @@
</property>
</widget>
</widget>
<widget class="QLabel" name="mCANBaudrateLbl_3">
<property name="geometry">
<rect>
<x>10</x>
<y>160</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>CAN Baudrate:</string>
</property>
</widget>
<widget class="QSpinBox" name="mDevicePollPeriodSpinBx">
<property name="geometry">
<rect>
@@ -256,6 +238,21 @@
<string>Annuler</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="mDeviceNameEditBx">
<property name="geometry">
<rect>
<x>13</x>
<y>23</y>
<width>281</width>
<height>31</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="mDatabaseGroupBox">
<property name="geometry">
+16 -14
View File
@@ -19,7 +19,7 @@
COtarcikCan::COtarcikCan(QObject *parent) : QObject(parent)
{
mMainWindow.mProgramSettingsPage->mProgramPtr = this;
}
COtarcikCan::~COtarcikCan()
@@ -30,7 +30,7 @@ COtarcikCan::~COtarcikCan()
delete mCANDevicesList.takeFirst();
}
mCANDevicesList.clear();
mMainWindow.mProgramSettingsPage->mProgramPtr = this;
}
@@ -56,11 +56,15 @@ int COtarcikCan::Start()
mMainWindow.mProgramSettingsPage->SetDevicesList(&mCANDevicesList);
}
// CCANDevice *NewCANDevice = new CCANDevice();
// mCANDevicesList.append(NewCANDevice);
// NewCANDevice->mProgramPtr = this;
// NewCANDevice->Init("IVT-S_all-variations_12082020.dbc",PCAN_USBBUS1,PCAN_BAUD_500K,"Puck CAN USB branchée sur le module Parker qui contrôle la patente", "Module Parker",1000);
// SaveSystemConfigRequest();
// mMainWindow.mProgramSettingsPage->SetDevicesList(&mCANDevicesList);
// NewCANDevice = new CCANDevice();
// mCANDevicesList.append(NewCANDevice);
@@ -69,7 +73,7 @@ int COtarcikCan::Start()
// NewCANDevice->Init("mazda_3_2019.dbc",PCAN_USBBUS3,PCAN_BAUD_800K,"Puck CAN USB branchée sur une autre patente", "Module Cossin",200);
}
@@ -87,24 +91,22 @@ int COtarcikCan::InitCANViewer(QList<CCANMessage *> *MsgList)
}
int COtarcikCan::SaveSystemConfigRequest(QList<CCANDevice *> *DevicesList)
//The device configuration has been modified directly in the master list
//Just save it and refresh display.
int COtarcikCan::SaveSystemConfigRequest()
{
if(DevicesList == 0)
{
qDebug("COtarcikCan::Trying to save a config with an invalid devices list");
return RET_GENERAL_ERROR;
}
if(mSystemConfig.SaveConfig(DevicesList) == RET_OK)
if(mSystemConfig.SaveConfig(&mCANDevicesList) == RET_OK)
{
// mMainWindow.mProgramSettingsPage->UpdatePage();
//Config saving is successful. To apply changes we need to reload the devices.
//The easiest way is to delete everything and reload.
while(mCANDevicesList.size() != 0)
{
delete mCANDevicesList.takeFirst();
}
while(DevicesList->size() != 0)
{
delete DevicesList->takeFirst();
}
if(mSystemConfig.LoadConfig(&mCANDevicesList) == RET_OK)
{
for(int i = 0; i < mCANDevicesList.size(); i++)
+1 -1
View File
@@ -25,7 +25,7 @@ public:
int UpdateCANViewerDataRequest(QList<CCANMessage *> *MsgList);
int SaveSystemConfigRequest(QList<CCANDevice*> *DevicesList);
int SaveSystemConfigRequest();
private:
QList<CCANDevice*> mCANDevicesList;
+2 -2
View File
@@ -51,7 +51,7 @@ int CPCANInterface::Init(TPCANHandle CANDeviceChannel, TPCANBaudrate CANBaudRate
else
{
CANInterfaceOpened = true;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Initialisation du module PCAN USB avec succès");
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Module PCAN USB initialisé avec succès",true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
}
return RET_OK;
}
@@ -69,7 +69,7 @@ int CPCANInterface::DeInit()
}
else
{
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Module PCAN USB déinitialisé avec succès...");
CGeneralMessagesLogDispatcher::instance()->AddLogMessage("Module PCAN USB déinitialisé avec succès...",true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
}
return RET_OK;
+2 -2
View File
@@ -66,7 +66,7 @@ int CSystemConfig::LoadConfig(QList<CCANDevice *> *DevicesList)
delete ConfigFile;
delete InputStream;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"));
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}
@@ -112,7 +112,7 @@ int CSystemConfig::SaveConfig(QList<CCANDevice *> *DevicesList)
delete ConfigFile;
delete OutputStream;
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."));
CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS);
return RET_OK;
}