EventConfigurator/apps/settings.cpp

85 lines
2.3 KiB
C++

#include "settings.h"
#include <QCoreApplication>
#include <QDir>
#include <QFile>
Settings& Settings::instance()
{
static Settings instance;
return instance;
}
Settings::Settings()
{
m_settingsFile = QDir::cleanPath(QCoreApplication::applicationDirPath() + "/../conf/config.ini");
QFile file(m_settingsFile);
if (file.open(QIODevice::ReadWrite)) {
m_isVaildSettingsFile = true;
m_settings = new QSettings(m_settingsFile, QSettings::IniFormat);
}
else {
m_isVaildSettingsFile = false;
}
}
Settings::~Settings()
{
if (m_isVaildSettingsFile) {
delete m_settings;
}
}
QVariant Settings::getDefaultValue(const QString& group, const QString& name)
{
if(group == "Log" && name == "logFile")
return QDir::cleanPath(QCoreApplication::applicationDirPath() + "/../logs/EventConfigurator.log");
else if(group == "Log" && name == "pattern")
return "[%{time yyyyMMdd h:mm:ss.zzz ttt} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{file}:%{line} - %{message}";
else if(group == "Log" && name == "level")
return "DEBUG";
else if(group == "Log" && name == "maxSize")
return 10485760;
else if(group == "Log" && name == "backups")
return 5;
else if(group == "Log" && name == "consoleOutput")
return "true";
else if(group == "Log" && name == "fileOutput")
return "true";
else
return QVariant();
}
void Settings::setValue(const QString& group, const QString& name, const QVariant& value)
{
if(!m_isVaildSettingsFile)
return;
m_settings->beginGroup(group);
m_settings->setValue(name, value);
m_settings->endGroup();
}
QVariant Settings::value(const QString& group, const QString& name)
{
QVariant defaultVaule = getDefaultValue(group, name);
if(!m_isVaildSettingsFile)
return defaultVaule;
QVariant value = m_settings->value(group + "/" + name, defaultVaule);
return value;
}
void Settings::clearValue(const QString& group, const QString& name)
{
m_settings->beginGroup(group);
m_settings->remove(name);
m_settings->endGroup();
}
bool Settings::contains(const QString& group, const QString& name)
{
return m_settings->contains(group + "/" + name);
}