1 /***************************************************************************
2 * *
3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 3 of the License, or *
6 * (at your option) any later version. *
7 * *
8 ***************************************************************************/
9
10 #include "WulforSettings.h"
11 #include "WulforUtil.h"
12
13 #include "dcpp/stdinc.h"
14 #include "dcpp/File.h"
15 #include "dcpp/Util.h"
16 #include "dcpp/SimpleXML.h"
17
18 #include <QApplication>
19 #include <QFile>
20 #include <QTextCodec>
21 #include <QLocale>
22 #include <QFile>
23 #include <QDir>
24 #include <QTranslator>
25 #include <QLibraryInfo>
26 #include <QPalette>
27 #include <QColor>
28 #include <QFont>
29 #include <QStyle>
30 #include <QBrush>
31 #include <QUrl>
32
33 #include <QtDebug>
34
35 #ifndef CLIENT_TRANSLATIONS_DIR
36 #define CLIENT_TRANSLATIONS_DIR ""
37 #endif
38
39 using namespace dcpp;
40
41
42
WulforSettings()43 WulforSettings::WulforSettings():
44 settings(_q(Util::getPath(Util::PATH_USER_CONFIG)) + "EiskaltDC++_Qt.conf", QSettings::IniFormat),
45 tor(0)
46 {
47 configFileOld = _q(Util::getPath(Util::PATH_USER_CONFIG)) + "EiskaltDC++.xml";
48
49 QStringList idns = QUrl::idnWhitelist();
50 idns.push_back("рф");
51 QUrl::setIdnWhitelist(idns);
52
53 qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
54 qApp->installTranslator(&qtTranslator);
55
56 connect(this, SIGNAL(fontChanged(QString,QString)), this, SLOT(slotFontChanged(QString,QString)));
57 connect(this, SIGNAL(fontChanged(QString,QString)), this, SIGNAL(strValueChanged(QString,QString)));
58 }
59
~WulforSettings()60 WulforSettings::~WulforSettings(){
61 }
62
hasKey(const QString & key) const63 bool WulforSettings::hasKey(const QString &key) const{
64 return (intmap.keys().contains(key) || strmap.keys().contains(key));
65 }
66
load()67 void WulforSettings::load(){
68 #ifdef _DEBUG_MODEL_
69 qDebug() << settings.fileName();
70 #endif
71 if (QFile::exists(configFileOld) && settings.value("app/firstrun", true).toBool()){
72 loadOldConfig();
73
74 //And load old config into QSettings
75 auto it = strmap.begin();
76
77 for (; it != strmap.end(); ++it)
78 settings.setValue(it.key(), it.value());
79
80 auto iit = intmap.begin();
81
82 for (; iit != intmap.end(); ++iit)
83 settings.setValue(iit.key(), iit.value());
84
85 // QFile(configFileOld).remove();
86
87 intmap.clear();
88 strmap.clear();
89
90 settings.setValue("app/firstrun", false);
91 }
92
93 if (settings.value("app/firstrun", true).toBool()){
94 settings.setValue("app/firstrun", false);
95 //Load default values
96 {
97 settings.setValue(WS_CHAT_LOCAL_COLOR, "#078010");
98 settings.setValue(WS_CHAT_OP_COLOR, "#000000");
99 settings.setValue(WS_CHAT_BOT_COLOR, "#838383");
100 settings.setValue(WS_CHAT_FIND_COLOR, "#FFFF00");
101 settings.setValue(WS_CHAT_PRIV_LOCAL_COLOR, "#078010");
102 settings.setValue(WS_CHAT_PRIV_USER_COLOR, "#ac0000");
103 settings.setValue(WS_CHAT_SAY_NICK, "#2344e7");
104 settings.setValue(WS_CHAT_CORE_COLOR, "#ff0000");
105 settings.setValue(WS_CHAT_STAT_COLOR, "#ac0000");
106 settings.setValue(WS_CHAT_USER_COLOR, "#ac0000");
107 settings.setValue(WS_CHAT_FAVUSER_COLOR, "#00ff7f");
108 settings.setValue(WS_CHAT_TIME_COLOR, qApp->palette().text().color().name());
109 settings.setValue(WS_CHAT_MSG_COLOR, qApp->palette().text().color().name());
110 settings.setValue(WS_CHAT_USERLIST_STATE, "");
111 settings.setValue(WS_CHAT_CMD_ALIASES, "");
112 settings.setValue(WS_CHAT_FONT, "");
113 settings.setValue(WS_CHAT_ULIST_FONT, "");
114 settings.setValue(WS_CHAT_PM_FONT, "");
115 settings.setValue(WS_CHAT_SEPARATOR, ":");
116 settings.setValue(WS_CHAT_TIMESTAMP, "hh:mm:ss");
117 settings.setValue(WS_QCONNECT_HISTORY, "");
118 settings.setValue(WS_DEFAULT_LOCALE, "UTF-8");
119 settings.setValue(WS_DOWNLOAD_DIR_HISTORY, "");
120 settings.setValue(WS_DQUEUE_STATE, "");
121 settings.setValue(WS_SEARCH_STATE, "");
122 settings.setValue(WS_SEARCH_HISTORY, "");
123 settings.setValue(WS_TRANSLATION_FILE, "");
124 settings.setValue(WS_TRANSFERS_STATE, "");
125 settings.setValue(WS_SHARE_LPANE_STATE, "");
126 settings.setValue(WS_SHARE_RPANE_STATE, "");
127 settings.setValue(WS_MAINWINDOW_STATE, "");
128 settings.setValue(WS_MAINWINDOW_TOOLBAR_ACTS,"");
129 settings.setValue(WS_FTRANSFERS_FILES_STATE,"");
130 settings.setValue(WS_FTRANSFERS_USERS_STATE,"");
131 settings.setValue(WS_FAV_HUBS_STATE, "");
132 settings.setValue(WS_ADLS_STATE, "");
133 settings.setValue(WS_APP_THEME, "");
134 settings.setValue(WS_APP_FONT, "");
135 settings.setValue(WS_APP_ICONTHEME, "default");
136 settings.setValue(WS_APP_USERTHEME, "default");
137 settings.setValue(WS_APP_SHARED_FILES_COLOR,"#1f8f1f");
138 settings.setValue(WS_NOTIFY_SOUNDS, "");
139 settings.setValue(WS_NOTIFY_SND_CMD, "");
140 settings.setValue(WS_FAVUSERS_STATE, "");
141 settings.setValue(WS_SHAREHEADER_STATE, "");
142 settings.setValue(WS_DOWNLOADTO_ALIASES, "");
143 settings.setValue(WS_DOWNLOADTO_PATHS, "");
144 settings.setValue(WS_APP_EMOTICON_THEME, "default");
145 settings.setValue(WS_APP_ASPELL_LANG, "");
146 settings.setValue(WS_APP_ENABLED_SCRIPTS, "");
147 settings.setValue(WS_PUBLICHUBS_STATE, "");
148 settings.setValue(WS_SETTINGS_GUI_FONTS_STATE, "");
149
150 settings.setValue(WB_APP_AUTOAWAY_BY_TIMER, static_cast<int>(false));
151 settings.setValue(WB_CHAT_SHOW_TIMESTAMP, static_cast<int>(true));
152 settings.setValue(WB_SHOW_FREE_SPACE, static_cast<int>(true));
153 settings.setValue(WB_LAST_STATUS, static_cast<int>(true));
154 settings.setValue(WB_USERS_STATISTICS, static_cast<int>(true));
155 settings.setValue(WB_CHAT_SHOW_JOINS, static_cast<int>(false));
156 settings.setValue(WB_CHAT_REDIRECT_BOT_PMS, static_cast<int>(true));
157 settings.setValue(WB_CHAT_KEEPFOCUS, static_cast<int>(true));
158 settings.setValue(WB_CHAT_SHOW_JOINS_FAV, static_cast<int>(true));
159 settings.setValue(WB_CHAT_HIGHLIGHT_FAVS, static_cast<int>(true));
160 settings.setValue(WB_CHAT_ROTATING_MSGS, static_cast<int>(true));
161 settings.setValue(WB_CHAT_USE_SMILE_PANEL, static_cast<int>(false));
162 settings.setValue(WB_CHAT_HIDE_SMILE_PANEL, static_cast<bool>(true));
163 settings.setValue(WB_MAINWINDOW_MAXIMIZED, static_cast<int>(true));
164 settings.setValue(WB_MAINWINDOW_HIDE, static_cast<int>(false));
165 settings.setValue(WB_MAINWINDOW_REMEMBER, static_cast<int>(false));
166 settings.setValue(WB_MAINWINDOW_USE_M_TABBAR, static_cast<int>(true));
167 settings.setValue(WB_MAINWINDOW_USE_SIDEBAR, static_cast<int>(true));
168 settings.setValue(WB_SEARCHFILTER_NOFREE, static_cast<int>(false));
169 settings.setValue(WB_SEARCH_DONTHIDEPANEL, static_cast<int>(false));
170 settings.setValue(WB_ANTISPAM_ENABLED, static_cast<int>(false));
171 settings.setValue(WB_ANTISPAM_AS_FILTER, static_cast<int>(false));
172 settings.setValue(WB_ANTISPAM_FILTER_OPS, static_cast<int>(false));
173 settings.setValue(WB_IPFILTER_ENABLED, static_cast<int>(false));
174 settings.setValue(WB_TRAY_ENABLED, static_cast<int>(true));
175 settings.setValue(WB_EXIT_CONFIRM, static_cast<int>(false));
176 settings.setValue(WB_SHOW_IP_IN_CHAT, static_cast<int>(false));
177 settings.setValue(WB_SHOW_HIDDEN_USERS, static_cast<int>(false));
178 settings.setValue(WB_SHOW_JOINS, static_cast<int>(false));
179 settings.setValue(WB_NOTIFY_ENABLED, static_cast<int>(true));
180 settings.setValue(WB_NOTIFY_SND_ENABLED, static_cast<int>(false));
181 settings.setValue(WB_NOTIFY_SND_EXTERNAL, static_cast<int>(false));
182 settings.setValue(WB_NOTIFY_CH_ICON_ALWAYS, static_cast<int>(false));
183 settings.setValue(WB_NOTIFY_SHOW_ON_ACTIVE, static_cast<int>(false));
184 settings.setValue(WB_NOTIFY_SHOW_ON_VISIBLE, static_cast<int>(false));
185 settings.setValue(WB_FAVUSERS_AUTOGRANT, static_cast<int>(true));
186 settings.setValue(WB_APP_ENABLE_EMOTICON, static_cast<int>(true));
187 settings.setValue(WB_APP_FORCE_EMOTICONS, static_cast<int>(false));
188 settings.setValue(WB_APP_ENABLE_ASPELL, static_cast<int>(true));
189 settings.setValue(WB_APP_REMOVE_NOT_EX_DIRS,static_cast<int>(false));
190 settings.setValue(WB_APP_AUTO_AWAY, static_cast<int>(false));
191 settings.setValue(WB_APP_TBAR_SHOW_CL_BTNS, static_cast<int>(true));
192 settings.setValue(WB_WIDGETS_PANEL_VISIBLE, static_cast<int>(true));
193 settings.setValue(WB_TOOLS_PANEL_VISIBLE, static_cast<int>(true));
194 settings.setValue(WB_SEARCH_PANEL_VISIBLE, static_cast<int>(false));
195 settings.setValue(WB_MAIN_MENU_VISIBLE, static_cast<int>(true));
196 settings.setValue(WB_USE_CTRL_ENTER, static_cast<int>(false));
197 settings.setValue(WB_SIMPLE_SHARE_MODE, static_cast<int>(true));
198 settings.setValue(WI_APP_UNIT_BASE, 1024);
199 settings.setValue(WI_APP_AUTOAWAY_INTERVAL, 60);
200 settings.setValue(WI_APP_SHARED_FILES_ALPHA, 127);
201 settings.setValue(WI_CHAT_MAXPARAGRAPHS, 1000);
202 settings.setValue(WI_DEF_MAGNET_ACTION, 0);
203 settings.setValue(WI_CHAT_WIDTH, -1);
204 settings.setValue(WI_CHAT_USERLIST_WIDTH, -1);
205 settings.setValue(WI_CHAT_SORT_COLUMN, 0);
206 settings.setValue(WI_CHAT_SORT_ORDER, 0);
207 settings.setValue(WI_CHAT_DBLCLICK_ACT, 0);//nick in chat
208 settings.setValue(WI_CHAT_MDLCLICK_ACT, 1);//browse files
209 settings.setValue(WI_CHAT_FIND_COLOR_ALPHA, 127);
210 settings.setValue(WI_CHAT_STATUS_HISTORY_SZ,5);
211 settings.setValue(WI_CHAT_STATUS_MSG_MAX_LEN, 128);
212 settings.setValue(WI_STATUSBAR_HISTORY_SZ, 5);
213 settings.setValue(WI_MAINWINDOW_HEIGHT, -1);
214 settings.setValue(WI_MAINWINDOW_WIDTH, -1);
215 settings.setValue(WI_MAINWINDOW_X, -1);
216 settings.setValue(WI_MAINWINDOW_Y, -1);
217 settings.setValue(WI_SEARCH_SORT_COLUMN, 1);
218 settings.setValue(WI_SEARCH_SORT_ORDER, 0);
219 settings.setValue(WI_SEARCH_SHARED_ACTION, 0);
220 settings.setValue(WI_SEARCH_LAST_TYPE, 0);
221 settings.setValue(WI_TRANSFER_HEIGHT, -1);
222 settings.setValue(WI_SHARE_RPANE_WIDTH, -1);
223 settings.setValue(WI_SHARE_WIDTH, -1);
224 settings.setValue(WI_NOTIFY_EVENTMAP, 0x0B);// 0b00001011, (transfer done = off)
225 settings.setValue(WI_NOTIFY_MODULE, 1);//default
226 settings.setValue(WI_NOTIFY_SNDMAP, 0x0F);// 0b00001111, all events
227 settings.setValue(WI_OUT_IN_HIST, 50);//number of output messages in history
228 }
229 }
230 }
231
loadOldConfig()232 void WulforSettings::loadOldConfig(){
233 //Load default values into maps
234 {
235 strmap.insert(WS_CHAT_LOCAL_COLOR, "#078010");
236 strmap.insert(WS_CHAT_OP_COLOR, "#000000");
237 strmap.insert(WS_CHAT_BOT_COLOR, "#838383");
238 strmap.insert(WS_CHAT_FIND_COLOR, "#FFFF00");
239 strmap.insert(WS_CHAT_PRIV_LOCAL_COLOR, "#078010");
240 strmap.insert(WS_CHAT_PRIV_USER_COLOR, "#ac0000");
241 strmap.insert(WS_CHAT_SAY_NICK, "#2344e7");
242 strmap.insert(WS_CHAT_CORE_COLOR, "#ff0000");
243 strmap.insert(WS_CHAT_STAT_COLOR, "#ac0000");
244 strmap.insert(WS_CHAT_USER_COLOR, "#ac0000");
245 strmap.insert(WS_CHAT_FAVUSER_COLOR, "#00ff7f");
246 strmap.insert(WS_CHAT_TIME_COLOR, qApp->palette().text().color().name());
247 strmap.insert(WS_CHAT_MSG_COLOR, qApp->palette().text().color().name());
248 strmap.insert(WS_CHAT_USERLIST_STATE, "");
249 strmap.insert(WS_CHAT_CMD_ALIASES, "");
250 strmap.insert(WS_CHAT_FONT, "");
251 strmap.insert(WS_CHAT_ULIST_FONT, "");
252 strmap.insert(WS_CHAT_PM_FONT, "");
253 strmap.insert(WS_CHAT_SEPARATOR, ":");
254 strmap.insert(WS_CHAT_TIMESTAMP, "hh:mm:ss");
255 strmap.insert(WS_QCONNECT_HISTORY, "");
256 strmap.insert(WS_DEFAULT_LOCALE, "UTF-8");
257 strmap.insert(WS_DOWNLOAD_DIR_HISTORY, "");
258 strmap.insert(WS_DQUEUE_STATE, "");
259 strmap.insert(WS_SEARCH_STATE, "");
260 strmap.insert(WS_SEARCH_HISTORY, "");
261 strmap.insert(WS_TRANSLATION_FILE, "");
262 strmap.insert(WS_TRANSFERS_STATE, "");
263 strmap.insert(WS_SHARE_LPANE_STATE, "");
264 strmap.insert(WS_SHARE_RPANE_STATE, "");
265 strmap.insert(WS_MAINWINDOW_STATE, "");
266 strmap.insert(WS_MAINWINDOW_TOOLBAR_ACTS,"");
267 strmap.insert(WS_FTRANSFERS_FILES_STATE,"");
268 strmap.insert(WS_FTRANSFERS_USERS_STATE,"");
269 strmap.insert(WS_FAV_HUBS_STATE, "");
270 strmap.insert(WS_ADLS_STATE, "");
271 strmap.insert(WS_APP_THEME, "");
272 strmap.insert(WS_APP_FONT, "");
273 strmap.insert(WS_APP_ICONTHEME, "default");
274 strmap.insert(WS_APP_USERTHEME, "default");
275 strmap.insert(WS_APP_SHARED_FILES_COLOR,"#1f8f1f");
276 strmap.insert(WS_NOTIFY_SOUNDS, "");
277 strmap.insert(WS_NOTIFY_SND_CMD, "");
278 strmap.insert(WS_FAVUSERS_STATE, "");
279 strmap.insert(WS_SHAREHEADER_STATE, "");
280 strmap.insert(WS_DOWNLOADTO_ALIASES, "");
281 strmap.insert(WS_DOWNLOADTO_PATHS, "");
282 strmap.insert(WS_APP_EMOTICON_THEME, "default");
283 strmap.insert(WS_APP_ASPELL_LANG, "");
284 strmap.insert(WS_APP_ENABLED_SCRIPTS, "");
285 strmap.insert(WS_PUBLICHUBS_STATE, "");
286 strmap.insert(WS_SETTINGS_GUI_FONTS_STATE, "");
287
288 intmap.insert(WB_APP_AUTOAWAY_BY_TIMER, static_cast<int>(false));
289 intmap.insert(WB_CHAT_SHOW_TIMESTAMP, static_cast<int>(true));
290 intmap.insert(WB_SHOW_FREE_SPACE, static_cast<int>(true));
291 intmap.insert(WB_LAST_STATUS, static_cast<int>(true));
292 intmap.insert(WB_USERS_STATISTICS, static_cast<int>(true));
293 intmap.insert(WB_CHAT_SHOW_JOINS, static_cast<int>(false));
294 intmap.insert(WB_CHAT_REDIRECT_BOT_PMS, static_cast<int>(true));
295 intmap.insert(WB_CHAT_KEEPFOCUS, static_cast<int>(true));
296 intmap.insert(WB_CHAT_SHOW_JOINS_FAV, static_cast<int>(true));
297 intmap.insert(WB_CHAT_HIGHLIGHT_FAVS, static_cast<int>(true));
298 intmap.insert(WB_CHAT_ROTATING_MSGS, static_cast<int>(true));
299 intmap.insert(WB_CHAT_USE_SMILE_PANEL, static_cast<int>(false));
300 intmap.insert(WB_CHAT_HIDE_SMILE_PANEL, static_cast<bool>(true));
301 intmap.insert(WB_MAINWINDOW_MAXIMIZED, static_cast<int>(true));
302 intmap.insert(WB_MAINWINDOW_HIDE, static_cast<int>(false));
303 intmap.insert(WB_MAINWINDOW_REMEMBER, static_cast<int>(false));
304 intmap.insert(WB_MAINWINDOW_USE_M_TABBAR, static_cast<int>(true));
305 intmap.insert(WB_MAINWINDOW_USE_SIDEBAR, static_cast<int>(true));
306 intmap.insert(WB_SEARCHFILTER_NOFREE, static_cast<int>(false));
307 intmap.insert(WB_SEARCH_DONTHIDEPANEL, static_cast<int>(false));
308 intmap.insert(WB_ANTISPAM_ENABLED, static_cast<int>(false));
309 intmap.insert(WB_ANTISPAM_AS_FILTER, static_cast<int>(false));
310 intmap.insert(WB_ANTISPAM_FILTER_OPS, static_cast<int>(false));
311 intmap.insert(WB_IPFILTER_ENABLED, static_cast<int>(false));
312 intmap.insert(WB_TRAY_ENABLED, static_cast<int>(true));
313 intmap.insert(WB_EXIT_CONFIRM, static_cast<int>(false));
314 intmap.insert(WB_SHOW_IP_IN_CHAT, static_cast<int>(false));
315 intmap.insert(WB_SHOW_HIDDEN_USERS, static_cast<int>(false));
316 intmap.insert(WB_SHOW_JOINS, static_cast<int>(false));
317 intmap.insert(WB_NOTIFY_ENABLED, static_cast<int>(true));
318 intmap.insert(WB_NOTIFY_SND_ENABLED, static_cast<int>(false));
319 intmap.insert(WB_NOTIFY_SND_EXTERNAL, static_cast<int>(false));
320 intmap.insert(WB_NOTIFY_CH_ICON_ALWAYS, static_cast<int>(false));
321 intmap.insert(WB_NOTIFY_SHOW_ON_ACTIVE, static_cast<int>(false));
322 intmap.insert(WB_NOTIFY_SHOW_ON_VISIBLE, static_cast<int>(false));
323 intmap.insert(WB_FAVUSERS_AUTOGRANT, static_cast<int>(true));
324 intmap.insert(WB_APP_ENABLE_EMOTICON, static_cast<int>(true));
325 intmap.insert(WB_APP_FORCE_EMOTICONS, static_cast<int>(false));
326 intmap.insert(WB_APP_ENABLE_ASPELL, static_cast<int>(true));
327 intmap.insert(WB_APP_REMOVE_NOT_EX_DIRS,static_cast<int>(false));
328 intmap.insert(WB_APP_AUTO_AWAY, static_cast<int>(false));
329 intmap.insert(WB_APP_TBAR_SHOW_CL_BTNS, static_cast<int>(true));
330 intmap.insert(WB_WIDGETS_PANEL_VISIBLE, static_cast<int>(true));
331 intmap.insert(WB_TOOLS_PANEL_VISIBLE, static_cast<int>(true));
332 intmap.insert(WB_SEARCH_PANEL_VISIBLE, static_cast<int>(false));
333 intmap.insert(WB_MAIN_MENU_VISIBLE, static_cast<int>(true));
334 intmap.insert(WB_USE_CTRL_ENTER, static_cast<int>(false));
335 intmap.insert(WB_SIMPLE_SHARE_MODE, static_cast<int>(false));
336 intmap.insert(WI_APP_UNIT_BASE, 1024);
337 intmap.insert(WI_APP_AUTOAWAY_INTERVAL, 60);
338 intmap.insert(WI_APP_SHARED_FILES_ALPHA, 127);
339 intmap.insert(WI_CHAT_MAXPARAGRAPHS, 1000);
340 intmap.insert(WI_DEF_MAGNET_ACTION, 0);
341 intmap.insert(WI_CHAT_WIDTH, -1);
342 intmap.insert(WI_CHAT_USERLIST_WIDTH, -1);
343 intmap.insert(WI_CHAT_SORT_COLUMN, 0);
344 intmap.insert(WI_CHAT_SORT_ORDER, 0);
345 intmap.insert(WI_CHAT_DBLCLICK_ACT, 0);//nick in chat
346 intmap.insert(WI_CHAT_MDLCLICK_ACT, 1);//browse files
347 intmap.insert(WI_CHAT_FIND_COLOR_ALPHA, 127);
348 intmap.insert(WI_CHAT_STATUS_HISTORY_SZ,5);
349 intmap.insert(WI_CHAT_STATUS_MSG_MAX_LEN, 128);
350 intmap.insert(WI_STATUSBAR_HISTORY_SZ, 5);
351 intmap.insert(WI_MAINWINDOW_HEIGHT, -1);
352 intmap.insert(WI_MAINWINDOW_WIDTH, -1);
353 intmap.insert(WI_MAINWINDOW_X, -1);
354 intmap.insert(WI_MAINWINDOW_Y, -1);
355 intmap.insert(WI_SEARCH_SORT_COLUMN, 1);
356 intmap.insert(WI_SEARCH_SORT_ORDER, 0);
357 intmap.insert(WI_SEARCH_SHARED_ACTION, 0);
358 intmap.insert(WI_SEARCH_LAST_TYPE, 0);
359 intmap.insert(WI_TRANSFER_HEIGHT, -1);
360 intmap.insert(WI_SHARE_RPANE_WIDTH, -1);
361 intmap.insert(WI_SHARE_WIDTH, -1);
362 intmap.insert(WI_NOTIFY_EVENTMAP, 0x0B);// 0b00001011, (transfer done = off)
363 intmap.insert(WI_NOTIFY_MODULE, 1);//default
364 intmap.insert(WI_NOTIFY_SNDMAP, 0x0F);// 0b00001111, all events
365 intmap.insert(WI_OUT_IN_HIST, 50);//number of output messages in history
366 }
367
368 if (!QFile::exists(configFileOld))
369 return;
370
371 try{
372 SimpleXML xml;
373 xml.fromXML(File(configFileOld.toStdString(), File::READ, File::OPEN).read());
374 xml.resetCurrentChild();
375 xml.stepIn();
376
377 if (xml.findChild("Settings")){
378
379 xml.stepIn();
380
381 auto it = strmap.begin();
382
383 for (; it != strmap.end(); ++it){
384 if (xml.findChild(it.key().toStdString()))
385 strmap.insert(it.key(), QString::fromStdString(xml.getChildData()));
386
387 xml.resetCurrentChild();
388 }
389
390 auto iit = intmap.begin();
391
392 for (; iit != intmap.end(); ++iit){
393 if (xml.findChild(iit.key().toStdString()))
394 intmap.insert(iit.key(), Util::toInt(xml.getChildData()));
395
396 xml.resetCurrentChild();
397 }
398 }
399 }
400 catch (Exception &ex){}
401 }
402
save()403 void WulforSettings::save(){
404 //Do nothing
405 }
406
parseCmd(const QString & cmd,QString & res)407 void WulforSettings::parseCmd(const QString &cmd, QString& res) {
408 QStringList args = cmd.split(" ", QString::SkipEmptyParts);
409
410 if (args.size() == 1) {
411 res = tr("Gui setting %1: %2").arg(args.at(0)).arg(getStr(args.at(0)));
412 return;
413 } else if (args.size() > 2)
414 return;
415
416 QString sname = args.at(0);
417 QString svalue = args.at(1);
418
419 setStr(sname, svalue);
420 res = tr("Change gui setting %1 to %2").arg(sname).arg(svalue);
421 }
422
loadTranslation()423 void WulforSettings::loadTranslation(){
424 QString file = getStr(WS_TRANSLATION_FILE);
425
426 if (file.isEmpty() || !QFile::exists(file)){
427 QString lc_prefix = QLocale::system().name();
428
429 #if !defined(Q_WS_WIN)
430 file = QString(CLIENT_TRANSLATIONS_DIR) + QDir::separator();
431 #else
432 file = qApp->applicationDirPath()+QDir::separator()+QString(CLIENT_TRANSLATIONS_DIR)+QDir::separator();
433 #endif
434 lc_prefix = lc_prefix.left(lc_prefix.indexOf("_"));
435 file += lc_prefix + ".qm";
436
437 if (!QFile::exists(file))
438 return;
439 }
440 else if (!file.isEmpty() && (file.size() >= 5) && QFile::exists(file)){
441 QString lc_prefix = file.mid(file.size()-5, 2);
442 dcpp::Util::setLang(lc_prefix.toStdString());
443 #ifdef _DEBUG_MODEL_
444 qDebug() << QString("LANGUAGE=%1").arg(lc_prefix);
445 #endif
446 }
447
448 if (tor.load(file))
449 qApp->installTranslator(&tor);
450 else
451 WSSET(WS_TRANSLATION_FILE, "");
452 }
453
loadTheme()454 void WulforSettings::loadTheme(){
455 if (!getStr(WS_APP_THEME).isEmpty())
456 qApp->setStyle(getStr(WS_APP_THEME));
457
458 if (!getStr(WS_APP_FONT).isEmpty() && f.fromString(getStr(WS_APP_FONT)))
459 qApp->setFont(f);
460 }
461
getStr(const QString & key,const QString & default_value)462 QString WulforSettings::getStr(const QString & key, const QString &default_value) {
463 return settings.value(key, default_value).toString();
464 }
465
getInt(const QString & key,const int & default_value)466 int WulforSettings::getInt(const QString & key, const int &default_value) {
467 return settings.value(key, default_value).toInt();
468 }
469
getBool(const QString & key,const bool & default_value)470 bool WulforSettings::getBool(const QString & key, const bool &default_value) {
471 return (static_cast<bool>(getInt(key, default_value)));
472 }
473
getVar(const QString & key,const QVariant & default_value)474 QVariant WulforSettings::getVar(const QString &key, const QVariant &default_value){
475 return settings.value(key, default_value);
476 }
477
setStr(const QString & key,const QString & value)478 void WulforSettings::setStr(const QString & key, const QString &value) {
479 settings.setValue(key, value);
480
481 emit strValueChanged(key, value);
482 }
483
setInt(const QString & key,int value)484 void WulforSettings::setInt(const QString & key, int value) {
485 settings.setValue(key, value);
486
487 emit intValueChanged(key, value);
488 }
489
setBool(const QString & key,bool value)490 void WulforSettings::setBool(const QString & key, bool value) {
491 setInt(key, static_cast<int>(value));
492 }
493
setVar(const QString & key,const QVariant & value)494 void WulforSettings::setVar(const QString &key, const QVariant &value){
495 settings.setValue(key, value);
496
497 emit varValueChanged(key, value);
498 }
499
slotFontChanged(const QString & key,const QString & value)500 void WulforSettings::slotFontChanged(const QString &key, const QString &value){
501 if (key == WS_APP_FONT){
502 QFont f;
503
504 if (f.fromString(value))
505 qApp->setFont(f);
506 }
507 }
508