PowerModeler/source/settings.cpp

154 lines
4.7 KiB
C++
Raw Normal View History

2025-03-14 16:06:20 +08:00
#include "settings.h"
#include <QCoreApplication>
#include <QFile>
Settings& Settings::instance()
{
//采用静态局部变量的方式,静态局部变量的初始化是在第一次访问时,以后的调用不会多次初始化,并且生命周期和程序一致
static Settings instance;
return instance;
}
Settings::Settings()
{
//和应用程序同一路径
QString cofigDir = QCoreApplication::applicationDirPath();
m_settingsFile = cofigDir + "/app_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()
{
delete m_settings;
}
QVariant Settings::getDefaultValue(const QString& group, const QString& name)
{
if(group.contains("Database-") && name == "host")
return "127.0.0.1";
else if(group.contains("Database-") && name == "port")
return 5432;
else if(group.contains("Database-") && name == "dbType")
return "QPSQL";
else if(group.contains("Database-") && name == "database")
return "postgres";
else if(group.contains("Database-") && name == "username")
return "postgres";
else if(group.contains("Database-") && name == "password")
return "123456";
else if(group.contains("Database-") && name == "comment")
return "";
else if(group == "Log" && name == "logFile")
return QCoreApplication::applicationDirPath() + "/log/app.log";
else if(group == "Log" && name == "level")
return "DEBUG";
else if(group == "Log" && name == "maxSize")
return 10485760; //1024 * 1024 *10 10MB
else if(group == "Log" && name == "backups")
return 5;
else if(group == "Log" && name == "consoleOutput")
return "false";
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();
}
QStringList Settings::getConnectionList()
{
QStringList result;
QStringList litsGroup = m_settings->childGroups();
for(QString gropu : litsGroup)
{
if(gropu.contains("Database-"))
{
QStringList tempList = gropu.split("-");
if(tempList.count() == 2)
result.append(tempList.at(1));
}
}
return result;
}
DatabaseConfig Settings::loadDatabaseConfig(const QString& configID)
{
DatabaseConfig config;
QString group = "Database-" + configID;
//m_settings->beginGroup(group);
config.strConnectionName = value(group, "connName").toString();
config.strHost = value(group, "host").toString();
config.nPort = value(group, "port").toInt();
config.strDBType = value(group, "dbType").toString();
config.strDBName = value(group, "database").toString();
config.strUserName = value(group, "username").toString();
config.strPassword = value(group, "password").toString();
config.strComment = value(group, "comment").toString();
//m_settings->endGroup();
return config;
}
void Settings::saveDatabaseConfig(const DatabaseConfig& config)
{
QString group = "Database-" + config.strID;
m_settings->beginGroup(group);
m_settings->setValue("connName", config.strConnectionName);
m_settings->setValue("host", config.strHost);
m_settings->setValue("port", config.nPort);
m_settings->setValue("dbType", config.strDBType);
m_settings->setValue("database", config.strDBName);
m_settings->setValue("username", config.strUserName);
if(config.bSavePS)
m_settings->setValue("password", config.strPassword);
else
m_settings->remove("password");
m_settings->setValue("comment", config.strComment);
m_settings->endGroup();
m_settings->sync();
}
void Settings::removeDatabaseConfig(const QString& configID)
{
QString group = "Database-" + configID;
m_settings->beginGroup(group);
QStringList keys = m_settings->childKeys();
for(QString key : keys)
m_settings->remove(key);
m_settings->endGroup();
}