File indexing completed on 2025-03-16 11:17:27
0001 // SPDX-FileCopyrightText: 2021 Carl Schwan <carlschwan@kde.org> 0002 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0003 // SPDX-License-Identifier: LGPL-2.0-or-later 0004 0005 #include "mailaccounts.h" 0006 0007 #include <Akonadi/AgentInstanceModel> 0008 #include <Akonadi/AgentFilterProxyModel> 0009 #include <Akonadi/AgentConfigurationDialog> 0010 #include <KMime/Message> 0011 0012 MailAccounts::MailAccounts(QObject *parent) 0013 : QObject{parent} 0014 { 0015 } 0016 0017 Akonadi::AgentFilterProxyModel *MailAccounts::runningMailAgents() 0018 { 0019 if (m_runningMailAgents) { 0020 return m_runningMailAgents; 0021 } 0022 0023 auto agentInstanceModel = new Akonadi::AgentInstanceModel(this); 0024 m_runningMailAgents = new Akonadi::AgentFilterProxyModel(this); 0025 0026 m_runningMailAgents->addMimeTypeFilter(KMime::Message::mimeType()); 0027 m_runningMailAgents->setSourceModel(agentInstanceModel); 0028 m_runningMailAgents->addCapabilityFilter(QStringLiteral("Resource")); 0029 m_runningMailAgents->excludeCapabilities(QStringLiteral("MailTransport")); 0030 m_runningMailAgents->excludeCapabilities(QStringLiteral("Notes")); 0031 return m_runningMailAgents; 0032 } 0033 0034 void MailAccounts::remove(int index) 0035 { 0036 Akonadi::AgentManager::self()->removeInstance(instanceFromIndex(index)); 0037 } 0038 0039 void MailAccounts::openConfigWindow(int index) 0040 { 0041 auto agentInstance = instanceFromIndex(index); 0042 0043 if (agentInstance.isValid()) { 0044 Akonadi::AgentConfigurationDialog *dlg = new Akonadi::AgentConfigurationDialog(agentInstance); 0045 dlg->exec(); 0046 delete dlg; 0047 } 0048 } 0049 0050 Akonadi::AgentInstance MailAccounts::instanceFromIndex(int index) 0051 { 0052 return runningMailAgents()->data(runningMailAgents()->index(index, 0), Akonadi::AgentInstanceModel::InstanceRole).value<Akonadi::AgentInstance>(); 0053 }