1 /*
2 SPDX-FileCopyrightText: 2010-2021 Graeme Gott <graeme@gottcode.org>
3
4 SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7 #include "language_settings.h"
8
9 #include <QFile>
10 #include <QLocale>
11 #include <QSettings>
12
13 //-----------------------------------------------------------------------------
14
LanguageSettings()15 LanguageSettings::LanguageSettings()
16 : m_language(QLocale::system().name())
17 {
18 loadDefaults();
19 }
20
21 //-----------------------------------------------------------------------------
22
LanguageSettings(const QString & language)23 LanguageSettings::LanguageSettings(const QString& language)
24 : m_language(language)
25 {
26 loadDefaults();
27 }
28
29 //-----------------------------------------------------------------------------
30
LanguageSettings(const QSettings & group)31 LanguageSettings::LanguageSettings(const QSettings& group)
32 : m_language(group.value("Locale").toString())
33 , m_dice(group.value("Dice").toString())
34 , m_words(group.value("Words").toString())
35 , m_dictionary(group.value("Dictionary").toString())
36 {
37 if (m_language.isEmpty()) {
38 const int language = group.value("Language").toInt();
39 m_language = QLocale(QLocale::Language(language)).name().section('_', 0, 0);
40 }
41
42 loadValues();
43 loadDefaults();
44 }
45
46 //-----------------------------------------------------------------------------
47
loadDefaults()48 void LanguageSettings::loadDefaults()
49 {
50 if (!QFile::exists(QString("tanglet:%1/words").arg(m_language))) {
51 m_language = m_language.section('_', 0, 0);
52 if (!QFile::exists(QString("tanglet:%1/words").arg(m_language))) {
53 m_language = "en";
54 }
55 }
56
57 if (m_dice.isEmpty()) {
58 m_dice = QString("tanglet:%1/dice").arg(m_language);
59 }
60
61 if (m_words.isEmpty()) {
62 m_words = QString("tanglet:%1/words").arg(m_language);
63 }
64
65 if (m_dictionary.isEmpty()) {
66 QSettings settings(QString("tanglet:%1/language.ini").arg(m_language), QSettings::IniFormat);
67 #if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
68 settings.setIniCodec("UTF-8");
69 #endif
70 m_dictionary = settings.value("Language/Dictionary").toString();
71 }
72 if (m_dictionary.isEmpty()) {
73 m_dictionary = QString("https://%1.wiktionary.org/wiki/%s").arg(m_language);
74 }
75 }
76
77 //-----------------------------------------------------------------------------
78
loadValues()79 void LanguageSettings::loadValues()
80 {
81 QSettings settings;
82 settings.beginGroup("Board");
83
84 if (m_language.isEmpty()) {
85 m_language = settings.value("Locale").toString();
86 }
87 if (m_language.isEmpty()) {
88 m_language = QLocale::system().name();
89 }
90
91 if (m_dice.isEmpty()) {
92 m_dice = settings.value("Dice").toString();
93 }
94
95 if (m_words.isEmpty()) {
96 m_words = settings.value("Words").toString();
97 }
98
99 if (m_dictionary.isEmpty()) {
100 m_dictionary = settings.value("Dictionary").toString();
101 }
102 }
103
104 //-----------------------------------------------------------------------------
105