Skip to content
This repository was archived by the owner on Apr 28, 2022. It is now read-only.

Commit 4bbaa50

Browse files
committed
Merge branch 'jb47268' into 'master'
[aboutsettings] Add property with localized OS name. Contributes to JB#47268 See merge request mer-core/nemo-qml-plugin-systemsettings!118
2 parents 290b35d + ea49e0a commit 4bbaa50

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

src/aboutsettings.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,39 @@ void parseReleaseFile(const QString &filename, QMap<QString, QString> *result)
116116
}
117117
}
118118

119+
void parseLocalizationFile(const QString &filename, QMap<QString, QString> *result)
120+
{
121+
if (!result->isEmpty()) {
122+
return;
123+
}
124+
125+
if (!QFile(filename).exists()) {
126+
return;
127+
}
128+
129+
QSettings localizations(filename, QSettings::IniFormat);
130+
localizations.setIniCodec("UTF-8");
131+
132+
QStringList languages = QLocale::system().uiLanguages();
133+
QStringList availableLanguages;
134+
135+
for (auto it = languages.crbegin(); it != languages.crend(); ++it) {
136+
const auto &lang = *it;
137+
if (localizations.childGroups().contains(lang)) {
138+
availableLanguages.append(lang);
139+
}
140+
}
141+
142+
// Gradually load localizations, overridding least preferred with most preferred ones
143+
for (const auto &lang : availableLanguages) {
144+
localizations.beginGroup(lang);
145+
for (const auto &key : localizations.childKeys()) {
146+
result->insert(key, localizations.value(key).toString());
147+
}
148+
localizations.endGroup();
149+
}
150+
}
151+
119152
}
120153

121154
AboutSettings::AboutSettings(QObject *parent)
@@ -189,6 +222,13 @@ QString AboutSettings::serial() const
189222
return QString();
190223
}
191224

225+
QString AboutSettings::localizedOperatingSystemName() const
226+
{
227+
parseLocalizationFile(QStringLiteral("/etc/os-release-l10n"), &m_osReleaseLocalization);
228+
229+
return m_osReleaseLocalization.value("NAME", operatingSystemName());
230+
}
231+
192232
QString AboutSettings::baseOperatingSystemName() const
193233
{
194234
QString osName = operatingSystemName();

src/aboutsettings.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class SYSTEMSETTINGS_EXPORT AboutSettings: public QObject
4747
Q_PROPERTY(QString wlanMacAddress READ wlanMacAddress CONSTANT)
4848
Q_PROPERTY(QString imei READ imei CONSTANT)
4949
Q_PROPERTY(QString serial READ serial CONSTANT)
50+
Q_PROPERTY(QString localizedOperatingSystemName READ localizedOperatingSystemName CONSTANT)
5051
Q_PROPERTY(QString baseOperatingSystemName READ baseOperatingSystemName CONSTANT)
5152
Q_PROPERTY(QString operatingSystemName READ operatingSystemName CONSTANT)
5253
Q_PROPERTY(QString softwareVersion READ softwareVersion CONSTANT)
@@ -77,6 +78,7 @@ class SYSTEMSETTINGS_EXPORT AboutSettings: public QObject
7778
QString wlanMacAddress() const;
7879
QString imei() const;
7980
QString serial() const;
81+
QString localizedOperatingSystemName() const;
8082
QString baseOperatingSystemName() const;
8183
QString operatingSystemName() const;
8284
QString softwareVersion() const;
@@ -100,6 +102,7 @@ class SYSTEMSETTINGS_EXPORT AboutSettings: public QObject
100102
PartitionManager m_partitionManager;
101103

102104
mutable QMap<QString, QString> m_osRelease;
105+
mutable QMap<QString, QString> m_osReleaseLocalization;
103106
mutable QMap<QString, QString> m_hardwareRelease;
104107

105108
QString m_vendorName;

src/plugin/plugins.qmltypes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Module {
1616
Property { name: "wlanMacAddress"; type: "string"; isReadonly: true }
1717
Property { name: "imei"; type: "string"; isReadonly: true }
1818
Property { name: "serial"; type: "string"; isReadonly: true }
19+
Property { name: "localizedOperatingSystemName"; type: "string"; isReadonly: true }
1920
Property { name: "baseOperatingSystemName"; type: "string"; isReadonly: true }
2021
Property { name: "operatingSystemName"; type: "string"; isReadonly: true }
2122
Property { name: "softwareVersion"; type: "string"; isReadonly: true }

0 commit comments

Comments
 (0)