[neon/kde/kdepim-runtime/Neon/stable] debian/patches: Revert "add patches from branch advised by carl"
Jonathan Esk-Riddell
null at kde.org
Mon Oct 2 16:55:09 BST 2023
Git commit f28a0ce20c8c5942e6566565d6d0ae16512ed68b by Jonathan Esk-Riddell.
Committed on 02/10/2023 at 17:55.
Pushed by jriddell into branch 'Neon/stable'.
Revert "add patches from branch advised by carl"
This reverts commit 19d21dd94635933c0f54ba61e517f0336a73b5ee.
D +0 -1275 debian/patches/carl1.diff
D +0 -54 debian/patches/carl2.diff
D +0 -113 debian/patches/carl3.diff
D +0 -3 debian/patches/series
https://invent.kde.org/neon/kde/kdepim-runtime/-/commit/f28a0ce20c8c5942e6566565d6d0ae16512ed68b
diff --git a/debian/patches/carl1.diff b/debian/patches/carl1.diff
deleted file mode 100644
index 778a37c..0000000
--- a/debian/patches/carl1.diff
+++ /dev/null
@@ -1,1275 +0,0 @@
-commit fb0d78fb3bcfce5bd4ff7f51e4cd1405693e0275
-Author: Carl Schwan <carl at carlschwan.eu>
-Date: Tue Sep 19 17:04:13 2023 +0200
-
- Revert "Revert "Use config plugin instead of out of process config dialog""
-
- This reverts commit f33496a346f49e95caaf7f664ef2f91e4b7f3ddb.
-
- (cherry picked from commit a17ef55dbe31e2020e96f66cd7021578ed8b5444)
-
-diff --git a/resources/google-groupware/CMakeLists.txt b/resources/google-groupware/CMakeLists.txt
-index babf58a95..2f2b46ade 100644
---- a/resources/google-groupware/CMakeLists.txt
-+++ b/resources/google-groupware/CMakeLists.txt
-@@ -1,67 +1,75 @@
- add_definitions(-DTRANSLATION_DOMAIN=\"akonadi_google_resource\")
-
--set(googleresource_SRCS
-- googleresource.cpp
-+set(googleresource_common_SRCS
- googlesettings.cpp
-- googlesettingsdialog.cpp
-- defaultreminderattribute.cpp
-- googleresourcestate.cpp
-- generichandler.cpp
-- calendarhandler.cpp
-- taskhandler.cpp
-- peopleconversionjob.cpp
-- personhandler.cpp
-- googleresource.h
- googlesettings.h
-- googlesettingsdialog.h
-- defaultreminderattribute.h
-- googleresourcestate.h
-- generichandler.h
-- calendarhandler.h
-- taskhandler.h
-- peopleconversionjob.h
-- personhandler.h
-- )
-+ googlescopes.h
-+ googlescopes.cpp
-+)
-
--ecm_qt_declare_logging_category(googleresource_SRCS
-+ecm_qt_declare_logging_category(googleresource_common_SRCS
- HEADER googleresource_debug.h
- IDENTIFIER GOOGLE_LOG
- CATEGORY_NAME org.kde.pim.google
- DESCRIPTION "resource google (kdepim-runtime)"
- EXPORT KDEPIMRUNTIME)
--ecm_qt_declare_logging_category(googleresource_SRCS
-+ecm_qt_declare_logging_category(googleresource_common_SRCS
- HEADER googlecalendar_debug.h
- IDENTIFIER GOOGLE_CALENDAR_LOG
- CATEGORY_NAME org.kde.pim.google.calendar
- DESCRIPTION "resource google calendar (kdepim-runtime)"
- EXPORT KDEPIMRUNTIME)
--ecm_qt_declare_logging_category(googleresource_SRCS
-+ecm_qt_declare_logging_category(googleresource_common_SRCS
- HEADER googletasks_debug.h
- IDENTIFIER GOOGLE_TASKS_LOG
- CATEGORY_NAME org.kde.pim.google.tasks
- DESCRIPTION "resource google tasks (kdepim-runtime)"
- EXPORT KDEPIMRUNTIME)
--ecm_qt_declare_logging_category(googleresource_SRCS
-+ecm_qt_declare_logging_category(googleresource_common_SRCS
- HEADER googlepeople_debug.h
- IDENTIFIER GOOGLE_PEOPLE_LOG
- CATEGORY_NAME org.kde.pim.google.people
- DESCRIPTION "resource google people (kdepim-runtime)"
- EXPORT KDEPIMRUNTIME)
-
--ki18n_wrap_ui(googleresource_SRCS googlesettingsdialog.ui)
-
--kconfig_add_kcfg_files(googleresource_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfgc)
-+kconfig_add_kcfg_files(googleresource_common_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfgc)
-
- kcfg_generate_dbus_interface(
- ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfg
- org.kde.Akonadi.Google.Settings
- )
-
--qt_add_dbus_adaptor(googleresource_SRCS
-+qt_add_dbus_adaptor(googleresource_common_SRCS
- ${CMAKE_CURRENT_BINARY_DIR}/org.kde.Akonadi.Google.Settings.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/googlesettings.h GoogleSettings
- )
-
-+############################# Resource #################################
-+set(googleresource_SRCS
-+ googleresource.cpp
-+ defaultreminderattribute.cpp
-+ googleresourcestate.cpp
-+ generichandler.cpp
-+ calendarhandler.cpp
-+ taskhandler.cpp
-+ peopleconversionjob.cpp
-+ personhandler.cpp
-+ googleresource.h
-+ googlesettings.h
-+ defaultreminderattribute.h
-+ googleresourcestate.h
-+ generichandler.h
-+ calendarhandler.h
-+ taskhandler.h
-+ peopleconversionjob.h
-+ personhandler.h
-+ ${googleresource_common_SRCS}
-+)
-+
-+ki18n_wrap_ui(googleresource_SRCS googlesettingswidget.ui)
-+
-+
- add_executable(akonadi_google_resource ${googleresource_SRCS})
- if (COMPILE_WITH_UNITY_CMAKE_SUPPORT)
- set_target_properties(akonadi_google_resource PROPERTIES UNITY_BUILD ON)
-@@ -112,3 +120,34 @@ install(
- FILES akonadi_google_resource.notifyrc
- DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}
- )
-+
-+################################ Config plugin ###############################
-+
-+kcoreaddons_add_plugin(googleconfig
-+ INSTALL_NAMESPACE "pim${QT_MAJOR_VERSION}/akonadi/config"
-+)
-+target_sources(googleconfig
-+PRIVATE
-+ googleconfig.cpp
-+ googlesettingswidget.cpp
-+ googlesettingswidget.h
-+ ${googleresource_common_SRCS}
-+)
-+target_link_libraries(googleconfig
-+ KPim${KF_MAJOR_VERSION}::AkonadiCore
-+ KPim${KF_MAJOR_VERSION}::AkonadiCalendar
-+ KPim${KF_MAJOR_VERSION}::AkonadiCore
-+ KPim${KF_MAJOR_VERSION}::AkonadiAgentBase
-+ KF${KF_MAJOR_VERSION}::CalendarCore
-+ KF${KF_MAJOR_VERSION}::Contacts
-+ KF${KF_MAJOR_VERSION}::Wallet
-+ KF${KF_MAJOR_VERSION}::I18n
-+ KF${KF_MAJOR_VERSION}::WindowSystem
-+ KF${KF_MAJOR_VERSION}::TextWidgets
-+ KF${KF_MAJOR_VERSION}::Notifications
-+ KPim${KF_MAJOR_VERSION}::GAPICalendar
-+ KPim${KF_MAJOR_VERSION}::GAPIPeople
-+ KPim${KF_MAJOR_VERSION}::GAPICore
-+ KPim${KF_MAJOR_VERSION}::GAPITasks
-+ qt${KF_MAJOR_VERSION}keychain
-+)
-diff --git a/resources/google-groupware/googleconfig.cpp b/resources/google-groupware/googleconfig.cpp
-new file mode 100644
-index 000000000..2eb6ab2ef
---- /dev/null
-+++ b/resources/google-groupware/googleconfig.cpp
-@@ -0,0 +1,43 @@
-+/*
-+ SPDX-FileCopyrightText: 2018 Daniel Vrátil <dvratil at kde.org>
-+
-+ SPDX-License-Identifier: LGPL-2.0-or-later
-+*/
-+
-+#include <Akonadi/AgentConfigurationBase>
-+
-+#include "googlesettings.h"
-+#include "googlesettingswidget.h"
-+
-+class GoogleConfig : public Akonadi::AgentConfigurationBase
-+{
-+ Q_OBJECT
-+
-+public:
-+ explicit GoogleConfig(const KSharedConfigPtr &config, QWidget *parent, const QVariantList &list)
-+ : Akonadi::AgentConfigurationBase(config, parent, list)
-+ , mSettings(config, GoogleSettings::Option::NoOption)
-+ , mWidget(mSettings, identifier(), parent)
-+ {
-+ connect(&mWidget, &GoogleSettingsWidget::okEnabled, this, &Akonadi::AgentConfigurationBase::enableOkButton);
-+ }
-+
-+ void load() override
-+ {
-+ Akonadi::AgentConfigurationBase::load();
-+ mWidget.loadSettings();
-+ }
-+
-+ Q_REQUIRED_RESULT bool save() const override
-+ {
-+ const_cast<GoogleConfig *>(this)->mWidget.saveSettings();
-+ return Akonadi::AgentConfigurationBase::save();
-+ }
-+
-+ GoogleSettings mSettings;
-+ GoogleSettingsWidget mWidget;
-+};
-+
-+AKONADI_AGENTCONFIG_FACTORY(GoogleConfigFactory, "googleconfig.json", GoogleConfig)
-+
-+#include "googleconfig.moc"
-diff --git a/resources/google-groupware/googleconfig.json b/resources/google-groupware/googleconfig.json
-new file mode 100644
-index 000000000..69c76f583
---- /dev/null
-+++ b/resources/google-groupware/googleconfig.json
-@@ -0,0 +1,5 @@
-+{
-+ "X-Akonadi-PluginType": "AgentConfig",
-+ "X-Akonadi-Library": "googleconfig",
-+ "X-Akonadi-AgentConfig-Type": "akonadi_google_resource"
-+}
-\ No newline at end of file
-diff --git a/resources/google-groupware/googleresource.cpp b/resources/google-groupware/googleresource.cpp
-index b40f093dd..47a7e0c8d 100644
---- a/resources/google-groupware/googleresource.cpp
-+++ b/resources/google-groupware/googleresource.cpp
-@@ -9,8 +9,9 @@
- #include "googleresource.h"
- #include "googleresource_debug.h"
- #include "googleresourcestate.h"
-+#include "googlescopes.h"
- #include "googlesettings.h"
--#include "googlesettingsdialog.h"
-+#include "googlesettingswidget.h"
- #include "settingsadaptor.h"
-
- #include "personhandler.h"
-@@ -67,8 +68,11 @@ bool accountIsValid(const KGAPI2::AccountPtr &account)
- GoogleResource::GoogleResource(const QString &id)
- : ResourceBase(id)
- , AgentBase::ObserverV3()
-+ , m_settings(KSharedConfig::openConfig())
- , m_iface(new GoogleResourceState(this))
- {
-+ m_settings.setResourceId(identifier());
-+
- AttributeFactory::registerAttribute<DefaultReminderAttribute>();
-
- connect(this, &GoogleResource::reloadConfiguration, this, &GoogleResource::reloadConfig);
-@@ -83,9 +87,7 @@ GoogleResource::GoogleResource(const QString &id)
-
- Q_EMIT status(NotConfigured, i18n("Fetching password..."));
-
-- m_settings = new GoogleSettings();
-- m_settings->setWindowId(winIdForDialogs());
-- connect(m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
-+ connect(&m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
- if (accountId() > 0) {
- return;
- }
-@@ -94,7 +96,7 @@ GoogleResource::GoogleResource(const QString &id)
- return;
- }
-
-- const auto account = m_settings->accountPtr();
-+ const auto account = m_settings.accountPtr();
- if (account.isNull()) {
- Q_EMIT status(NotConfigured);
- return;
-@@ -107,18 +109,15 @@ GoogleResource::GoogleResource(const QString &id)
- synchronize();
- }
- });
-- m_settings->init();
-+ m_settings.init();
-
- updateResourceName();
-
-- m_freeBusyHandler = std::make_unique<FreeBusyHandler>(m_iface, m_settings);
-+ m_freeBusyHandler = std::make_unique<FreeBusyHandler>(m_iface, &m_settings);
- m_handlers.clear();
-- m_handlers.push_back(GenericHandler::Ptr(new CalendarHandler(m_iface, m_settings)));
-- m_handlers.push_back(GenericHandler::Ptr(new PersonHandler(m_iface, m_settings)));
-- m_handlers.push_back(GenericHandler::Ptr(new TaskHandler(m_iface, m_settings)));
--
-- new SettingsAdaptor(m_settings);
-- QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"), m_settings, QDBusConnection::ExportAdaptors);
-+ m_handlers.push_back(GenericHandler::Ptr(new CalendarHandler(m_iface, &m_settings)));
-+ m_handlers.push_back(GenericHandler::Ptr(new PersonHandler(m_iface, &m_settings)));
-+ m_handlers.push_back(GenericHandler::Ptr(new TaskHandler(m_iface, &m_settings)));
- }
-
- GoogleResource::~GoogleResource()
-@@ -128,7 +127,7 @@ GoogleResource::~GoogleResource()
-
- void GoogleResource::cleanup()
- {
-- m_settings->cleanup();
-+ m_settings.cleanup();
- ResourceBase::cleanup();
- }
-
-@@ -137,65 +136,30 @@ void GoogleResource::emitReadyStatus()
- Q_EMIT status(Idle, i18nc("@info:status", "Ready"));
- }
-
--void GoogleResource::configure(WId windowId)
--{
-- if (!m_settings->isReady() || m_isConfiguring) {
-- Q_EMIT configurationDialogAccepted();
-- return;
-- }
--
-- m_isConfiguring = true;
--
-- QScopedPointer<GoogleSettingsDialog> settingsDialog(new GoogleSettingsDialog(this, m_settings, windowId));
-- settingsDialog->setWindowIcon(QIcon::fromTheme(QStringLiteral("im-google")));
-- if (settingsDialog->exec() == QDialog::Accepted) {
-- updateResourceName();
--
-- Q_EMIT configurationDialogAccepted();
--
-- if (m_settings->accountPtr().isNull()) {
-- Q_EMIT status(NotConfigured, i18n("Configured account does not exist"));
-- m_isConfiguring = false;
-- return;
-- }
--
-- emitReadyStatus();
-- synchronize();
-- } else {
-- updateResourceName();
--
-- Q_EMIT configurationDialogRejected();
-- }
--
-- m_isConfiguring = false;
--}
--
- QList<QUrl> GoogleResource::scopes() const
- {
- // TODO: determine it based on what user wants?
-- const QList<QUrl> scopes = {
-- Account::accountInfoScopeUrl(),
-- Account::calendarScopeUrl(),
-- Account::peopleScopeUrl(),
-- Account::tasksScopeUrl(),
-- };
-- return scopes;
-+ return googleScopes();
- }
-
- void GoogleResource::updateResourceName()
- {
-- const QString accountName = m_settings->account();
-+ const QString accountName = m_settings.account();
- setName(i18nc("%1 is account name (user at gmail.com)", "Google Groupware (%1)", accountName.isEmpty() ? i18n("not configured") : accountName));
- }
-
- void GoogleResource::reloadConfig()
- {
-- const AccountPtr account = m_settings->accountPtr();
-+ updateResourceName();
-+
-+ const AccountPtr account = m_settings.accountPtr();
- if (account.isNull() || account->accountName().isEmpty()) {
- Q_EMIT status(NotConfigured, i18n("Configured account does not exist"));
-- } else {
-- emitReadyStatus();
-+ return;
- }
-+
-+ emitReadyStatus();
-+ synchronize();
- }
-
- bool GoogleResource::handleError(KGAPI2::Job *job, bool _cancelTask)
-@@ -231,7 +195,7 @@ bool GoogleResource::handleError(KGAPI2::Job *job, bool _cancelTask)
-
- void GoogleResource::runAuthJob(const KGAPI2::AccountPtr &account, const QVariant &args)
- {
-- auto authJob = new AuthJob(account, m_settings->clientId(), m_settings->clientSecret(), this);
-+ auto authJob = new AuthJob(account, m_settings.clientId(), m_settings.clientSecret(), this);
- authJob->setProperty(JOB_PROPERTY, args);
- connect(authJob, &AuthJob::finished, this, &GoogleResource::slotAuthJobFinished);
- }
-@@ -264,7 +228,7 @@ void GoogleResource::requestAuthenticationFromUser(const KGAPI2::AccountPtr &acc
-
- bool GoogleResource::canPerformTask()
- {
-- if (!m_settings->accountPtr() && accountId() == 0) {
-+ if (!m_settings.accountPtr() && accountId() == 0) {
- cancelTask(i18nc("@info:status", "Resource is not configured"));
- Q_EMIT status(NotConfigured, i18nc("@info:status", "Resource is not configured"));
- return false;
-@@ -289,10 +253,11 @@ void GoogleResource::slotAuthJobFinished(KGAPI2::Job *job)
-
- auto authJob = qobject_cast<AuthJob *>(job);
- AccountPtr account = authJob->account();
-- auto writeJob = m_settings->storeAccount(account);
-+ auto writeJob = m_settings.storeAccount(account);
- connect(writeJob, &WritePasswordJob::finished, this, [job, account, writeJob]() {
- if (writeJob->error()) {
- qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
-+ return;
- }
-
- auto otherJob = job->property(JOB_PROPERTY).value<KGAPI2::Job *>();
-@@ -375,22 +340,22 @@ void GoogleResource::retrieveCollections()
-
- setCollectionStreamingEnabled(true);
- CachePolicy cachePolicy;
-- if (m_settings->enableIntervalCheck()) {
-+ if (m_settings.enableIntervalCheck()) {
- cachePolicy.setInheritFromParent(false);
-- cachePolicy.setIntervalCheckTime(m_settings->intervalCheckTime());
-+ cachePolicy.setIntervalCheckTime(m_settings.intervalCheckTime());
- }
-
- // Setting up root collection
- m_rootCollection = Collection();
- m_rootCollection.setContentMimeTypes({Collection::mimeType(), Collection::virtualMimeType()});
- m_rootCollection.setRemoteId(ROOT_COLLECTION_REMOTEID);
-- m_rootCollection.setName(m_settings->accountPtr()->accountName());
-+ m_rootCollection.setName(m_settings.accountPtr()->accountName());
- m_rootCollection.setParentCollection(Collection::root());
- m_rootCollection.setRights(Collection::CanCreateCollection);
- m_rootCollection.setCachePolicy(cachePolicy);
-
- auto attr = m_rootCollection.attribute<EntityDisplayAttribute>(Collection::AddIfMissing);
-- attr->setDisplayName(m_settings->accountPtr()->accountName());
-+ attr->setDisplayName(m_settings.accountPtr()->accountName());
- attr->setIconName(QStringLiteral("im-google"));
-
- collectionsRetrieved({m_rootCollection});
-diff --git a/resources/google-groupware/googleresource.h b/resources/google-groupware/googleresource.h
-index 460957275..75708afca 100644
---- a/resources/google-groupware/googleresource.h
-+++ b/resources/google-groupware/googleresource.h
-@@ -14,6 +14,7 @@
-
- #include "calendarhandler.h"
- #include "generichandler.h"
-+#include "googlesettings.h"
-
- #define JOB_PROPERTY "_KGAPI2Job"
-
-@@ -37,7 +38,6 @@ public:
-
- void cleanup() override;
- public Q_SLOTS:
-- void configure(WId windowId) override;
- void reloadConfig();
-
- protected:
-@@ -83,7 +83,7 @@ protected Q_SLOTS:
-
- private:
- bool m_isConfiguring = false;
-- GoogleSettings *m_settings = nullptr;
-+ GoogleSettings m_settings;
- Akonadi::Collection m_rootCollection;
-
- GoogleResourceState *const m_iface;
-diff --git a/resources/google-groupware/googlescopes.cpp b/resources/google-groupware/googlescopes.cpp
-new file mode 100644
-index 000000000..9e565f7e3
---- /dev/null
-+++ b/resources/google-groupware/googlescopes.cpp
-@@ -0,0 +1,19 @@
-+// SPDX-FileCopyrightText: 2011 Daniel Vrátil <dvratil at redhat.com>
-+// SPDX-FileCopyrightText: 2023 Carl Schwan <carl at carlschwan.eu>
-+// SPDX-License-Identifier: GPL-3.0-or-later
-+
-+#include "googlescopes.h"
-+#include <KGAPI/Account>
-+
-+using namespace KGAPI2;
-+
-+QList<QUrl> googleScopes()
-+{
-+ // TODO: determine it based on what user wants?
-+ return {
-+ Account::accountInfoScopeUrl(),
-+ Account::calendarScopeUrl(),
-+ Account::peopleScopeUrl(),
-+ Account::tasksScopeUrl(),
-+ };
-+}
-diff --git a/resources/google-groupware/googlescopes.h b/resources/google-groupware/googlescopes.h
-new file mode 100644
-index 000000000..33bf579a8
---- /dev/null
-+++ b/resources/google-groupware/googlescopes.h
-@@ -0,0 +1,10 @@
-+/*
-+ SPDX-FileCopyrightText: 2011 Daniel Vrátil <dvratil at redhat.com>
-+ SPDX-FileCopyrightText: 2023 Carl Schwan <carl at carlschwan.eu>
-+ SPDX-License-Identifier: GPL-3.0-or-later
-+*/
-+
-+#include <QList>
-+#include <QUrl>
-+
-+QList<QUrl> googleScopes();
-diff --git a/resources/google-groupware/googlesettings.cpp b/resources/google-groupware/googlesettings.cpp
-index 6a1785fcf..aa94cad1a 100644
---- a/resources/google-groupware/googlesettings.cpp
-+++ b/resources/google-groupware/googlesettings.cpp
-@@ -8,6 +8,8 @@
-
- #include "googlesettings.h"
- #include "googleresource_debug.h"
-+#include "googlescopes.h"
-+#include "settingsadaptor.h"
-
- #include <KGAPI/Account>
- #include <KLocalizedString>
-@@ -27,8 +29,16 @@ using namespace KGAPI2;
-
- static const QString googleWalletFolder = QStringLiteral("Akonadi Google");
-
--GoogleSettings::GoogleSettings()
-+GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
-+ : SettingsBase(config)
- {
-+ qDebug() << config;
-+ if (options & Option::ExportToDBus) {
-+ new SettingsAdaptor(this);
-+ QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"),
-+ this,
-+ QDBusConnection::ExportAdaptors | QDBusConnection::ExportScriptableContents);
-+ }
- }
-
- void GoogleSettings::init()
-@@ -82,15 +92,17 @@ WritePasswordJob *GoogleSettings::storeAccount(AccountPtr account)
- m_account = account;
-
- QStringList scopes;
-- const QList<QUrl> urlScopes = m_account->scopes();
-+ const QList<QUrl> urlScopes = googleScopes();
- scopes.reserve(urlScopes.count());
- for (const QUrl &url : urlScopes) {
- scopes << url.toString();
- }
-
-- const QMap<QString, QString> map = {{QStringLiteral("accessToken"), m_account->accessToken()},
-- {QStringLiteral("refreshToken"), m_account->refreshToken()},
-- {QStringLiteral("scopes"), scopes.join(QLatin1Char(','))}};
-+ const QMap<QString, QString> map = {
-+ {QStringLiteral("accessToken"), m_account->accessToken()},
-+ {QStringLiteral("refreshToken"), m_account->refreshToken()},
-+ {QStringLiteral("scopes"), scopes.join(QLatin1Char(','))},
-+ };
-
- // Legacy: store the map exactly like Kwallet is doing it
- QByteArray mapData;
-diff --git a/resources/google-groupware/googlesettings.h b/resources/google-groupware/googlesettings.h
-index f689dc774..0ec4c3c34 100644
---- a/resources/google-groupware/googlesettings.h
-+++ b/resources/google-groupware/googlesettings.h
-@@ -33,7 +33,14 @@ class GoogleSettings : public SettingsBase
- Q_CLASSINFO("D-Bus Interface", "org.kde.Akonadi.Google.ExtendedSettings")
-
- public:
-- GoogleSettings();
-+ enum class Option {
-+ NoOption = 0,
-+ ExportToDBus = 1,
-+ };
-+ Q_DECLARE_FLAGS(Options, Option)
-+
-+ explicit GoogleSettings(const KSharedConfigPtr &config, Options options = Option::ExportToDBus);
-+
- void init();
- void setWindowId(WId id);
- void setResourceId(const QString &resourceIdentifier);
-@@ -50,9 +57,11 @@ public:
- bool isReady() const;
- QKeychain::WritePasswordJob *storeAccount(KGAPI2::AccountPtr account);
- void cleanup();
-+
- Q_SIGNALS:
- void accountReady(bool ready);
- void accountChanged();
-+ void okEnabled(bool enabled);
-
- private:
- void slotWalletOpened(bool success);
-diff --git a/resources/google-groupware/googlesettingsdialog.cpp b/resources/google-groupware/googlesettingsdialog.cpp
-deleted file mode 100644
-index d418652d6..000000000
---- a/resources/google-groupware/googlesettingsdialog.cpp
-+++ /dev/null
-@@ -1,305 +0,0 @@
--/*
-- SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil at redhat.com>
-- SPDX-FileCopyrightText: 2020 Igor Poboiko <igor.poboiko at gmail.com>
--
-- SPDX-License-Identifier: GPL-3.0-or-later
--*/
--
--#include "googlesettingsdialog.h"
--#include "googleresource.h"
--#include "googleresource_debug.h"
--#include "googlesettings.h"
--#include "ui_googlesettingsdialog.h"
--
--#include <QDialogButtonBox>
--
--#include <KGAPI/Account>
--#include <KGAPI/AuthJob>
--#include <KGAPI/Calendar/Calendar>
--#include <KGAPI/Calendar/CalendarFetchJob>
--#include <KGAPI/Tasks/TaskList>
--#include <KGAPI/Tasks/TaskListFetchJob>
--#include <KMessageBox>
--#include <KWindowSystem>
--
--#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
--#include <qt5keychain/keychain.h>
--#else
--#include <qt6keychain/keychain.h>
--#endif
--
--using namespace QKeychain;
--using namespace KGAPI2;
--
--GoogleSettingsDialog::GoogleSettingsDialog(GoogleResource *resource, GoogleSettings *settings, WId wId)
-- : QDialog()
-- , m_resource(resource)
-- , m_settings(settings)
-- , m_ui(new Ui::GoogleSettingsDialog)
--{
-- if (wId) {
-- setAttribute(Qt::WA_NativeWindow, true);
-- KWindowSystem::setMainWindow(windowHandle(), wId);
-- }
-- auto mainLayout = new QVBoxLayout(this);
--
-- auto mainWidget = new QWidget(this);
-- mainLayout->addWidget(mainWidget);
--
-- auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
-- QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
-- okButton->setDefault(true);
-- okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
-- mainLayout->addWidget(buttonBox);
--
-- m_ui->setupUi(mainWidget);
--
-- m_ui->refreshSpinBox->setSuffix(ki18np(" minute", " minutes"));
-- m_ui->enableRefresh->setChecked(m_settings->enableIntervalCheck());
-- m_ui->refreshSpinBox->setEnabled(m_settings->enableIntervalCheck());
-- m_ui->refreshSpinBox->setValue(m_settings->intervalCheckTime());
--
-- m_ui->eventsLimitCombo->setMaximumDate(QDate::currentDate());
-- m_ui->eventsLimitCombo->setMinimumDate(QDate::fromString(QStringLiteral("2000-01-01"), Qt::ISODate));
-- m_ui->eventsLimitCombo->setOptions(KDateComboBox::EditDate | KDateComboBox::SelectDate | KDateComboBox::DatePicker | KDateComboBox::WarnOnInvalid);
-- if (m_settings->eventsSince().isEmpty()) {
-- const QString ds = QStringLiteral("%1-01-01").arg(QString::number(QDate::currentDate().year() - 3));
-- m_ui->eventsLimitCombo->setDate(QDate::fromString(ds, Qt::ISODate));
-- } else {
-- m_ui->eventsLimitCombo->setDate(QDate::fromString(m_settings->eventsSince(), Qt::ISODate));
-- }
--
-- connect(buttonBox, &QDialogButtonBox::accepted, this, &GoogleSettingsDialog::slotSaveSettings);
-- connect(buttonBox, &QDialogButtonBox::rejected, this, &GoogleSettingsDialog::reject);
-- connect(m_ui->reloadCalendarsBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotReloadCalendars);
-- connect(m_ui->reloadTaskListsBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotReloadTaskLists);
-- connect(m_ui->configureBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotConfigure);
-- if (m_settings->isReady()) {
-- m_account = m_settings->accountPtr();
-- }
-- connect(m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
-- if (ready) {
-- m_account = m_settings->accountPtr();
-- accountChanged();
-- }
-- });
-- QMetaObject::invokeMethod(this, &GoogleSettingsDialog::accountChanged, Qt::QueuedConnection);
--}
--
--GoogleSettingsDialog::~GoogleSettingsDialog()
--{
-- delete m_ui;
--}
--
--bool GoogleSettingsDialog::handleError(KGAPI2::Job *job)
--{
-- if ((job->error() == KGAPI2::NoError) || (job->error() == KGAPI2::OK)) {
-- return true;
-- }
--
-- if (job->error() == KGAPI2::Unauthorized) {
-- qCDebug(GOOGLE_LOG) << job << job->errorString();
-- const QList<QUrl> resourceScopes = m_resource->scopes();
-- for (const QUrl &scope : resourceScopes) {
-- if (!m_account->scopes().contains(scope)) {
-- m_account->addScope(scope);
-- }
-- }
--
-- auto authJob = new AuthJob(m_account, m_settings->clientId(), m_settings->clientSecret(), this);
-- authJob->setProperty(JOB_PROPERTY, QVariant::fromValue(job));
-- connect(authJob, &AuthJob::finished, this, &GoogleSettingsDialog::slotAuthJobFinished);
--
-- return false;
-- }
--
-- KMessageBox::error(this, job->errorString());
-- return false;
--}
--
--void GoogleSettingsDialog::accountChanged()
--{
-- if (!m_account) {
-- m_ui->accountLabel->setText(i18n("<b>not configured</b>"));
-- m_ui->calendarsList->setDisabled(true);
-- m_ui->reloadCalendarsBtn->setDisabled(true);
-- m_ui->calendarsList->clear();
-- m_ui->taskListsList->setDisabled(true);
-- m_ui->reloadTaskListsBtn->setDisabled(true);
-- m_ui->taskListsList->clear();
-- return;
-- }
-- m_ui->accountLabel->setText(QStringLiteral("<b>%1</b>").arg(m_account->accountName()));
-- slotReloadCalendars();
-- slotReloadTaskLists();
--}
--
--void GoogleSettingsDialog::slotConfigure()
--{
-- const QString username = m_account && !m_account->accountName().isEmpty() ? m_account->accountName() : QString();
-- m_account = AccountPtr(new Account());
-- const QList<QUrl> resourceScopes = m_resource->scopes();
-- for (const QUrl &scope : resourceScopes) {
-- if (!m_account->scopes().contains(scope)) {
-- m_account->addScope(scope);
-- }
-- }
-- auto authJob = new AuthJob(m_account, m_settings->clientId(), m_settings->clientSecret());
-- authJob->setUsername(username);
-- connect(authJob, &AuthJob::finished, this, &GoogleSettingsDialog::slotAuthJobFinished);
--}
--
--void GoogleSettingsDialog::slotAuthJobFinished(KGAPI2::Job *job)
--{
-- auto authJob = qobject_cast<AuthJob *>(job);
-- m_account = authJob->account();
-- if (authJob->error() != KGAPI2::NoError) {
-- KMessageBox::error(this, authJob->errorString());
-- return;
-- }
-- accountChanged();
--
-- auto otherJob = job->property(JOB_PROPERTY).value<KGAPI2::Job *>();
-- if (otherJob) {
-- otherJob->setAccount(m_account);
-- otherJob->restart();
-- }
--}
--
--void GoogleSettingsDialog::slotSaveSettings()
--{
-- auto reset = [this] {
-- m_settings->setAccount({});
-- m_settings->setEnableIntervalCheck(m_ui->enableRefresh->isChecked());
-- m_settings->setIntervalCheckTime(m_ui->refreshSpinBox->value());
-- m_settings->setCalendars({});
-- m_settings->setTaskLists({});
-- m_settings->setEventsSince({});
-- m_settings->save();
-- };
--
-- if (!m_account) {
-- reset();
-- return;
-- }
--
-- auto writeJob = m_settings->storeAccount(m_account);
-- connect(writeJob, &WritePasswordJob::finished, this, [this, reset, writeJob]() {
-- if (writeJob->error()) {
-- qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
-- reset();
-- return;
-- }
--
-- m_settings->setAccount(m_account->accountName());
-- m_settings->setEnableIntervalCheck(m_ui->enableRefresh->isChecked());
-- m_settings->setIntervalCheckTime(m_ui->refreshSpinBox->value());
--
-- QStringList calendars;
-- for (int i = 0; i < m_ui->calendarsList->count(); i++) {
-- QListWidgetItem *item = m_ui->calendarsList->item(i);
--
-- if (item->checkState() == Qt::Checked) {
-- calendars.append(item->data(Qt::UserRole).toString());
-- }
-- }
-- m_settings->setCalendars(calendars);
--
-- if (m_ui->eventsLimitCombo->isValid()) {
-- m_settings->setEventsSince(m_ui->eventsLimitCombo->date().toString(Qt::ISODate));
-- }
--
-- QStringList taskLists;
-- for (int i = 0; i < m_ui->taskListsList->count(); i++) {
-- QListWidgetItem *item = m_ui->taskListsList->item(i);
--
-- if (item->checkState() == Qt::Checked) {
-- taskLists.append(item->data(Qt::UserRole).toString());
-- }
-- }
-- m_settings->setTaskLists(taskLists);
-- m_settings->save();
--
-- accept();
-- });
--}
--
--void GoogleSettingsDialog::slotReloadCalendars()
--{
-- m_ui->calendarsList->setDisabled(true);
-- m_ui->reloadCalendarsBtn->setDisabled(true);
-- m_ui->calendarsList->clear();
--
-- if (!m_account) {
-- return;
-- }
--
-- auto fetchJob = new CalendarFetchJob(m_account, this);
-- connect(fetchJob, &CalendarFetchJob::finished, this, [this](KGAPI2::Job *job) {
-- if (!handleError(job) || !m_account) {
-- m_ui->calendarsList->setEnabled(false);
-- m_ui->reloadCalendarsBtn->setEnabled(false);
-- return;
-- }
--
-- const ObjectsList objects = qobject_cast<FetchJob *>(job)->items();
--
-- QStringList activeCalendars;
-- if (m_account->accountName() == m_settings->account()) {
-- activeCalendars = m_settings->calendars();
-- }
-- m_ui->calendarsList->clear();
-- for (const ObjectPtr &object : objects) {
-- const CalendarPtr calendar = object.dynamicCast<Calendar>();
--
-- auto item = new QListWidgetItem(calendar->title());
-- item->setData(Qt::UserRole, calendar->uid());
-- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
-- item->setCheckState((activeCalendars.isEmpty() || activeCalendars.contains(calendar->uid())) ? Qt::Checked : Qt::Unchecked);
-- m_ui->calendarsList->addItem(item);
-- }
--
-- m_ui->calendarsList->setEnabled(true);
-- m_ui->reloadCalendarsBtn->setEnabled(true);
-- });
--}
--
--void GoogleSettingsDialog::slotReloadTaskLists()
--{
-- if (!m_account) {
-- return;
-- }
--
-- m_ui->taskListsList->setDisabled(true);
-- m_ui->reloadTaskListsBtn->setDisabled(true);
-- m_ui->taskListsList->clear();
--
-- auto job = new TaskListFetchJob(m_account, this);
-- connect(job, &TaskListFetchJob::finished, this, [this](KGAPI2::Job *job) {
-- if (!handleError(job) || !m_account) {
-- m_ui->taskListsList->setDisabled(true);
-- m_ui->reloadTaskListsBtn->setDisabled(true);
-- return;
-- }
--
-- const ObjectsList objects = qobject_cast<FetchJob *>(job)->items();
--
-- QStringList activeTaskLists;
-- if (m_account->accountName() == m_settings->account()) {
-- activeTaskLists = m_settings->taskLists();
-- }
-- m_ui->taskListsList->clear();
-- for (const ObjectPtr &object : objects) {
-- const TaskListPtr taskList = object.dynamicCast<TaskList>();
--
-- auto item = new QListWidgetItem(taskList->title());
-- item->setData(Qt::UserRole, taskList->uid());
-- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
-- item->setCheckState((activeTaskLists.isEmpty() || activeTaskLists.contains(taskList->uid())) ? Qt::Checked : Qt::Unchecked);
-- m_ui->taskListsList->addItem(item);
-- }
--
-- m_ui->taskListsList->setEnabled(true);
-- m_ui->reloadTaskListsBtn->setEnabled(true);
-- });
--}
-diff --git a/resources/google-groupware/googlesettingswidget.cpp b/resources/google-groupware/googlesettingswidget.cpp
-new file mode 100644
-index 000000000..2543c4c6b
---- /dev/null
-+++ b/resources/google-groupware/googlesettingswidget.cpp
-@@ -0,0 +1,288 @@
-+/*
-+ SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil at redhat.com>
-+ SPDX-FileCopyrightText: 2020 Igor Poboiko <igor.poboiko at gmail.com>
-+
-+ SPDX-License-Identifier: GPL-3.0-or-later
-+*/
-+
-+#include "googlesettingswidget.h"
-+#include "googleresource.h"
-+#include "googleresource_debug.h"
-+#include "googlescopes.h"
-+#include "googlesettings.h"
-+
-+#include <QDialogButtonBox>
-+
-+#include <KGAPI/Account>
-+#include <KGAPI/AuthJob>
-+#include <KGAPI/Calendar/Calendar>
-+#include <KGAPI/Calendar/CalendarFetchJob>
-+#include <KGAPI/Tasks/TaskList>
-+#include <KGAPI/Tasks/TaskListFetchJob>
-+#include <KMessageBox>
-+#include <KWindowSystem>
-+
-+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
-+#include <qt5keychain/keychain.h>
-+#else
-+#include <qt6keychain/keychain.h>
-+#endif
-+
-+using namespace QKeychain;
-+using namespace KGAPI2;
-+
-+GoogleSettingsWidget::GoogleSettingsWidget(GoogleSettings &settings, const QString &identifier, QWidget *parent)
-+ : QWidget(parent)
-+ , m_settings(settings)
-+ , m_identifier(identifier)
-+{
-+ qDebug() << m_settings.account();
-+ auto mainLayout = new QVBoxLayout(this);
-+
-+ auto mainWidget = new QWidget(this);
-+ mainLayout->addWidget(mainWidget);
-+ setupUi(mainWidget);
-+
-+ refreshSpinBox->setSuffix(ki18np(" minute", " minutes"));
-+ enableRefresh->setChecked(m_settings.enableIntervalCheck());
-+ refreshSpinBox->setEnabled(m_settings.enableIntervalCheck());
-+ refreshSpinBox->setValue(m_settings.intervalCheckTime());
-+
-+ eventsLimitCombo->setMaximumDate(QDate::currentDate());
-+ eventsLimitCombo->setMinimumDate(QDate::fromString(QStringLiteral("2000-01-01"), Qt::ISODate));
-+ eventsLimitCombo->setOptions(KDateComboBox::EditDate | KDateComboBox::SelectDate | KDateComboBox::DatePicker | KDateComboBox::WarnOnInvalid);
-+ if (m_settings.eventsSince().isEmpty()) {
-+ const QString ds = QStringLiteral("%1-01-01").arg(QString::number(QDate::currentDate().year() - 3));
-+ eventsLimitCombo->setDate(QDate::fromString(ds, Qt::ISODate));
-+ } else {
-+ eventsLimitCombo->setDate(QDate::fromString(m_settings.eventsSince(), Qt::ISODate));
-+ }
-+ connect(reloadCalendarsBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::slotReloadCalendars);
-+ connect(reloadTaskListsBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::slotReloadTaskLists);
-+ connect(configureBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::loadSettings);
-+ if (m_settings.isReady()) {
-+ m_account = m_settings.accountPtr();
-+ }
-+ connect(&m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
-+ if (ready) {
-+ m_account = m_settings.accountPtr();
-+ accountChanged();
-+ }
-+ });
-+ QMetaObject::invokeMethod(this, &GoogleSettingsWidget::accountChanged, Qt::QueuedConnection);
-+}
-+
-+GoogleSettingsWidget::~GoogleSettingsWidget()
-+{
-+}
-+
-+bool GoogleSettingsWidget::handleError(KGAPI2::Job *job)
-+{
-+ if ((job->error() == KGAPI2::NoError) || (job->error() == KGAPI2::OK)) {
-+ return true;
-+ }
-+
-+ if (job->error() == KGAPI2::Unauthorized) {
-+ qCDebug(GOOGLE_LOG) << job << job->errorString();
-+ const QList<QUrl> resourceScopes = googleScopes();
-+ for (const QUrl &scope : resourceScopes) {
-+ if (!m_account->scopes().contains(scope)) {
-+ m_account->addScope(scope);
-+ }
-+ }
-+
-+ auto authJob = new AuthJob(m_account, m_settings.clientId(), m_settings.clientSecret(), this);
-+ authJob->setProperty(JOB_PROPERTY, QVariant::fromValue(job));
-+ connect(authJob, &AuthJob::finished, this, &GoogleSettingsWidget::slotAuthJobFinished);
-+
-+ return false;
-+ }
-+
-+ KMessageBox::error(this, job->errorString());
-+ return false;
-+}
-+
-+void GoogleSettingsWidget::accountChanged()
-+{
-+ if (!m_account) {
-+ accountLabel->setText(i18n("<b>not configured</b>"));
-+ calendarsList->setDisabled(true);
-+ reloadCalendarsBtn->setDisabled(true);
-+ calendarsList->clear();
-+ taskListsList->setDisabled(true);
-+ reloadTaskListsBtn->setDisabled(true);
-+ taskListsList->clear();
-+ return;
-+ }
-+ accountLabel->setText(QStringLiteral("<b>%1</b>").arg(m_account->accountName()));
-+ slotReloadCalendars();
-+ slotReloadTaskLists();
-+}
-+
-+void GoogleSettingsWidget::loadSettings()
-+{
-+ const QString username = m_account && !m_account->accountName().isEmpty() ? m_account->accountName() : QString();
-+ m_account = AccountPtr(new Account());
-+ const QList<QUrl> resourceScopes = googleScopes();
-+ for (const QUrl &scope : resourceScopes) {
-+ if (!m_account->scopes().contains(scope)) {
-+ m_account->addScope(scope);
-+ }
-+ }
-+ auto authJob = new AuthJob(m_account, m_settings.clientId(), m_settings.clientSecret());
-+ authJob->setUsername(username);
-+ connect(authJob, &AuthJob::finished, this, &GoogleSettingsWidget::slotAuthJobFinished);
-+}
-+
-+void GoogleSettingsWidget::slotAuthJobFinished(KGAPI2::Job *job)
-+{
-+ auto authJob = qobject_cast<AuthJob *>(job);
-+ m_account = authJob->account();
-+ if (authJob->error() != KGAPI2::NoError) {
-+ KMessageBox::error(this, authJob->errorString());
-+ return;
-+ }
-+ accountChanged();
-+
-+ auto otherJob = job->property(JOB_PROPERTY).value<KGAPI2::Job *>();
-+ if (otherJob) {
-+ otherJob->setAccount(m_account);
-+ otherJob->restart();
-+ }
-+}
-+
-+void GoogleSettingsWidget::saveSettings()
-+{
-+ auto reset = [this] {
-+ m_settings.setAccount({});
-+ m_settings.setEnableIntervalCheck(enableRefresh->isChecked());
-+ m_settings.setIntervalCheckTime(refreshSpinBox->value());
-+ m_settings.setCalendars({});
-+ m_settings.setTaskLists({});
-+ m_settings.setEventsSince({});
-+ m_settings.save();
-+ };
-+
-+ if (!m_account) {
-+ reset();
-+ return;
-+ }
-+
-+ auto writeJob = m_settings.storeAccount(m_account);
-+ connect(writeJob, &WritePasswordJob::finished, this, [this, reset, writeJob]() {
-+ if (writeJob->error()) {
-+ qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
-+ reset();
-+ return;
-+ }
-+
-+ m_settings.setAccount(m_account->accountName());
-+ m_settings.setEnableIntervalCheck(enableRefresh->isChecked());
-+ m_settings.setIntervalCheckTime(refreshSpinBox->value());
-+
-+ QStringList calendars;
-+ for (int i = 0; i < calendarsList->count(); i++) {
-+ QListWidgetItem *item = calendarsList->item(i);
-+
-+ if (item->checkState() == Qt::Checked) {
-+ calendars.append(item->data(Qt::UserRole).toString());
-+ }
-+ }
-+ m_settings.setCalendars(calendars);
-+
-+ if (eventsLimitCombo->isValid()) {
-+ m_settings.setEventsSince(eventsLimitCombo->date().toString(Qt::ISODate));
-+ }
-+
-+ QStringList taskLists;
-+ for (int i = 0; i < taskListsList->count(); i++) {
-+ QListWidgetItem *item = taskListsList->item(i);
-+
-+ if (item->checkState() == Qt::Checked) {
-+ taskLists.append(item->data(Qt::UserRole).toString());
-+ }
-+ }
-+ m_settings.setTaskLists(taskLists);
-+ m_settings.save();
-+ });
-+}
-+
-+void GoogleSettingsWidget::slotReloadCalendars()
-+{
-+ calendarsList->setDisabled(true);
-+ reloadCalendarsBtn->setDisabled(true);
-+ calendarsList->clear();
-+
-+ if (!m_account) {
-+ return;
-+ }
-+
-+ auto fetchJob = new CalendarFetchJob(m_account, this);
-+ connect(fetchJob, &CalendarFetchJob::finished, this, [this](KGAPI2::Job *job) {
-+ if (!handleError(job) || !m_account) {
-+ calendarsList->setEnabled(false);
-+ reloadCalendarsBtn->setEnabled(false);
-+ return;
-+ }
-+
-+ const ObjectsList objects = qobject_cast<FetchJob *>(job)->items();
-+
-+ QStringList activeCalendars;
-+ if (m_account->accountName() == m_settings.account()) {
-+ activeCalendars = m_settings.calendars();
-+ }
-+ calendarsList->clear();
-+ for (const ObjectPtr &object : objects) {
-+ const CalendarPtr calendar = object.dynamicCast<Calendar>();
-+
-+ auto item = new QListWidgetItem(calendar->title());
-+ item->setData(Qt::UserRole, calendar->uid());
-+ item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
-+ item->setCheckState((activeCalendars.isEmpty() || activeCalendars.contains(calendar->uid())) ? Qt::Checked : Qt::Unchecked);
-+ calendarsList->addItem(item);
-+ }
-+
-+ calendarsList->setEnabled(true);
-+ reloadCalendarsBtn->setEnabled(true);
-+ });
-+}
-+
-+void GoogleSettingsWidget::slotReloadTaskLists()
-+{
-+ if (!m_account) {
-+ return;
-+ }
-+
-+ taskListsList->setDisabled(true);
-+ reloadTaskListsBtn->setDisabled(true);
-+ taskListsList->clear();
-+
-+ auto job = new TaskListFetchJob(m_account, this);
-+ connect(job, &TaskListFetchJob::finished, this, [this](KGAPI2::Job *job) {
-+ if (!handleError(job) || !m_account) {
-+ taskListsList->setDisabled(true);
-+ reloadTaskListsBtn->setDisabled(true);
-+ return;
-+ }
-+
-+ const ObjectsList objects = qobject_cast<FetchJob *>(job)->items();
-+
-+ QStringList activeTaskLists;
-+ if (m_account->accountName() == m_settings.account()) {
-+ activeTaskLists = m_settings.taskLists();
-+ }
-+ taskListsList->clear();
-+ for (const ObjectPtr &object : objects) {
-+ const TaskListPtr taskList = object.dynamicCast<TaskList>();
-+
-+ auto item = new QListWidgetItem(taskList->title());
-+ item->setData(Qt::UserRole, taskList->uid());
-+ item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
-+ item->setCheckState((activeTaskLists.isEmpty() || activeTaskLists.contains(taskList->uid())) ? Qt::Checked : Qt::Unchecked);
-+ taskListsList->addItem(item);
-+ }
-+
-+ taskListsList->setEnabled(true);
-+ reloadTaskListsBtn->setEnabled(true);
-+ });
-+}
-diff --git a/resources/google-groupware/googlesettingsdialog.h b/resources/google-groupware/googlesettingswidget.h
-similarity index 53%
-rename from resources/google-groupware/googlesettingsdialog.h
-rename to resources/google-groupware/googlesettingswidget.h
-index a7d6ca0c9..4226a39d2 100644
---- a/resources/google-groupware/googlesettingsdialog.h
-+++ b/resources/google-groupware/googlesettingswidget.h
-@@ -7,40 +7,37 @@
-
- #pragma once
-
-+#include "googlesettings.h"
-+#include "ui_googlesettingswidget.h"
- #include <KGAPI/Types>
--#include <QDialog>
-
--namespace Ui
--{
--class GoogleSettingsDialog;
--}
- namespace KGAPI2
- {
- class Job;
- }
--class GoogleResource;
--class GoogleSettings;
--
--class GoogleSettingsDialog : public QDialog
-+class GoogleSettingsWidget : public QWidget, private Ui::GoogleSettingsWidget
- {
- Q_OBJECT
- public:
-- explicit GoogleSettingsDialog(GoogleResource *resource, GoogleSettings *settings, WId wId);
-- ~GoogleSettingsDialog() override;
-+ explicit GoogleSettingsWidget(GoogleSettings &settings, const QString &identifier, QWidget *parent);
-+ ~GoogleSettingsWidget() override;
-+
-+ void loadSettings();
-+ void saveSettings();
-+
-+Q_SIGNALS:
-+ void okEnabled(bool enabled);
-
- protected:
- bool handleError(KGAPI2::Job *job);
- void accountChanged();
-
- private:
-- void slotConfigure();
- void slotAuthJobFinished(KGAPI2::Job *job);
-- void slotSaveSettings();
- void slotReloadCalendars();
- void slotReloadTaskLists();
-
-- GoogleResource *const m_resource;
-- GoogleSettings *const m_settings;
-- Ui::GoogleSettingsDialog *const m_ui;
-+ GoogleSettings &m_settings;
- KGAPI2::AccountPtr m_account;
-+ const QString m_identifier;
- };
-diff --git a/resources/google-groupware/googlesettingsdialog.ui b/resources/google-groupware/googlesettingswidget.ui
-similarity index 99%
-rename from resources/google-groupware/googlesettingsdialog.ui
-rename to resources/google-groupware/googlesettingswidget.ui
-index 9ff9bc93b..75fdfd24f 100644
---- a/resources/google-groupware/googlesettingsdialog.ui
-+++ b/resources/google-groupware/googlesettingswidget.ui
-@@ -1,6 +1,6 @@
- <?xml version="1.0" encoding="UTF-8"?>
- <ui version="4.0">
-- <class>GoogleSettingsDialog</class>
-+ <class>GoogleSettingsWidget</class>
- <widget class="QWidget" name="GoogleSettingsDialog">
- <property name="geometry">
- <rect>
-diff --git a/resources/google-groupware/settingsbase.kcfg b/resources/google-groupware/settingsbase.kcfg
-index ac58395d7..7dfe8dfe9 100644
---- a/resources/google-groupware/settingsbase.kcfg
-+++ b/resources/google-groupware/settingsbase.kcfg
-@@ -4,7 +4,7 @@
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
- http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
-- <kcfgfile/>
-+ <kcfgfile arg="true"/>
- <group name="General">
- <entry name="Account" type="String">
- </entry>
diff --git a/debian/patches/carl2.diff b/debian/patches/carl2.diff
deleted file mode 100644
index 852d836..0000000
--- a/debian/patches/carl2.diff
+++ /dev/null
@@ -1,54 +0,0 @@
-commit 2fd3604ad6a9594b9dd8b0f1529f4f4589fe831f
-Author: Carl Schwan <carl at carlschwan.eu>
-Date: Tue Sep 19 17:04:36 2023 +0200
-
- Revert "Revert "Fix race condition when building""
-
- This reverts commit d3f20b3dab530065f9cff9d73e4ca1076af55a29.
-
- (cherry picked from commit f9f262b9289f7b1c34e55205fa0c5cde915bc652)
-
-diff --git a/resources/google-groupware/CMakeLists.txt b/resources/google-groupware/CMakeLists.txt
-index 2f2b46ade..0ac6f2db8 100644
---- a/resources/google-groupware/CMakeLists.txt
-+++ b/resources/google-groupware/CMakeLists.txt
-@@ -67,9 +67,6 @@ set(googleresource_SRCS
- ${googleresource_common_SRCS}
- )
-
--ki18n_wrap_ui(googleresource_SRCS googlesettingswidget.ui)
--
--
- add_executable(akonadi_google_resource ${googleresource_SRCS})
- if (COMPILE_WITH_UNITY_CMAKE_SUPPORT)
- set_target_properties(akonadi_google_resource PROPERTIES UNITY_BUILD ON)
-@@ -126,6 +123,7 @@ install(
- kcoreaddons_add_plugin(googleconfig
- INSTALL_NAMESPACE "pim${QT_MAJOR_VERSION}/akonadi/config"
- )
-+
- target_sources(googleconfig
- PRIVATE
- googleconfig.cpp
-@@ -133,6 +131,9 @@ PRIVATE
- googlesettingswidget.h
- ${googleresource_common_SRCS}
- )
-+
-+ki18n_wrap_ui(googleconfig googlesettingswidget.ui)
-+
- target_link_libraries(googleconfig
- KPim${KF_MAJOR_VERSION}::AkonadiCore
- KPim${KF_MAJOR_VERSION}::AkonadiCalendar
-diff --git a/resources/google-groupware/googleresource.cpp b/resources/google-groupware/googleresource.cpp
-index 47a7e0c8d..d51c1e4a7 100644
---- a/resources/google-groupware/googleresource.cpp
-+++ b/resources/google-groupware/googleresource.cpp
-@@ -11,7 +11,6 @@
- #include "googleresourcestate.h"
- #include "googlescopes.h"
- #include "googlesettings.h"
--#include "googlesettingswidget.h"
- #include "settingsadaptor.h"
-
- #include "personhandler.h"
diff --git a/debian/patches/carl3.diff b/debian/patches/carl3.diff
deleted file mode 100644
index 455ca06..0000000
--- a/debian/patches/carl3.diff
+++ /dev/null
@@ -1,113 +0,0 @@
-commit c99afc75a503fff6ca83df2f47a5d5d951579524
-Author: Carl Schwan <carl at carlschwan.eu>
-Date: Tue Sep 19 18:58:54 2023 +0200
-
- Actually start job to read secret key
-
- BUG: 470820
- (cherry picked from commit 8393e92d56ecb31b2dd65d15d046f8e02565f5e3)
-
-diff --git a/resources/google-groupware/googleconfig.cpp b/resources/google-groupware/googleconfig.cpp
-index 2eb6ab2ef..1af177c81 100644
---- a/resources/google-groupware/googleconfig.cpp
-+++ b/resources/google-groupware/googleconfig.cpp
-@@ -6,6 +6,7 @@
-
- #include <Akonadi/AgentConfigurationBase>
-
-+#include "googleresource_debug.h"
- #include "googlesettings.h"
- #include "googlesettingswidget.h"
-
-@@ -25,7 +26,12 @@ public:
- void load() override
- {
- Akonadi::AgentConfigurationBase::load();
-- mWidget.loadSettings();
-+ mSettings.init();
-+ connect(&mSettings, &GoogleSettings::accountReady, this, [this](bool ready) {
-+ if (ready) {
-+ mWidget.loadSettings();
-+ }
-+ });
- }
-
- Q_REQUIRED_RESULT bool save() const override
-diff --git a/resources/google-groupware/googlesettings.cpp b/resources/google-groupware/googlesettings.cpp
-index aa94cad1a..23a997989 100644
---- a/resources/google-groupware/googlesettings.cpp
-+++ b/resources/google-groupware/googlesettings.cpp
-@@ -32,7 +32,6 @@ static const QString googleWalletFolder = QStringLiteral("Akonadi Google");
- GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
- : SettingsBase(config)
- {
-- qDebug() << config;
- if (options & Option::ExportToDBus) {
- new SettingsAdaptor(this);
- QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"),
-@@ -44,9 +43,11 @@ GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
- void GoogleSettings::init()
- {
- // First read from QtKeyChain
-- auto job = new QKeychain::ReadPasswordJob(googleWalletFolder);
-+ auto job = new QKeychain::ReadPasswordJob(googleWalletFolder, this);
-+ job->setKey(account());
- connect(job, &QKeychain::Job::finished, this, [this, job]() {
- if (job->error() != QKeychain::Error::NoError) {
-+ qCWarning(GOOGLE_LOG) << "Unable to read password" << job->error();
- Q_EMIT accountReady(false);
- return;
- }
-@@ -54,18 +55,19 @@ void GoogleSettings::init()
- // Found something with QtKeyChain
- if (!account().isEmpty()) {
- m_account = fetchAccountFromKeychain(account(), job);
-+ m_isReady = true;
-+ Q_EMIT accountReady(true);
- }
-- m_isReady = true;
-- Q_EMIT accountReady(true);
- });
-+ job->start();
- }
-
- KGAPI2::AccountPtr GoogleSettings::fetchAccountFromKeychain(const QString &accountName, QKeychain::ReadPasswordJob *job)
- {
- QMap<QString, QString> map;
- auto value = job->binaryData();
-- if (!value.isEmpty()) {
-- qCDebug(GOOGLE_LOG) << "Account" << accountName << "not found in KWallet";
-+ if (value.isEmpty()) {
-+ qCWarning(GOOGLE_LOG) << "Account" << accountName << "not found in KWallet";
- return {};
- }
-
-@@ -116,6 +118,7 @@ WritePasswordJob *GoogleSettings::storeAccount(AccountPtr account)
-
- connect(writeJob, &WritePasswordJob::finished, this, [this, writeJob]() {
- if (writeJob->error()) {
-+ qCWarning(GOOGLE_LOG) << "Unable to write password" << writeJob->error();
- return;
- }
- SettingsBase::setAccount(m_account->accountName());
-diff --git a/resources/google-groupware/googlesettingswidget.cpp b/resources/google-groupware/googlesettingswidget.cpp
-index 2543c4c6b..8e84cfbab 100644
---- a/resources/google-groupware/googlesettingswidget.cpp
-+++ b/resources/google-groupware/googlesettingswidget.cpp
-@@ -36,7 +36,6 @@ GoogleSettingsWidget::GoogleSettingsWidget(GoogleSettings &settings, const QStri
- , m_settings(settings)
- , m_identifier(identifier)
- {
-- qDebug() << m_settings.account();
- auto mainLayout = new QVBoxLayout(this);
-
- auto mainWidget = new QWidget(this);
-@@ -83,7 +82,7 @@ bool GoogleSettingsWidget::handleError(KGAPI2::Job *job)
- }
-
- if (job->error() == KGAPI2::Unauthorized) {
-- qCDebug(GOOGLE_LOG) << job << job->errorString();
-+ qWarning() << job << job->errorString();
- const QList<QUrl> resourceScopes = googleScopes();
- for (const QUrl &scope : resourceScopes) {
- if (!m_account->scopes().contains(scope)) {
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index d4b97d1..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1,3 +0,0 @@
-carl1.diff
-carl2.diff
-carl3.diff
More information about the Neon-commits
mailing list