#include "SystemConfig.h" #include "GeneralMessagesLogDispatcher.h" CSystemConfig::CSystemConfig() : mSaveLocalLogFile(false) { } CSystemConfig::~CSystemConfig() { while(mCANDeviceConfigList.size() != 0) { delete mCANDeviceConfigList.takeAt(0); } } int CSystemConfig::LoadConfig() { CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Chargement de la configuration système...")); // if(DevicesList == 0) // { // qDebug("CSystemConfig: Trying to load a config into an invalid devices list"); // CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers liste de devices invalide!!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS); // return RET_GENERAL_ERROR; // } QFile* ConfigFile = new QFile("./Config/Station.cfg"); if(ConfigFile) { if(ConfigFile->open(QIODevice::ReadOnly | QIODevice::Unbuffered) == false) { qDebug("CSystemConfig: Failed to open config file in config loading"); CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS); return RET_GENERAL_ERROR; } } else { CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS); qDebug("CSystemConfig: Invalid QFile pointer in config loading..."); return RET_GENERAL_ERROR; } QDataStream * InputStream = new QDataStream(ConfigFile); quint32 MagicNbr;// = 0xBAADCAFE; quint32 FileVersion; *InputStream >> MagicNbr; if(MagicNbr != OTARCIK_CONFIG_FILE_MAGIC_NBR) { return RET_GENERAL_ERROR; } *InputStream >> FileVersion; int NbDevices; *InputStream >> NbDevices; for(int i = 0; i < NbDevices; i++) { CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig; *InputStream >> *NewDeviceConfig; //DevicesList->append(new CCANDevice(NewDeviceConfig)); mCANDeviceConfigList.append(NewDeviceConfig); } ConfigFile->close(); delete ConfigFile; delete InputStream; CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS); return RET_OK; } int CSystemConfig::SaveConfig() { CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Sauvegarde de la configuration système...")); QFile *ConfigFile = new QFile("./Config/Station.cfg"); if(ConfigFile) { if(ConfigFile->open(QIODevice::WriteOnly | QIODevice::Unbuffered) == false) { CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Impossible d'ouvrir le fichier /Config/Station.cfg"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS); return RET_GENERAL_ERROR; } } else { CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Échec de sauvegarde de la config système. Pointeur vers QFile invalide !!!"),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_ERROR_STATUS); return RET_GENERAL_ERROR; } QDataStream * OutputStream = new QDataStream(ConfigFile); quint32 MagicNbr = OTARCIK_CONFIG_FILE_MAGIC_NBR; quint32 FileVersion = OTARCIK_CURRENT_CONFIG_FILE_VERSION; //Setup the config file header *OutputStream << MagicNbr; *OutputStream << FileVersion; //Save the CAN devices config info *OutputStream << mCANDeviceConfigList.size(); //Number of devices for(int i = 0; i < mCANDeviceConfigList.size(); i++) { *OutputStream << *mCANDeviceConfigList.at(i); //Add each device info to config file } ConfigFile->flush(); ConfigFile->close(); delete ConfigFile; delete OutputStream; CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système sauvegardée avec succès."),true,CGeneralMessagesLogDispatcher::GEN_MSG_TXT_SUCCESS_STATUS); return RET_OK; } QList * CSystemConfig::GetCANDevicesConfigList() { return &mCANDeviceConfigList; } int CSystemConfig::SetCANDevicesConfigList(QList *DevicesConfigList) { if(DevicesConfigList == 0) return RET_GENERAL_ERROR; while(mCANDeviceConfigList.size() != 0) { delete mCANDeviceConfigList.takeAt(0); } for(int i = 0; i < DevicesConfigList->size(); i++) { CCANDeviceConfig *NewDeviceConfig = new CCANDeviceConfig(*DevicesConfigList->at(i)); mCANDeviceConfigList.append(NewDeviceConfig); } return RET_OK; }