on 8839366 help sign in
unity8/plugins/Wizard/LocalePlugin.cpp
75 lines 2.3 kB history raw
1/*
2 * Copyright (C) 2015 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3, as published
6 * by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranties of
10 * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11 * PURPOSE. See the GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17#include <QLocale>
18#include <QStringList>
20#include "LocalePlugin.h"
22LocaleAttached::LocaleAttached(QObject* parent)
23 : QObject(parent)
27QJsonObject LocaleAttached::languages() const
29 QJsonObject result;
30 for (int i = QLocale::C + 1; i < QLocale::LastLanguage; ++i) {
31 QLocale loc(static_cast<QLocale::Language>(i));
32 result.insert(loc.name().split('_').first(), QLocale::languageToString(loc.language()));
33 }
35 return result;
38QJsonObject LocaleAttached::countriesForLanguage(const QString &code) const
40 QLocale tmp(code);
41 const QList<QLocale> allLocales = QLocale::matchingLocales(tmp.language(), QLocale::AnyScript, QLocale::AnyCountry);
42 QJsonObject result;
43 Q_FOREACH(const QLocale &loc, allLocales) {
44 const QString countryCode = loc.name().section('_', 1, 1);
45 //qDebug() << "Matching country:" << countryCode;
46 result.insert(countryCode, QLocale::countryToString(loc.country()));
47 }
48 return result;
51QJsonObject LocaleAttached::countries() const
53 const QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry);
54 QJsonObject result;
56 Q_FOREACH(const QLocale &loc, allLocales) {
57 const QString countryCode = loc.name().section('_', 1, 1);
58 if (!countryCode.isEmpty() && countryCode.length() == 2) {
59 result.insert(countryCode, QLocale::countryToString(loc.country()));
60 }
61 }
63 return result;
67LocalePlugin::LocalePlugin(QObject* parent)
68 : QObject(parent)
72LocaleAttached* LocalePlugin::qmlAttachedProperties(QObject* parent)
74 return new LocaleAttached(parent);