From 0eae4dbe5464d9e29765eba130bf730ebc12de4a Mon Sep 17 00:00:00 2001 From: Zach H Date: Sun, 17 Dec 2017 17:32:31 -0500 Subject: [PATCH] add checkbox option to clear log (#2963) --- cockatrice/src/dlg_viewlog.cpp | 25 +++++++++++++++++---- cockatrice/src/dlg_viewlog.h | 11 +++++---- cockatrice/src/logger.cpp | 6 +++++ cockatrice/src/settings/serverssettings.cpp | 11 +++++++++ cockatrice/src/settings/serverssettings.h | 3 +++ 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/cockatrice/src/dlg_viewlog.cpp b/cockatrice/src/dlg_viewlog.cpp index 65cbd233..78b23ecd 100644 --- a/cockatrice/src/dlg_viewlog.cpp +++ b/cockatrice/src/dlg_viewlog.cpp @@ -1,18 +1,26 @@ #include "dlg_viewlog.h" #include "logger.h" +#include "settingscache.h" #include #include -DlgViewLog::DlgViewLog(QWidget *parent) -: QDialog(parent) +DlgViewLog::DlgViewLog(QWidget *parent) : QDialog(parent) { + + logArea = new QPlainTextEdit; logArea->setReadOnly(true); - QVBoxLayout *mainLayout = new QVBoxLayout; + auto *mainLayout = new QVBoxLayout; mainLayout->addWidget(logArea); + coClearLog = new QCheckBox; + coClearLog->setText(tr("Clear log when closing")); + coClearLog->setChecked(settingsCache->servers().getClearDebugLogStatus(true)); + connect(coClearLog, SIGNAL(toggled(bool)), this, SLOT(actCheckBoxChanged(bool))); + mainLayout->addWidget(coClearLog); + setLayout(mainLayout); setWindowTitle(tr("Debug Log")); @@ -22,6 +30,11 @@ DlgViewLog::DlgViewLog(QWidget *parent) connect(&Logger::getInstance(), SIGNAL(logEntryAdded(QString)), this, SLOT(logEntryAdded(QString))); } +void DlgViewLog::actCheckBoxChanged(bool abNewValue) +{ + settingsCache->servers().setClearDebugLogStatus(abNewValue); +} + void DlgViewLog::loadInitialLogBuffer() { QList logBuffer = Logger::getInstance().getLogBuffer(); @@ -36,6 +49,10 @@ void DlgViewLog::logEntryAdded(QString message) void DlgViewLog::closeEvent(QCloseEvent * /* event */) { - logArea->clear(); + if (coClearLog->isChecked()) + { + logArea->clear(); + } + logArea->appendPlainText(Logger::getInstance().getClientVersion()); } \ No newline at end of file diff --git a/cockatrice/src/dlg_viewlog.h b/cockatrice/src/dlg_viewlog.h index f11be184..96cf5028 100644 --- a/cockatrice/src/dlg_viewlog.h +++ b/cockatrice/src/dlg_viewlog.h @@ -2,6 +2,7 @@ #define DLG_VIEWLOG_H #include +#include class QPlainTextEdit; class QCloseEvent; @@ -13,11 +14,13 @@ public: protected: void closeEvent(QCloseEvent *event); private: - QPlainTextEdit *logArea; + QPlainTextEdit *logArea; + QCheckBox *coClearLog; - void loadInitialLogBuffer(); + void loadInitialLogBuffer(); + void actCheckBoxChanged(bool abNewValue); private slots: - void logEntryAdded(QString message); + void logEntryAdded(QString message); }; -#endif +#endif \ No newline at end of file diff --git a/cockatrice/src/logger.cpp b/cockatrice/src/logger.cpp index 71c252e1..d5d11d19 100644 --- a/cockatrice/src/logger.cpp +++ b/cockatrice/src/logger.cpp @@ -21,9 +21,13 @@ Logger::~Logger() void Logger::logToFile(bool enabled) { if (enabled) + { openLogfileSession(); + } else + { closeLogfileSession(); + } } QString Logger::getClientVersion() @@ -34,7 +38,9 @@ QString Logger::getClientVersion() void Logger::openLogfileSession() { if (logToFileEnabled) + { return; + } fileHandle.setFileName(LOGGER_FILENAME); fileHandle.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text); diff --git a/cockatrice/src/settings/serverssettings.cpp b/cockatrice/src/settings/serverssettings.cpp index 009e185c..adeec191 100644 --- a/cockatrice/src/settings/serverssettings.cpp +++ b/cockatrice/src/settings/serverssettings.cpp @@ -164,6 +164,17 @@ QString ServersSettings::getFPPlayerName(QString defaultName) return name == QVariant() ? defaultName : name.toString(); } +void ServersSettings::setClearDebugLogStatus(bool abIsChecked) +{ + setValue(abIsChecked, "save_debug_log", "server"); +} + +bool ServersSettings::getClearDebugLogStatus(bool abDefaultValue) +{ + QVariant cbFlushLog = getValue("save_debug_log", "server"); + return cbFlushLog == QVariant() ? abDefaultValue : cbFlushLog.toBool(); +} + void ServersSettings::addNewServer(QString saveName, QString serv, QString port, QString username, QString password, bool savePassword) { if (updateExistingServer(saveName, serv, port, username, password, savePassword)) diff --git a/cockatrice/src/settings/serverssettings.h b/cockatrice/src/settings/serverssettings.h index 30b6ec87..d2748118 100644 --- a/cockatrice/src/settings/serverssettings.h +++ b/cockatrice/src/settings/serverssettings.h @@ -39,6 +39,9 @@ public: void setFPPlayerName(QString playerName); void addNewServer(QString saveName, QString serv, QString port, QString username, QString password, bool savePassword); bool updateExistingServer(QString saveName, QString serv, QString port, QString username, QString password, bool savePassword); + void setClearDebugLogStatus(bool abIsChecked); + bool getClearDebugLogStatus(bool abDefaultValue); + signals: public slots: