File indexing completed on 2024-05-19 05:38:24
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 auto watcher = new QDBusPendingCallWatcher(reply, this); 0037 QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [this](QDBusPendingCallWatcher *watcher) { 0038 if (watcher->isError()) { 0039 Q_EMIT userHasToGenerateManually(defaultManuallyGenerateMessage()); 0040 } 0041 watcher->deleteLater(); 0042 }); 0043 }