1 /************************************************************************
2 **
3 ** Copyright (C) 2016-2020 Kevin B. Hendricks, Stratford, ON
4 ** Copyright (C) 2016-2020 Doug Massay
5 ** Copyright (C) 2011-2013 John Schember <john@nachtimwald.com>
6 ** Copyright (C) 2012-2013 Dave Heiland
7 **
8 ** This file is part of Sigil.
9 **
10 ** Sigil is free software: you can redistribute it and/or modify
11 ** it under the terms of the GNU General Public License as published by
12 ** the Free Software Foundation, either version 3 of the License, or
13 ** (at your option) any later version.
14 **
15 ** Sigil is distributed in the hope that it will be useful,
16 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ** GNU General Public License for more details.
19 **
20 ** You should have received a copy of the GNU General Public License
21 ** along with Sigil. If not, see <http://www.gnu.org/licenses/>.
22 **
23 *************************************************************************/
24
25 #include <QtCore/QLocale>
26 #include <QtCore/QCoreApplication>
27 #include <QPalette>
28 #include <QFile>
29 #include <QDir>
30
31 #include "Misc/SettingsStore.h"
32 #include "Misc/PluginDB.h"
33 #include "Misc/Utility.h"
34
35 #include "sigil_constants.h"
36
37 static QString SETTINGS_GROUP = "user_preferences";
38 static QString KEY_DEFAULT_METADATA_LANGUAGE = SETTINGS_GROUP + "/" + "default_metadata_lang";
39 static QString KEY_UI_LANGUAGE = SETTINGS_GROUP + "/" + "ui_language";
40 static QString KEY_UI_FONT = SETTINGS_GROUP + "/" + "ui_font";
41 static QString KEY_ORIGINAL_UI_FONT = SETTINGS_GROUP + "/" + "original_ui_font";
42 static QString KEY_UI_ICON_THEME = SETTINGS_GROUP + "/" + "ui_icon_theme";
43 static QString KEY_DRAG_DISTANCE_TWEAK = SETTINGS_GROUP + "/" + "drag_distance_tweak";
44 static QString KEY_ZOOM_IMAGE = SETTINGS_GROUP + "/" + "zoom_image";
45 static QString KEY_ZOOM_TEXT = SETTINGS_GROUP + "/" + "zoom_text";
46 static QString KEY_ZOOM_WEB = SETTINGS_GROUP + "/" + "zoom_web";
47 static QString KEY_ZOOM_PREVIEW = SETTINGS_GROUP + "/" + "zoom_preview";
48 static QString KEY_ZOOM_INSPECTOR = SETTINGS_GROUP + "/" + "zoom_inspector";
49 static QString KEY_RENAME_TEMPLATE = SETTINGS_GROUP + "/" + "rename_template";
50 static QString KEY_DICTIONARY_NAME = SETTINGS_GROUP + "/" + "dictionary_name";
51 static QString KEY_SECONDARY_DICTIONARY_NAME = SETTINGS_GROUP + "/" + "secondary_dictionary_name";
52 static QString KEY_SPELL_CHECK = SETTINGS_GROUP + "/" + "spell_check";
53 static QString KEY_SPELL_CHECK_NUMBERS = SETTINGS_GROUP + "/" + "spell_check_numbers";
54 static QString KEY_DEFAULT_USER_DICTIONARY = SETTINGS_GROUP + "/" + "user_dictionary_name";
55 static QString KEY_ENABLED_USER_DICTIONARIES = SETTINGS_GROUP + "/" + "enabled_user_dictionaries";
56 static QString KEY_PLUGIN_USER_MAP = SETTINGS_GROUP + "/" + "plugin_user_map";
57 static QString KEY_CLEAN_ON = SETTINGS_GROUP + "/" + "clean_on";
58 static QString KEY_REMOTE_ON = SETTINGS_GROUP + "/" + "remote_on";
59 static QString KEY_JAVASCRIPT_ON = SETTINGS_GROUP + "/" + "javascript_on";
60 static QString KEY_SHOWFULLPATH_ON = SETTINGS_GROUP + "/" + "showfullpath_on";
61 static QString KEY_HIGHDPI_SETTING = SETTINGS_GROUP + "/" + "high_dpi";
62 static QString KEY_PREVIEW_DARK_IN_DM = SETTINGS_GROUP + "/" + "preview_dark_in_dm";
63 static QString KEY_DEFAULT_VERSION = SETTINGS_GROUP + "/" + "default_version";
64 static QString KEY_PRESERVE_ENTITY_NAMES = SETTINGS_GROUP + "/" + "preserve_entity_names";
65 static QString KEY_PRESERVE_ENTITY_CODES = SETTINGS_GROUP + "/" + "preserve_entity_codes";
66 static QString KEY_EXTERNAL_XHTML_EDITOR = SETTINGS_GROUP + "/" + "external_xhtml_editor";
67 static QString KEY_ENABLE_ALTGR = SETTINGS_GROUP + "/" + "enable_altgr";
68
69 static QString KEY_PLUGIN_INFO = SETTINGS_GROUP + "/" + "plugin_info";
70 static QString KEY_PLUGIN_ENGINE_PATHS = SETTINGS_GROUP + "/" + "plugin_engine_paths";
71 static QString KEY_PLUGIN_LAST_FOLDER = SETTINGS_GROUP + "/" + "plugin_add_last_folder";
72 static QString KEY_PLUGIN_USE_BUNDLED_INTERP = SETTINGS_GROUP + "/" + "plugin_use_bundled_interp";
73
74 static QString KEY_CSS_EPUB2_VALIDATION_SPEC = SETTINGS_GROUP + "/" + "css_epub2_validation_spec";
75 static QString KEY_CSS_EPUB3_VALIDATION_SPEC = SETTINGS_GROUP + "/" + "css_epub3_validation_spec";
76
77 static QString KEY_TEMP_FOLDER = SETTINGS_GROUP + "/" + "temp_folder_path";
78
79 static QString KEY_APPEARANCE_PREFS_TAB_INDEX = SETTINGS_GROUP + "/" + "appearance_prefs_tab_index";
80 static QString KEY_PREVIEW_FONT_FAMILY_STANDARD = SETTINGS_GROUP + "/" + "preview_font_family_standard";
81 static QString KEY_PREVIEW_FONT_FAMILY_SERIF = SETTINGS_GROUP + "/" + "preview_font_family_serif";
82 static QString KEY_PREVIEW_FONT_FAMILY_SANS_SERIF = SETTINGS_GROUP + "/" + "preview_font_family_sans_serif";
83 static QString KEY_PREVIEW_FONT_SIZE = SETTINGS_GROUP + "/" + "preview_font_size";
84
85 static QString KEY_CODE_VIEW_CSS_COMMENT_COLOR = SETTINGS_GROUP + "/" + "code_view_css_comment_color";
86 static QString KEY_CODE_VIEW_CSS_PROPERTY_COLOR = SETTINGS_GROUP + "/" + "code_view_css_property_color";
87 static QString KEY_CODE_VIEW_CSS_QUOTE_COLOR = SETTINGS_GROUP + "/" + "code_view_css_quote_color";
88 static QString KEY_CODE_VIEW_CSS_SELECTOR_COLOR = SETTINGS_GROUP + "/" + "code_view_css_selector_color";
89 static QString KEY_CODE_VIEW_CSS_VALUE_COLOR = SETTINGS_GROUP + "/" + "code_view_css_value_color";
90 static QString KEY_CODE_VIEW_FONT_FAMILY = SETTINGS_GROUP + "/" + "code_view_font_family_standard";
91 static QString KEY_CODE_VIEW_FONT_SIZE = SETTINGS_GROUP + "/" + "code_view_font_size";
92 static QString KEY_CODE_VIEW_LINE_HIGHLIGHT_COLOR = SETTINGS_GROUP + "/" + "code_view_line_highlight_color";
93 static QString KEY_CODE_VIEW_LINE_NUMBER_BACKGROUND_COLOR = SETTINGS_GROUP + "/" + "code_view_line_number_background_color";
94 static QString KEY_CODE_VIEW_LINE_NUMBER_FOREGROUND_COLOR = SETTINGS_GROUP + "/" + "code_view_line_number_foreground_color";
95 static QString KEY_CODE_VIEW_SPELLING_UNDERLINE_COLOR = SETTINGS_GROUP + "/" + "code_view_spelling_underline_color";
96 static QString KEY_CODE_VIEW_XHTML_ATTRIBUTE_NAME_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_attribute_name_color";
97 static QString KEY_CODE_VIEW_XHTML_ATTRIBUTE_VALUE_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_attribute_value_color";
98 static QString KEY_CODE_VIEW_XHTML_CSS_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_css_color";
99 static QString KEY_CODE_VIEW_XHTML_CSS_COMMENT_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_css_comment_color";
100 static QString KEY_CODE_VIEW_XHTML_DOCTYPE_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_doctype_color";
101 static QString KEY_CODE_VIEW_XHTML_ENTITY_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_entity_color";
102 static QString KEY_CODE_VIEW_XHTML_HTML_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_html_color";
103 static QString KEY_CODE_VIEW_XHTML_HTML_COMMENT_COLOR = SETTINGS_GROUP + "/" + "code_view_xhtml_html_comment_color";
104
105 static QString KEY_CODE_VIEW_HIGHLIGHT_OPEN_CLOSE_TAGS = SETTINGS_GROUP + "/" + "code_view_highlight_open_close_tags";
106
107 // Dark Appearance
108 static QString KEY_CV_DARK_CSS_COMMENT_COLOR = SETTINGS_GROUP + "/" + "cv_dark_css_comment_color";
109 static QString KEY_CV_DARK_CSS_PROPERTY_COLOR = SETTINGS_GROUP + "/" + "cv_dark_css_property_color";
110 static QString KEY_CV_DARK_CSS_QUOTE_COLOR = SETTINGS_GROUP + "/" + "cv_dark_css_quote_color";
111 static QString KEY_CV_DARK_CSS_SELECTOR_COLOR = SETTINGS_GROUP + "/" + "cv_dark_css_selector_color";
112 static QString KEY_CV_DARK_CSS_VALUE_COLOR = SETTINGS_GROUP + "/" + "cv_dark_css_value_color";
113 static QString KEY_CV_DARK_FONT_FAMILY = SETTINGS_GROUP + "/" + "cv_dark_font_family_standard";
114 static QString KEY_CV_DARK_FONT_SIZE = SETTINGS_GROUP + "/" + "cv_dark_font_size";
115 static QString KEY_CV_DARK_LINE_HIGHLIGHT_COLOR = SETTINGS_GROUP + "/" + "cv_dark_line_highlight_color";
116 static QString KEY_CV_DARK_LINE_NUMBER_BACKGROUND_COLOR = SETTINGS_GROUP + "/" + "cv_dark_line_number_background_color";
117 static QString KEY_CV_DARK_LINE_NUMBER_FOREGROUND_COLOR = SETTINGS_GROUP + "/" + "cv_dark_line_number_foreground_color";
118 static QString KEY_CV_DARK_SPELLING_UNDERLINE_COLOR = SETTINGS_GROUP + "/" + "cv_dark_spelling_underline_color";
119 static QString KEY_CV_DARK_XHTML_ATTRIBUTE_NAME_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_attribute_name_color";
120 static QString KEY_CV_DARK_XHTML_ATTRIBUTE_VALUE_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_attribute_value_color";
121 static QString KEY_CV_DARK_XHTML_CSS_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_css_color";
122 static QString KEY_CV_DARK_XHTML_CSS_COMMENT_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_css_comment_color";
123 static QString KEY_CV_DARK_XHTML_DOCTYPE_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_doctype_color";
124 static QString KEY_CV_DARK_XHTML_ENTITY_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_entity_color";
125 static QString KEY_CV_DARK_XHTML_HTML_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_html_color";
126 static QString KEY_CV_DARK_XHTML_HTML_COMMENT_COLOR = SETTINGS_GROUP + "/" + "cv_dark_xhtml_html_comment_color";
127 // End Dark appearance
128
129 static QString KEY_SPECIAL_CHARACTER_FONT_FAMILY = SETTINGS_GROUP + "/" + "special_character_font_family";
130 static QString KEY_SPECIAL_CHARACTER_FONT_SIZE = SETTINGS_GROUP + "/" + "special_character_font_size";
131 static QString KEY_MAIN_MENU_ICON_SIZE = SETTINGS_GROUP + "/" + "main_menu_icon_size";
132 static QString KEY_CLIPBOARD_HISTORY_LIMIT = SETTINGS_GROUP + "/" + "clipboard_history_limit";
133
SettingsStore()134 SettingsStore::SettingsStore()
135 : QSettings(Utility::DefinePrefsDir() + "/sigil.ini", QSettings::IniFormat)
136 {
137 // See QTBUG-40796 and QTBUG-54510 as using UTF-8 as a codec for ini files is very broken
138 // setIniCodec("UTF-8");
139 }
140
SettingsStore(QString filename)141 SettingsStore::SettingsStore(QString filename)
142 : QSettings(filename, QSettings::IniFormat)
143 {
144 // See QTBUG-40796 and QTBUG-54510 as using UTF-8 as a codec for ini files is very broken
145 // setIniCodec("UTF-8");
146 }
147
uiLanguage()148 QString SettingsStore::uiLanguage()
149 {
150 clearSettingsGroup();
151 return value(KEY_UI_LANGUAGE, QLocale::system().name()).toString();
152 }
153
uiFont()154 QString SettingsStore::uiFont()
155 {
156 clearSettingsGroup();
157 return value(KEY_UI_FONT, "").toString();
158 }
159
originalUIFont()160 QString SettingsStore::originalUIFont()
161 {
162 clearSettingsGroup();
163 return value(KEY_ORIGINAL_UI_FONT, "").toString();
164 }
165
uiIconTheme()166 QString SettingsStore::uiIconTheme()
167 {
168 clearSettingsGroup();
169 return value(KEY_UI_ICON_THEME, "main").toString();
170 }
171
uiDragDistanceTweak()172 int SettingsStore::uiDragDistanceTweak()
173 {
174 clearSettingsGroup();
175 return value(KEY_DRAG_DISTANCE_TWEAK, 0).toInt();
176 }
177
defaultMetadataLang()178 QString SettingsStore::defaultMetadataLang()
179 {
180 clearSettingsGroup();
181 return value(KEY_DEFAULT_METADATA_LANGUAGE, "en").toString();
182 }
183
externalXEditorPath()184 QString SettingsStore::externalXEditorPath()
185 {
186 clearSettingsGroup();
187 return value(KEY_EXTERNAL_XHTML_EDITOR, "").toString();
188 }
189
zoomImage()190 float SettingsStore::zoomImage()
191 {
192 clearSettingsGroup();
193 return value(KEY_ZOOM_IMAGE, ZOOM_NORMAL).toFloat();;
194 }
195
zoomText()196 float SettingsStore::zoomText()
197 {
198 clearSettingsGroup();
199 return value(KEY_ZOOM_TEXT, ZOOM_NORMAL).toFloat();
200 }
201
zoomWeb()202 float SettingsStore::zoomWeb()
203 {
204 clearSettingsGroup();
205 return value(KEY_ZOOM_WEB, ZOOM_NORMAL).toFloat();
206 }
207
zoomPreview()208 float SettingsStore::zoomPreview()
209 {
210 clearSettingsGroup();
211 return value(KEY_ZOOM_PREVIEW, ZOOM_NORMAL).toFloat();
212 }
213
zoomInspector()214 float SettingsStore::zoomInspector()
215 {
216 clearSettingsGroup();
217 return value(KEY_ZOOM_INSPECTOR, ZOOM_NORMAL).toFloat();
218 }
219
dictionary()220 QString SettingsStore::dictionary()
221 {
222 clearSettingsGroup();
223 return value(KEY_DICTIONARY_NAME, "en_US").toString();
224 }
225
secondary_dictionary()226 QString SettingsStore::secondary_dictionary()
227 {
228 clearSettingsGroup();
229 return value(KEY_SECONDARY_DICTIONARY_NAME, "").toString();
230 }
231
enabledUserDictionaries()232 QStringList SettingsStore::enabledUserDictionaries()
233 {
234 clearSettingsGroup();
235 return value(KEY_ENABLED_USER_DICTIONARIES, defaultUserDictionary()).toStringList();
236 }
237
spellCheck()238 bool SettingsStore::spellCheck()
239 {
240 clearSettingsGroup();
241 return static_cast<bool>(value(KEY_SPELL_CHECK, false).toBool());
242 }
243
spellCheckNumbers()244 bool SettingsStore::spellCheckNumbers()
245 {
246 clearSettingsGroup();
247 return static_cast<bool>(value(KEY_SPELL_CHECK_NUMBERS, false).toBool());
248 }
249
defaultUserDictionary()250 QString SettingsStore::defaultUserDictionary()
251 {
252 clearSettingsGroup();
253 return value(KEY_DEFAULT_USER_DICTIONARY, "default").toString();
254 }
255
renameTemplate()256 QString SettingsStore::renameTemplate()
257 {
258 clearSettingsGroup();
259 return value(KEY_RENAME_TEMPLATE, "").toString();
260 }
261
remoteOn()262 int SettingsStore::remoteOn()
263 {
264 clearSettingsGroup();
265 return value(KEY_REMOTE_ON, 0).toInt();
266 }
267
javascriptOn()268 int SettingsStore::javascriptOn()
269 {
270 clearSettingsGroup();
271 return value(KEY_JAVASCRIPT_ON, 0).toInt();
272 }
273
showFullPathOn()274 int SettingsStore::showFullPathOn()
275 {
276 clearSettingsGroup();
277 return value(KEY_SHOWFULLPATH_ON, 0).toInt();
278 }
279
highDPI()280 int SettingsStore::highDPI()
281 {
282 clearSettingsGroup();
283 return value(KEY_HIGHDPI_SETTING, 0).toInt();
284 }
285
previewDark()286 int SettingsStore::previewDark()
287 {
288 clearSettingsGroup();
289 return value(KEY_PREVIEW_DARK_IN_DM, 1).toInt();
290 }
291
cleanOn()292 int SettingsStore::cleanOn()
293 {
294 clearSettingsGroup();
295 return value(KEY_CLEAN_ON, (CLEANON_OPEN | CLEANON_SAVE)).toInt();
296 }
297
pluginMap()298 QStringList SettingsStore::pluginMap()
299 {
300 clearSettingsGroup();
301 QStringList EmptyMap = QStringList();
302 for (int i = 0; i < 10; i++) {
303 EmptyMap.append("");
304 }
305 return value(KEY_PLUGIN_USER_MAP, EmptyMap).toStringList();
306 }
307
defaultVersion()308 QString SettingsStore::defaultVersion()
309 {
310 clearSettingsGroup();
311 return value(KEY_DEFAULT_VERSION, "2.0").toString();
312 }
313
preserveEntityCodeNames()314 QList <std::pair <ushort, QString>> SettingsStore::preserveEntityCodeNames()
315 {
316 clearSettingsGroup();
317 QList <std::pair <ushort, QString>> codenames;
318 QStringList names = value(KEY_PRESERVE_ENTITY_NAMES, " ").toStringList();
319 QString codes = value(KEY_PRESERVE_ENTITY_CODES, QChar(160)).toString();
320 int i = 0;
321 foreach(QString name, names) {
322 std::pair <ushort, QString> epair;
323 epair.first = (ushort) codes.at(i++).unicode();
324 epair.second = name;
325 codenames.append(epair);
326 }
327 return codenames;
328 }
329
pluginEnginePaths()330 QHash <QString, QString> SettingsStore::pluginEnginePaths()
331 {
332 QHash <QString, QVariant> ep;
333 QHash <QString, QString> enginepath;
334
335 clearSettingsGroup();
336
337 ep = value(KEY_PLUGIN_ENGINE_PATHS).toHash();
338 foreach (QString k, ep.keys()) {
339 enginepath.insert(k, ep.value(k).toString());
340 }
341
342 return enginepath;
343 }
344
pluginLastFolder()345 QString SettingsStore::pluginLastFolder()
346 {
347 clearSettingsGroup();
348 return value(KEY_PLUGIN_LAST_FOLDER, QDir::homePath()).toString();
349 }
350
useBundledInterp()351 bool SettingsStore::useBundledInterp()
352 {
353 clearSettingsGroup();
354 // Defaults to true.
355 return static_cast<bool>(value(KEY_PLUGIN_USE_BUNDLED_INTERP, true).toBool());
356 }
357
cssEpub2ValidationSpec()358 QString SettingsStore::cssEpub2ValidationSpec()
359 {
360 clearSettingsGroup();
361 return value(KEY_CSS_EPUB2_VALIDATION_SPEC, "css21").toString();
362 }
363
cssEpub3ValidationSpec()364 QString SettingsStore::cssEpub3ValidationSpec()
365 {
366 clearSettingsGroup();
367 return value(KEY_CSS_EPUB3_VALIDATION_SPEC, "css30").toString();
368 }
369
tempFolderHome()370 QString SettingsStore::tempFolderHome()
371 {
372 clearSettingsGroup();
373 QString temp_path = value(KEY_TEMP_FOLDER, "<SIGIL_DEFAULT_TEMP_HOME>").toString();
374 if (temp_path != "<SIGIL_DEFAULT_TEMP_HOME>") {
375 QDir tdir = QDir(temp_path);
376 if ( !tdir.exists() || !tdir.isReadable()) {
377 temp_path = "<SIGIL_DEFAULT_TEMP_HOME>";
378 }
379 }
380 return temp_path;
381 }
382
appearancePrefsTabIndex()383 int SettingsStore::appearancePrefsTabIndex() {
384 clearSettingsGroup();
385 return value(KEY_APPEARANCE_PREFS_TAB_INDEX, 0).toInt();
386 }
387
previewAppearance()388 SettingsStore::PreviewAppearance SettingsStore::previewAppearance()
389 {
390 clearSettingsGroup();
391 SettingsStore::PreviewAppearance appearance;
392 appearance.font_family_standard = value(KEY_PREVIEW_FONT_FAMILY_STANDARD, "Arial").toString();
393 appearance.font_family_serif = value(KEY_PREVIEW_FONT_FAMILY_SERIF, "Times New Roman").toString();
394 appearance.font_family_sans_serif = value(KEY_PREVIEW_FONT_FAMILY_SANS_SERIF, "Arial").toString();
395 appearance.font_size = value(KEY_PREVIEW_FONT_SIZE, 16).toInt();
396 return appearance;
397 }
398
codeViewAppearance()399 SettingsStore::CodeViewAppearance SettingsStore::codeViewAppearance()
400 {
401 clearSettingsGroup();
402 SettingsStore::CodeViewAppearance appearance;
403 appearance.css_comment_color = value(KEY_CODE_VIEW_CSS_COMMENT_COLOR, QColor(Qt::darkGreen)).value<QColor>();
404 appearance.css_property_color = value(KEY_CODE_VIEW_CSS_PROPERTY_COLOR, QColor(Qt::darkBlue)).value<QColor>();
405 appearance.css_quote_color = value(KEY_CODE_VIEW_CSS_QUOTE_COLOR, QColor(Qt::darkMagenta)).value<QColor>();
406 appearance.css_selector_color = value(KEY_CODE_VIEW_CSS_SELECTOR_COLOR, QColor(Qt::darkRed)).value<QColor>();
407 appearance.css_value_color = value(KEY_CODE_VIEW_CSS_VALUE_COLOR, QColor(Qt::black)).value<QColor>();
408 appearance.font_family = value(KEY_CODE_VIEW_FONT_FAMILY, "Courier New").toString();
409 appearance.font_size = value(KEY_CODE_VIEW_FONT_SIZE, 10).toInt();
410 QColor defaultlineColor = QColor(Qt::yellow).lighter(175);
411 appearance.line_highlight_color = value(KEY_CODE_VIEW_LINE_HIGHLIGHT_COLOR, defaultlineColor).value<QColor>();
412 appearance.line_number_background_color = value(KEY_CODE_VIEW_LINE_NUMBER_BACKGROUND_COLOR, QColor(225, 225, 225)).value<QColor>();
413 appearance.line_number_foreground_color = value(KEY_CODE_VIEW_LINE_NUMBER_FOREGROUND_COLOR, QColor(125, 125, 125)).value<QColor>();
414 appearance.spelling_underline_color = value(KEY_CODE_VIEW_SPELLING_UNDERLINE_COLOR, QColor(Qt::red)).value<QColor>();
415 appearance.xhtml_attribute_name_color = value(KEY_CODE_VIEW_XHTML_ATTRIBUTE_NAME_COLOR, QColor(Qt::darkRed)).value<QColor>();
416 appearance.xhtml_attribute_value_color = value(KEY_CODE_VIEW_XHTML_ATTRIBUTE_VALUE_COLOR, QColor(Qt::darkCyan)).value<QColor>();
417 appearance.xhtml_css_color = value(KEY_CODE_VIEW_XHTML_CSS_COLOR, QColor(Qt::darkYellow)).value<QColor>();
418 appearance.xhtml_css_comment_color = value(KEY_CODE_VIEW_XHTML_CSS_COMMENT_COLOR, QColor(Qt::darkGreen)).value<QColor>();
419 appearance.xhtml_doctype_color = value(KEY_CODE_VIEW_XHTML_DOCTYPE_COLOR, QColor(Qt::darkBlue)).value<QColor>();
420 appearance.xhtml_entity_color = value(KEY_CODE_VIEW_XHTML_ENTITY_COLOR, QColor(Qt::darkMagenta)).value<QColor>();
421 appearance.xhtml_html_color = value(KEY_CODE_VIEW_XHTML_HTML_COLOR, QColor(Qt::blue)).value<QColor>();
422 appearance.xhtml_html_comment_color = value(KEY_CODE_VIEW_XHTML_HTML_COMMENT_COLOR, QColor(Qt::darkGreen)).value<QColor>();
423 return appearance;
424 }
425
highlightOpenCloseTags()426 bool SettingsStore::highlightOpenCloseTags()
427 {
428 clearSettingsGroup();
429 return static_cast<bool>(value(KEY_CODE_VIEW_HIGHLIGHT_OPEN_CLOSE_TAGS, true).toBool());
430 }
431
codeViewDarkAppearance()432 SettingsStore::CodeViewAppearance SettingsStore::codeViewDarkAppearance()
433 {
434 clearSettingsGroup();
435 SettingsStore::CodeViewAppearance appearance;
436 appearance.css_comment_color = value(KEY_CV_DARK_CSS_COMMENT_COLOR, QColor(112, 109, 91)).value<QColor>();
437 appearance.css_property_color = value(KEY_CV_DARK_CSS_PROPERTY_COLOR, QColor(159, 194, 138)).value<QColor>();
438 appearance.css_quote_color = value(KEY_CV_DARK_CSS_QUOTE_COLOR, QColor(235, 147, 154)).value<QColor>();
439 appearance.css_selector_color = value(KEY_CV_DARK_CSS_SELECTOR_COLOR, QColor(239, 239, 143)).value<QColor>();
440 appearance.css_value_color = value(KEY_CV_DARK_CSS_VALUE_COLOR, QColor(252, 255, 224)).value<QColor>();
441 appearance.font_family = value(KEY_CV_DARK_FONT_FAMILY, "Courier New").toString();
442 appearance.font_size = value(KEY_CV_DARK_FONT_SIZE, 10).toInt();
443 appearance.line_highlight_color = value(KEY_CV_DARK_LINE_HIGHLIGHT_COLOR, QColor(81, 81, 81)).value<QColor>();
444 appearance.line_number_background_color = value(KEY_CV_DARK_LINE_NUMBER_BACKGROUND_COLOR, QPalette().color(QPalette::AlternateBase)).value<QColor>();
445 appearance.line_number_foreground_color = value(KEY_CV_DARK_LINE_NUMBER_FOREGROUND_COLOR, QColor(229, 229, 229)).value<QColor>();
446 appearance.spelling_underline_color = value(KEY_CV_DARK_SPELLING_UNDERLINE_COLOR, QColor(255, 55, 55)).value<QColor>();
447 appearance.xhtml_attribute_name_color = value(KEY_CV_DARK_XHTML_ATTRIBUTE_NAME_COLOR, QColor(159, 194, 138)).value<QColor>();
448 appearance.xhtml_attribute_value_color = value(KEY_CV_DARK_XHTML_ATTRIBUTE_VALUE_COLOR, QColor(232, 145, 152)).value<QColor>();
449 appearance.xhtml_css_color = value(KEY_CV_DARK_XHTML_CSS_COLOR, QColor(128, 128, 0)).value<QColor>();
450 appearance.xhtml_css_comment_color = value(KEY_CV_DARK_XHTML_CSS_COMMENT_COLOR, QColor(112, 109, 91)).value<QColor>();
451 appearance.xhtml_doctype_color = value(KEY_CV_DARK_XHTML_DOCTYPE_COLOR, QColor(126, 252, 255)).value<QColor>();
452 appearance.xhtml_entity_color = value(KEY_CV_DARK_XHTML_ENTITY_COLOR, QColor(235, 255, 196)).value<QColor>();
453 appearance.xhtml_html_color = value(KEY_CV_DARK_XHTML_HTML_COLOR, QColor(239, 239, 143)).value<QColor>();
454 appearance.xhtml_html_comment_color = value(KEY_CV_DARK_XHTML_HTML_COMMENT_COLOR, QColor(112, 109, 91)).value<QColor>();
455 return appearance;
456 }
457
specialCharacterAppearance()458 SettingsStore::SpecialCharacterAppearance SettingsStore::specialCharacterAppearance()
459 {
460 clearSettingsGroup();
461 SettingsStore::SpecialCharacterAppearance appearance;
462 appearance.font_family = value(KEY_SPECIAL_CHARACTER_FONT_FAMILY, "Arial").toString();
463 appearance.font_size = value(KEY_SPECIAL_CHARACTER_FONT_SIZE, 14).toInt();
464 return appearance;
465 }
466
mainMenuIconSize()467 double SettingsStore::mainMenuIconSize()
468 {
469 clearSettingsGroup();
470 return value(KEY_MAIN_MENU_ICON_SIZE, 1.8).toDouble();
471 }
472
clipboardHistoryLimit()473 int SettingsStore::clipboardHistoryLimit()
474 {
475 clearSettingsGroup();
476 int tmpLimit = value(KEY_CLIPBOARD_HISTORY_LIMIT, CLIPBOARD_HISTORY_MAX).toInt();
477 // Ensure that any clipboard history limit gleaned from the ini file is between 0 and CLIPBOARD_HISTORY_MAX
478 return ((tmpLimit >= 0 && tmpLimit <= CLIPBOARD_HISTORY_MAX) ? tmpLimit : CLIPBOARD_HISTORY_MAX);
479 //return value(KEY_CLIPBOARD_HISTORY_LIMIT, CLIPBOARD_HISTORY_MAX).toInt();
480 }
481
enableAltGr()482 bool SettingsStore::enableAltGr()
483 {
484 clearSettingsGroup();
485 return static_cast<bool>(value(KEY_ENABLE_ALTGR, false).toBool());
486 }
487
setDefaultMetadataLang(const QString & lang)488 void SettingsStore::setDefaultMetadataLang(const QString &lang)
489 {
490 clearSettingsGroup();
491 setValue(KEY_DEFAULT_METADATA_LANGUAGE, lang);
492 }
493
setUILanguage(const QString & language_code)494 void SettingsStore::setUILanguage(const QString &language_code)
495 {
496 clearSettingsGroup();
497 setValue(KEY_UI_LANGUAGE, language_code);
498 }
499
setUIFont(const QString & font_data)500 void SettingsStore::setUIFont(const QString &font_data)
501 {
502 clearSettingsGroup();
503 setValue(KEY_UI_FONT, font_data);
504 }
505
setOriginalUIFont(const QString & font_data)506 void SettingsStore::setOriginalUIFont(const QString &font_data)
507 {
508 clearSettingsGroup();
509 setValue(KEY_ORIGINAL_UI_FONT, font_data);
510 }
511
setUIIconTheme(const QString & iconthemename)512 void SettingsStore::setUIIconTheme(const QString &iconthemename)
513 {
514 clearSettingsGroup();
515 setValue(KEY_UI_ICON_THEME, iconthemename);
516 }
517
setUiDragDistanceTweak(int tweak)518 void SettingsStore::setUiDragDistanceTweak(int tweak)
519 {
520 clearSettingsGroup();
521 setValue(KEY_DRAG_DISTANCE_TWEAK, tweak);
522 }
523
setExternalXEditorPath(const QString & path)524 void SettingsStore::setExternalXEditorPath(const QString &path)
525 {
526 clearSettingsGroup();
527 setValue(KEY_EXTERNAL_XHTML_EDITOR, path);
528 }
529
setZoomImage(float zoom)530 void SettingsStore::setZoomImage(float zoom)
531 {
532 clearSettingsGroup();
533 setValue(KEY_ZOOM_IMAGE, zoom);
534 }
535
setZoomText(float zoom)536 void SettingsStore::setZoomText(float zoom)
537 {
538 clearSettingsGroup();
539 setValue(KEY_ZOOM_TEXT, zoom);
540 }
541
setZoomWeb(float zoom)542 void SettingsStore::setZoomWeb(float zoom)
543 {
544 clearSettingsGroup();
545 setValue(KEY_ZOOM_WEB, zoom);
546 }
547
setZoomPreview(float zoom)548 void SettingsStore::setZoomPreview(float zoom)
549 {
550 clearSettingsGroup();
551 setValue(KEY_ZOOM_PREVIEW, zoom);
552 }
553
setZoomInspector(float zoom)554 void SettingsStore::setZoomInspector(float zoom)
555 {
556 clearSettingsGroup();
557 setValue(KEY_ZOOM_INSPECTOR, zoom);
558 }
559
setDictionary(const QString & name)560 void SettingsStore::setDictionary(const QString &name)
561 {
562 clearSettingsGroup();
563 setValue(KEY_DICTIONARY_NAME, name);
564 }
565
setSecondaryDictionary(const QString & name)566 void SettingsStore::setSecondaryDictionary(const QString &name)
567 {
568 clearSettingsGroup();
569 setValue(KEY_SECONDARY_DICTIONARY_NAME, name);
570 }
571
setEnabledUserDictionaries(const QStringList names)572 void SettingsStore::setEnabledUserDictionaries(const QStringList names)
573 {
574 clearSettingsGroup();
575 setValue(KEY_ENABLED_USER_DICTIONARIES, names);
576 }
577
setSpellCheck(bool enabled)578 void SettingsStore::setSpellCheck(bool enabled)
579 {
580 clearSettingsGroup();
581 setValue(KEY_SPELL_CHECK, enabled);
582 }
583
setSpellCheckNumbers(bool enabled)584 void SettingsStore::setSpellCheckNumbers(bool enabled)
585 {
586 clearSettingsGroup();
587 setValue(KEY_SPELL_CHECK_NUMBERS, enabled);
588 }
589
setDefaultUserDictionary(const QString & name)590 void SettingsStore::setDefaultUserDictionary(const QString &name)
591 {
592 clearSettingsGroup();
593 setValue(KEY_DEFAULT_USER_DICTIONARY, name);
594 }
595
setRenameTemplate(const QString & name)596 void SettingsStore::setRenameTemplate(const QString &name)
597 {
598 clearSettingsGroup();
599 setValue(KEY_RENAME_TEMPLATE, name);
600 }
601
setRemoteOn(int on)602 void SettingsStore::setRemoteOn(int on)
603 {
604 clearSettingsGroup();
605 setValue(KEY_REMOTE_ON, on);
606 }
607
setJavascriptOn(int on)608 void SettingsStore::setJavascriptOn(int on)
609 {
610 clearSettingsGroup();
611 setValue(KEY_JAVASCRIPT_ON, on);
612 }
613
setShowFullPathOn(int on)614 void SettingsStore::setShowFullPathOn(int on)
615 {
616 clearSettingsGroup();
617 setValue(KEY_SHOWFULLPATH_ON, on);
618 }
619
setHighDPI(int value)620 void SettingsStore::setHighDPI(int value)
621 {
622 clearSettingsGroup();
623 setValue(KEY_HIGHDPI_SETTING, value);
624 }
625
setPreviewDark(int enabled)626 void SettingsStore::setPreviewDark(int enabled)
627 {
628 clearSettingsGroup();
629 setValue(KEY_PREVIEW_DARK_IN_DM, enabled);
630 }
631
632
setCleanOn(int on)633 void SettingsStore::setCleanOn(int on)
634 {
635 clearSettingsGroup();
636 setValue(KEY_CLEAN_ON, on);
637 }
638
setPluginMap(const QStringList & map)639 void SettingsStore::setPluginMap(const QStringList &map)
640 {
641 clearSettingsGroup();
642 setValue(KEY_PLUGIN_USER_MAP, map);
643 }
644
setDefaultVersion(const QString & version)645 void SettingsStore::setDefaultVersion(const QString &version)
646 {
647 clearSettingsGroup();
648 setValue(KEY_DEFAULT_VERSION, version);
649 }
650
setPreserveEntityCodeNames(const QList<std::pair<ushort,QString>> codenames)651 void SettingsStore::setPreserveEntityCodeNames(const QList<std::pair <ushort, QString>> codenames)
652 {
653 clearSettingsGroup();
654 QStringList names;
655 QString codes;
656 std::pair <ushort, QString> epair;
657 foreach (epair, codenames) {
658 names.append(epair.second);
659 codes.append(QChar(epair.first));
660 }
661 setValue(KEY_PRESERVE_ENTITY_NAMES, names);
662 setValue(KEY_PRESERVE_ENTITY_CODES, codes);
663 }
664
setPluginEnginePaths(const QHash<QString,QString> & enginepaths)665 void SettingsStore::setPluginEnginePaths(const QHash <QString, QString> &enginepaths)
666 {
667 clearSettingsGroup();
668 QHash<QString, QVariant> ep;
669
670 foreach (QString k, enginepaths.keys()) {
671 ep.insert(k, enginepaths.value(k));
672 }
673 setValue(KEY_PLUGIN_ENGINE_PATHS, ep);
674 }
675
setPluginLastFolder(const QString & lastfolder)676 void SettingsStore::setPluginLastFolder(const QString &lastfolder)
677 {
678 clearSettingsGroup();
679 setValue(KEY_PLUGIN_LAST_FOLDER, lastfolder);
680 }
681
setUseBundledInterp(bool use)682 void SettingsStore::setUseBundledInterp(bool use)
683 {
684 clearSettingsGroup();
685 setValue(KEY_PLUGIN_USE_BUNDLED_INTERP, use);
686 }
687
setCssEpub2ValidationSpec(const QString & spec)688 void SettingsStore::setCssEpub2ValidationSpec(const QString &spec)
689 {
690 clearSettingsGroup();
691 setValue(KEY_CSS_EPUB2_VALIDATION_SPEC, spec);
692 }
693
setCssEpub3ValidationSpec(const QString & spec)694 void SettingsStore::setCssEpub3ValidationSpec(const QString &spec)
695 {
696 clearSettingsGroup();
697 setValue(KEY_CSS_EPUB3_VALIDATION_SPEC, spec);
698 }
699
setTempFolderHome(const QString & path)700 void SettingsStore::setTempFolderHome(const QString &path)
701 {
702 clearSettingsGroup();
703 if (QDir(path).exists()) {
704 setValue(KEY_TEMP_FOLDER, path);
705 } else {
706 setValue(KEY_TEMP_FOLDER, "<SIGIL_DEFAULT_TEMP_HOME>" );
707 }
708 }
709
setAppearancePrefsTabIndex(int index)710 void SettingsStore::setAppearancePrefsTabIndex(int index) {
711 clearSettingsGroup();
712 setValue(KEY_APPEARANCE_PREFS_TAB_INDEX, index);
713 }
714
setPreviewAppearance(const SettingsStore::PreviewAppearance & preview_appearance)715 void SettingsStore::setPreviewAppearance(const SettingsStore::PreviewAppearance &preview_appearance)
716 {
717 clearSettingsGroup();
718 setValue(KEY_PREVIEW_FONT_FAMILY_STANDARD, preview_appearance.font_family_standard);
719 setValue(KEY_PREVIEW_FONT_FAMILY_SERIF, preview_appearance.font_family_serif);
720 setValue(KEY_PREVIEW_FONT_FAMILY_SANS_SERIF, preview_appearance.font_family_sans_serif);
721 setValue(KEY_PREVIEW_FONT_SIZE, preview_appearance.font_size);
722 }
723
setCodeViewAppearance(const SettingsStore::CodeViewAppearance & code_view_appearance)724 void SettingsStore::setCodeViewAppearance(const SettingsStore::CodeViewAppearance &code_view_appearance)
725 {
726 clearSettingsGroup();
727 setValue(KEY_CODE_VIEW_CSS_COMMENT_COLOR, code_view_appearance.css_comment_color);
728 setValue(KEY_CODE_VIEW_CSS_PROPERTY_COLOR, code_view_appearance.css_property_color);
729 setValue(KEY_CODE_VIEW_CSS_QUOTE_COLOR, code_view_appearance.css_quote_color);
730 setValue(KEY_CODE_VIEW_CSS_SELECTOR_COLOR, code_view_appearance.css_selector_color);
731 setValue(KEY_CODE_VIEW_CSS_VALUE_COLOR, code_view_appearance.css_value_color);
732 setValue(KEY_CODE_VIEW_FONT_FAMILY, code_view_appearance.font_family);
733 setValue(KEY_CODE_VIEW_FONT_SIZE, code_view_appearance.font_size);
734 setValue(KEY_CODE_VIEW_LINE_HIGHLIGHT_COLOR, code_view_appearance.line_highlight_color);
735 setValue(KEY_CODE_VIEW_LINE_NUMBER_BACKGROUND_COLOR, code_view_appearance.line_number_background_color);
736 setValue(KEY_CODE_VIEW_LINE_NUMBER_FOREGROUND_COLOR, code_view_appearance.line_number_foreground_color);
737 setValue(KEY_CODE_VIEW_SPELLING_UNDERLINE_COLOR, code_view_appearance.spelling_underline_color);
738 setValue(KEY_CODE_VIEW_XHTML_ATTRIBUTE_NAME_COLOR, code_view_appearance.xhtml_attribute_name_color);
739 setValue(KEY_CODE_VIEW_XHTML_ATTRIBUTE_VALUE_COLOR, code_view_appearance.xhtml_attribute_value_color);
740 setValue(KEY_CODE_VIEW_XHTML_CSS_COLOR, code_view_appearance.xhtml_css_color);
741 setValue(KEY_CODE_VIEW_XHTML_CSS_COMMENT_COLOR, code_view_appearance.xhtml_css_comment_color);
742 setValue(KEY_CODE_VIEW_XHTML_DOCTYPE_COLOR, code_view_appearance.xhtml_doctype_color);
743 setValue(KEY_CODE_VIEW_XHTML_ENTITY_COLOR, code_view_appearance.xhtml_entity_color);
744 setValue(KEY_CODE_VIEW_XHTML_HTML_COLOR, code_view_appearance.xhtml_html_color);
745 setValue(KEY_CODE_VIEW_XHTML_HTML_COMMENT_COLOR, code_view_appearance.xhtml_html_comment_color);
746 }
747
setHighlightOpenCloseTags(bool enabled)748 void SettingsStore::setHighlightOpenCloseTags(bool enabled)
749 {
750 clearSettingsGroup();
751 setValue(KEY_CODE_VIEW_HIGHLIGHT_OPEN_CLOSE_TAGS, enabled);
752 }
753
setCodeViewDarkAppearance(const SettingsStore::CodeViewAppearance & code_view_appearance)754 void SettingsStore::setCodeViewDarkAppearance(const SettingsStore::CodeViewAppearance &code_view_appearance)
755 {
756 clearSettingsGroup();
757 setValue(KEY_CV_DARK_CSS_COMMENT_COLOR, code_view_appearance.css_comment_color);
758 setValue(KEY_CV_DARK_CSS_PROPERTY_COLOR, code_view_appearance.css_property_color);
759 setValue(KEY_CV_DARK_CSS_QUOTE_COLOR, code_view_appearance.css_quote_color);
760 setValue(KEY_CV_DARK_CSS_SELECTOR_COLOR, code_view_appearance.css_selector_color);
761 setValue(KEY_CV_DARK_CSS_VALUE_COLOR, code_view_appearance.css_value_color);
762 setValue(KEY_CV_DARK_FONT_FAMILY, code_view_appearance.font_family);
763 setValue(KEY_CV_DARK_FONT_SIZE, code_view_appearance.font_size);
764 setValue(KEY_CV_DARK_LINE_HIGHLIGHT_COLOR, code_view_appearance.line_highlight_color);
765 setValue(KEY_CV_DARK_LINE_NUMBER_BACKGROUND_COLOR, code_view_appearance.line_number_background_color);
766 setValue(KEY_CV_DARK_LINE_NUMBER_FOREGROUND_COLOR, code_view_appearance.line_number_foreground_color);
767 setValue(KEY_CV_DARK_SPELLING_UNDERLINE_COLOR, code_view_appearance.spelling_underline_color);
768 setValue(KEY_CV_DARK_XHTML_ATTRIBUTE_NAME_COLOR, code_view_appearance.xhtml_attribute_name_color);
769 setValue(KEY_CV_DARK_XHTML_ATTRIBUTE_VALUE_COLOR, code_view_appearance.xhtml_attribute_value_color);
770 setValue(KEY_CV_DARK_XHTML_CSS_COLOR, code_view_appearance.xhtml_css_color);
771 setValue(KEY_CV_DARK_XHTML_CSS_COMMENT_COLOR, code_view_appearance.xhtml_css_comment_color);
772 setValue(KEY_CV_DARK_XHTML_DOCTYPE_COLOR, code_view_appearance.xhtml_doctype_color);
773 setValue(KEY_CV_DARK_XHTML_ENTITY_COLOR, code_view_appearance.xhtml_entity_color);
774 setValue(KEY_CV_DARK_XHTML_HTML_COLOR, code_view_appearance.xhtml_html_color);
775 setValue(KEY_CV_DARK_XHTML_HTML_COMMENT_COLOR, code_view_appearance.xhtml_html_comment_color);
776 }
777
setSpecialCharacterAppearance(const SettingsStore::SpecialCharacterAppearance & special_character_appearance)778 void SettingsStore::setSpecialCharacterAppearance(const SettingsStore::SpecialCharacterAppearance &special_character_appearance)
779 {
780 clearSettingsGroup();
781 setValue(KEY_SPECIAL_CHARACTER_FONT_FAMILY, special_character_appearance.font_family);
782 setValue(KEY_SPECIAL_CHARACTER_FONT_SIZE, special_character_appearance.font_size);
783 }
784
setMainMenuIconSize(double icon_size)785 void SettingsStore::setMainMenuIconSize(double icon_size)
786 {
787 clearSettingsGroup();
788 setValue(KEY_MAIN_MENU_ICON_SIZE, icon_size);
789 }
790
setClipboardHistoryLimit(int limit)791 void SettingsStore::setClipboardHistoryLimit(int limit)
792 {
793 clearSettingsGroup();
794 setValue(KEY_CLIPBOARD_HISTORY_LIMIT, limit);
795 }
796
setEnableAltGr(bool enabled)797 void SettingsStore::setEnableAltGr(bool enabled)
798 {
799 clearSettingsGroup();
800 setValue(KEY_ENABLE_ALTGR, enabled);
801 }
802
clearAppearanceSettings()803 void SettingsStore::clearAppearanceSettings()
804 {
805 clearSettingsGroup();
806 remove(KEY_PREVIEW_FONT_FAMILY_STANDARD);
807 remove(KEY_PREVIEW_FONT_FAMILY_SERIF);
808 remove(KEY_PREVIEW_FONT_FAMILY_SANS_SERIF);
809 remove(KEY_PREVIEW_FONT_SIZE);
810 if (!Utility::IsDarkMode()) {
811 remove(KEY_CODE_VIEW_CSS_COMMENT_COLOR);
812 remove(KEY_CODE_VIEW_CSS_PROPERTY_COLOR);
813 remove(KEY_CODE_VIEW_CSS_QUOTE_COLOR);
814 remove(KEY_CODE_VIEW_CSS_SELECTOR_COLOR);
815 remove(KEY_CODE_VIEW_CSS_VALUE_COLOR);
816 remove(KEY_CODE_VIEW_FONT_FAMILY);
817 remove(KEY_CODE_VIEW_FONT_SIZE);
818 remove(KEY_CODE_VIEW_LINE_HIGHLIGHT_COLOR);
819 remove(KEY_CODE_VIEW_LINE_NUMBER_BACKGROUND_COLOR);
820 remove(KEY_CODE_VIEW_LINE_NUMBER_FOREGROUND_COLOR);
821 remove(KEY_CODE_VIEW_SPELLING_UNDERLINE_COLOR);
822 remove(KEY_CODE_VIEW_XHTML_ATTRIBUTE_NAME_COLOR);
823 remove(KEY_CODE_VIEW_XHTML_ATTRIBUTE_VALUE_COLOR);
824 remove(KEY_CODE_VIEW_XHTML_CSS_COLOR);
825 remove(KEY_CODE_VIEW_XHTML_CSS_COMMENT_COLOR);
826 remove(KEY_CODE_VIEW_XHTML_DOCTYPE_COLOR);
827 remove(KEY_CODE_VIEW_XHTML_ENTITY_COLOR);
828 remove(KEY_CODE_VIEW_XHTML_HTML_COLOR);
829 remove(KEY_CODE_VIEW_XHTML_HTML_COMMENT_COLOR);
830 } else {
831 // Dark Appearance
832 remove(KEY_CV_DARK_CSS_COMMENT_COLOR);
833 remove(KEY_CV_DARK_CSS_PROPERTY_COLOR);
834 remove(KEY_CV_DARK_CSS_QUOTE_COLOR);
835 remove(KEY_CV_DARK_CSS_SELECTOR_COLOR);
836 remove(KEY_CV_DARK_CSS_VALUE_COLOR);
837 remove(KEY_CV_DARK_FONT_FAMILY);
838 remove(KEY_CV_DARK_FONT_SIZE);
839 remove(KEY_CV_DARK_LINE_HIGHLIGHT_COLOR);
840 remove(KEY_CV_DARK_LINE_NUMBER_BACKGROUND_COLOR);
841 remove(KEY_CV_DARK_LINE_NUMBER_FOREGROUND_COLOR);
842 remove(KEY_CV_DARK_SPELLING_UNDERLINE_COLOR);
843 remove(KEY_CV_DARK_XHTML_ATTRIBUTE_NAME_COLOR);
844 remove(KEY_CV_DARK_XHTML_ATTRIBUTE_VALUE_COLOR);
845 remove(KEY_CV_DARK_XHTML_CSS_COLOR);
846 remove(KEY_CV_DARK_XHTML_CSS_COMMENT_COLOR);
847 remove(KEY_CV_DARK_XHTML_DOCTYPE_COLOR);
848 remove(KEY_CV_DARK_XHTML_ENTITY_COLOR);
849 remove(KEY_CV_DARK_XHTML_HTML_COLOR);
850 remove(KEY_CV_DARK_XHTML_HTML_COMMENT_COLOR);
851 }
852
853 remove(KEY_CODE_VIEW_HIGHLIGHT_OPEN_CLOSE_TAGS);
854 remove(KEY_SPECIAL_CHARACTER_FONT_FAMILY);
855 remove(KEY_SPECIAL_CHARACTER_FONT_SIZE);
856 remove(KEY_MAIN_MENU_ICON_SIZE);
857 remove(KEY_SHOWFULLPATH_ON);
858 remove(KEY_HIGHDPI_SETTING);
859 remove(KEY_UI_FONT);
860 remove(KEY_UI_ICON_THEME);
861 remove(KEY_DRAG_DISTANCE_TWEAK);
862 remove(KEY_PREVIEW_DARK_IN_DM);
863 ;
864 }
865
clearSettingsGroup()866 void SettingsStore::clearSettingsGroup()
867 {
868 while (!group().isEmpty()) {
869 endGroup();
870 }
871 }
872