Warning, file /plasma/plasma-workspace/kcms/region_language/localegeneratorglibc.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     localegeneratorglibc.cpp
0003     SPDX-FileCopyrightText: 2022 Han Young <hanyoung@protonmail.com>
0004     SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "localegeneratorglibc.h"
0010 #include "kcm_regionandlang_debug.h"
0011 
0012 LocaleGeneratorGlibc::LocaleGeneratorGlibc(QObject *parent)
0013     : LocaleGeneratorBase(parent)
0014     , m_interface(new LocaleGenHelper(QStringLiteral("org.kde.localegenhelper"), QStringLiteral("/LocaleGenHelper"), QDBusConnection::systemBus(), this))
0015 {
0016     qCDebug(KCM_REGIONANDLANG) << "connect: " << m_interface->isValid();
0017     connect(m_interface, &LocaleGenHelper::success, this, &LocaleGeneratorGlibc::needsFont);
0018     connect(m_interface, &LocaleGenHelper::error, this, &LocaleGeneratorGlibc::userHasToGenerateManually);
0019 }
0020 
0021 void LocaleGeneratorGlibc::localesGenerate(const QStringList &list)
0022 {
0023     qCDebug(KCM_REGIONANDLANG) << "enable locales: " << list;
0024     if (!QFile::exists(QStringLiteral("/etc/locale.gen"))) {
0025         // When locale.gen is not present we assume that to mean that no generation is necessary, meaning we are done.
0026         // e.g. fedora, centos and derivates
0027         Q_EMIT needsFont();
0028         return;
0029     }
0030     qCDebug(KCM_REGIONANDLANG) << "send polkit request";
0031     auto reply = m_interface->enableLocales(list);
0032     if (reply.isError()) {
0033         Q_EMIT userHasToGenerateManually(defaultManuallyGenerateMessage());
0034     }
0035 
0036     QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
0037 
0038     QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [this](QDBusPendingCallWatcher *watcher) {
0039         if (watcher->isError()) {
0040             Q_EMIT userHasToGenerateManually(defaultManuallyGenerateMessage());
0041         }
0042         watcher->deleteLater();
0043     });
0044 }