#include "SystemConfig.h" #include "GeneralMessagesLogDispatcher.h" CSystemConfig::CSystemConfig() { } int CSystemConfig::LoadConfig(QList *DevicesList) { 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) { // LoadDefaultSettings(Settings); // SaveSettings(Settings); 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 { // LoadDefaultSettings(Settings); 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) { // LoadDefaultSettings(Settings); return RET_GENERAL_ERROR; } *InputStream >> FileVersion; int NbDevices; *InputStream >> NbDevices; for(int i = 0; i < NbDevices; i++) { CCANDevice *NewDevice = new CCANDevice; *InputStream >> *NewDevice; DevicesList->append(NewDevice); } ConfigFile->close(); delete ConfigFile; delete InputStream; CGeneralMessagesLogDispatcher::instance()->AddLogMessage(QString("Configuration système chargée avec succès!")); return RET_OK; } int CSystemConfig::SaveConfig(QList *DevicesList) { 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 << DevicesList->size(); //Number of devices for(int i = 0; i < DevicesList->size(); i++) { *OutputStream << *DevicesList->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.")); return RET_OK; }