File indexing completed on 2024-05-12 05:25:34

0001 /*
0002    SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "pimdataexporterkernel.h"
0008 
0009 #include <KContacts/Addressee>
0010 #include <KContacts/ContactGroup>
0011 
0012 #include <Akonadi/ChangeRecorder>
0013 #include <Akonadi/EntityMimeTypeFilterModel>
0014 #include <Akonadi/EntityTreeModel>
0015 #include <Akonadi/NoteUtils>
0016 #include <Akonadi/Session>
0017 #include <KCalendarCore/Event>
0018 #include <KCalendarCore/Todo>
0019 #include <KIdentityManagementCore/IdentityManager>
0020 #include <KSharedConfig>
0021 #include <MailCommon/FolderCollectionMonitor>
0022 #include <MessageComposer/AkonadiSender>
0023 
0024 // Same element as kalarmcal
0025 const QLatin1StringView MIME_ACTIVE("application/x-vnd.kde.alarm.active");
0026 const QLatin1StringView MIME_ARCHIVED("application/x-vnd.kde.alarm.archived");
0027 const QLatin1StringView MIME_TEMPLATE("application/x-vnd.kde.alarm.template");
0028 
0029 PimDataExporterKernel::PimDataExporterKernel(QObject *parent)
0030     : QObject(parent)
0031 {
0032     mIdentityManager = KIdentityManagementCore::IdentityManager::self();
0033     auto session = new Akonadi::Session("Backup Mail Kernel ETM", this);
0034 
0035     mFolderCollectionMonitor = new MailCommon::FolderCollectionMonitor(session, this);
0036     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(KContacts::Addressee::mimeType(), true);
0037     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(KContacts::ContactGroup::mimeType(), true);
0038     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(KCalendarCore::Todo::todoMimeType(), true);
0039     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(KCalendarCore::Event::eventMimeType(), true);
0040     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(Akonadi::NoteUtils::noteMimeType(), true);
0041     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(MIME_ACTIVE);
0042     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(MIME_ARCHIVED);
0043     mFolderCollectionMonitor->monitor()->setMimeTypeMonitored(MIME_TEMPLATE);
0044 
0045     mEntityTreeModel = new Akonadi::EntityTreeModel(folderCollectionMonitor(), this);
0046     mEntityTreeModel->setListFilter(Akonadi::CollectionFetchScope::Enabled);
0047     mEntityTreeModel->setItemPopulationStrategy(Akonadi::EntityTreeModel::LazyPopulation);
0048 
0049     mCollectionModel = new Akonadi::EntityMimeTypeFilterModel(this);
0050     mCollectionModel->setSourceModel(mEntityTreeModel);
0051     mCollectionModel->addMimeTypeInclusionFilter(Akonadi::Collection::mimeType());
0052     mCollectionModel->setHeaderGroup(Akonadi::EntityTreeModel::CollectionTreeHeaders);
0053     mCollectionModel->setDynamicSortFilter(true);
0054     mCollectionModel->setSortCaseSensitivity(Qt::CaseInsensitive);
0055 }
0056 
0057 KIdentityManagementCore::IdentityManager *PimDataExporterKernel::identityManager()
0058 {
0059     return mIdentityManager;
0060 }
0061 
0062 MessageComposer::MessageSender *PimDataExporterKernel::msgSender()
0063 {
0064     Q_ASSERT(false);
0065     return nullptr;
0066 }
0067 
0068 Akonadi::EntityMimeTypeFilterModel *PimDataExporterKernel::collectionModel() const
0069 {
0070     return mCollectionModel;
0071 }
0072 
0073 KSharedConfig::Ptr PimDataExporterKernel::config()
0074 {
0075     return KSharedConfig::openConfig();
0076 }
0077 
0078 void PimDataExporterKernel::syncConfig()
0079 {
0080     Q_ASSERT(false);
0081 }
0082 
0083 MailCommon::JobScheduler *PimDataExporterKernel::jobScheduler() const
0084 {
0085     Q_ASSERT(false);
0086     return nullptr;
0087 }
0088 
0089 Akonadi::ChangeRecorder *PimDataExporterKernel::folderCollectionMonitor() const
0090 {
0091     return mFolderCollectionMonitor->monitor();
0092 }
0093 
0094 void PimDataExporterKernel::updateSystemTray()
0095 {
0096     Q_ASSERT(false);
0097 }
0098 
0099 bool PimDataExporterKernel::showPopupAfterDnD()
0100 {
0101     return false;
0102 }
0103 
0104 qreal PimDataExporterKernel::closeToQuotaThreshold()
0105 {
0106     return 80;
0107 }
0108 
0109 QStringList PimDataExporterKernel::customTemplates()
0110 {
0111     Q_ASSERT(false);
0112     return {};
0113 }
0114 
0115 bool PimDataExporterKernel::excludeImportantMailFromExpiry()
0116 {
0117     Q_ASSERT(false);
0118     return true;
0119 }
0120 
0121 Akonadi::Collection::Id PimDataExporterKernel::lastSelectedFolder()
0122 {
0123     Q_ASSERT(false);
0124     return Akonadi::Collection::Id();
0125 }
0126 
0127 void PimDataExporterKernel::setLastSelectedFolder(Akonadi::Collection::Id col)
0128 {
0129     Q_UNUSED(col)
0130 }
0131 
0132 void PimDataExporterKernel::expunge(Akonadi::Collection::Id col, bool sync)
0133 {
0134     Q_UNUSED(col)
0135     Q_UNUSED(sync)
0136 }