/******************************************************************************* * * * Gros Gin électronique * * 2023 * * * * Project: Otarcik CAN * * * * * * * *******************************************************************************/ /* Description: This class allows to save system logs to a file and optionnaly to the GUI logs window */ #include "GeneralMessagesLogDispatcher.h" #include //singleton instantiation CGeneralMessagesLogDispatcher CGeneralMessagesLogDispatcher::mSingleton; CGeneralMessagesLogDispatcher::CGeneralMessagesLogDispatcher() { mGeneralStatusPageHandle = 0; mSystemLogFile = 0; } CGeneralMessagesLogDispatcher::~CGeneralMessagesLogDispatcher() { if(mSystemLogFile != 0) { mSystemLogFile->close(); delete mSystemLogFile; } } int CGeneralMessagesLogDispatcher::Init() { QString FileName; FileName = "./Logs/SystemLog.txt"; mSystemLogFile = new QFile(FileName); if(mSystemLogFile) { mSystemLogFile->open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text | QIODevice::Unbuffered); QString temp; mSystemLogFile->write("\n\n"); mSystemLogFile->write(QString("********************************************************************\n").toUtf8()); mSystemLogFile->write(QString("Démarrage du logiciel Otarcik CAN le %1 à %2\n").arg(QDateTime::currentDateTime().date().toString("yyyy-MM-dd")).arg(QDateTime::currentDateTime().time().toString("hh:mm:ss")).toUtf8()); mSystemLogFile->write(QString("********************************************************************\n").toUtf8()); } return RET_OK; } int CGeneralMessagesLogDispatcher::AddLogMessage(QString LogLine, bool AddToGUILogPanel, eGenMsgTextErrorStatus TxtErrStatus) { //TODO: Add text to log file... LogLine.remove('\n'); LogLine.remove('\r'); LogLine.append('\n'); LogLine.prepend(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")); if(mSystemLogFile == NULL) { qDebug("GeneralMessagesLogDispatcher : Trying to add log to invalid system log file pointer "); return RET_GENERAL_ERROR; } if(mSystemLogFile->isOpen() == false) { qDebug("GeneralMessagesLogDispatcher : Trying to add log to unopened system log file"); return RET_GENERAL_ERROR; } mSystemLogFile->write(LogLine.toUtf8()); if(AddToGUILogPanel == true) { if(TxtErrStatus == GEN_MSG_TXT_ERROR_STATUS) { LogLine.prepend("%E"); } else if(TxtErrStatus == GEN_MSG_TXT_WARNING_STATUS) { LogLine.prepend("%W"); } if(mGeneralStatusPageHandle != 0) { mGeneralStatusPageHandle->AddGeneralMsgBoxLineEntry(LogLine); } else { qDebug("Someone forgot to assing their pointers in CGeneralMessagesLogDispatch::AddLogMessage!! This needs to be fixed"); return RET_GENERAL_ERROR; } } return RET_OK; } int CGeneralMessagesLogDispatcher::BindGuiPageHandle(CGeneralStatusPage *Handle) { if(Handle == 0) { return RET_GENERAL_ERROR; } else { mGeneralStatusPageHandle = Handle; } return RET_OK; }