MCPcopy Create free account
hub / github.com/SeaEpoch/MouseClick / SettingsAgent

Method SettingsAgent

src/modules/settingsagent.cpp:65–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65SettingsAgent::SettingsAgent(QObject *parent)
66 : QObject{parent}
67{
68 _settings_file_path = QCoreApplication::applicationDirPath() + "/config.ini";
69 QFile settings_file(_settings_file_path);
70 if (!settings_file.exists()) {
71 MessageBox file_missing_msg;
72 file_missing_msg.setWindowIcon(QIcon(":/svg/favicon.svg"));
73 file_missing_msg.setIcon(QMessageBox::Warning);
74 file_missing_msg.setText(tr("WARNING"));
75 file_missing_msg.setInformativeText(tr("The configuration file 'condig.ini' was not found. The program may have been modified. It is recommended to reinstall the program, which may resolve this issue."));
76
77 QPushButton* ignore_btn = file_missing_msg.addButton(tr("Ignore"), QMessageBox::NoRole);
78 QPushButton* reinstall_btn = file_missing_msg.addButton(tr("Reinstall"), QMessageBox::YesRole);
79 file_missing_msg.setDefaultButton(ignore_btn);
80
81 file_missing_msg.exec();
82
83 if (file_missing_msg.clickedButton() == reinstall_btn) {
84 QDesktopServices::openUrl(QUrl("https://seayj.github.io/MouseClick/"));
85 } else if (file_missing_msg.clickedButton() == ignore_btn) {
86 // nothing to do
87 } else {
88 // nothing to do
89 }
90 }
91
92 QSettings settings(_settings_file_path, QSettings::IniFormat);
93
94 settings.beginGroup("MainWindow");
95 _config["ThemeMode"] = settings.value("ThemeMode");
96 _config["WindowState"] = settings.value("WindowState");
97 settings.endGroup();
98
99 settings.beginGroup("Settings");
100 _config["Language"] = settings.value("Language");
101 _config["Hotkey"] = settings.value("Hotkey");
102 settings.endGroup();
103
104 // 主题的特殊检查
105 if (!Theme::isValidThemeMode(_config["ThemeMode"].toInt())) {
106 _config["ThemeMode"] = _DEFAULT_THEMEMODE;
107 QTimer::singleShot(0, this, [this](){ // 延迟发送,确保在对象初始化完成后发送信号
108 emit currentThemeChanged(_DEFAULT_THEMEMODE);
109 });
110 }
111
112 // 语言的特殊检查(必须确保可用)
113 const QString language = _config["Language"].toString();
114 if (language.isEmpty() || !_language_support_list.contains(language)) {
115 _config["Language"] = _DEFAULT_LANGUAGE;
116 QTimer::singleShot(0, this, [this]() { // 延迟发送,确保在对象初始化完成后发送信号
117 emit currentLanguageChanged(_DEFAULT_LANGUAGE);
118 });
119 }
120}
121
122SettingsAgent::~SettingsAgent()

Callers

nothing calls this directly

Calls 1

setIconMethod · 0.80

Tested by

no test coverage detected