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 }