1 /*
2    SPDX-FileCopyrightText: 2012-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "abstractimporter.h"
8 #include "abstractdisplayinfo.h"
9 
10 #include <MailCommon/FilterManager>
11 #include <MailImporter/FilterInfo>
12 #include <MailImporterAkonadi/FilterImporterAkonadi>
13 
14 #include <QFile>
15 #include <QFileInfo>
16 
17 using namespace LibImportWizard;
18 
AbstractImporter(QObject * parent)19 AbstractImporter::AbstractImporter(QObject *parent)
20     : QObject(parent)
21 {
22 }
23 
~AbstractImporter()24 AbstractImporter::~AbstractImporter()
25 {
26 }
27 
importSettings()28 bool AbstractImporter::importSettings()
29 {
30     return false;
31 }
32 
importMails()33 bool AbstractImporter::importMails()
34 {
35     return false;
36 }
37 
importFilters()38 bool AbstractImporter::importFilters()
39 {
40     return false;
41 }
42 
importAddressBook()43 bool AbstractImporter::importAddressBook()
44 {
45     return false;
46 }
47 
importCalendar()48 bool AbstractImporter::importCalendar()
49 {
50     return false;
51 }
52 
initializeFilter(MailImporter::Filter & filter)53 void AbstractImporter::initializeFilter(MailImporter::Filter &filter)
54 {
55     Q_ASSERT_X(mAbstractDisplayInfo, __FUNCTION__, "mAbstractDisplayInfo is not setting");
56     mAbstractDisplayInfo->initializeFilter(filter);
57 }
58 
addFilters(const QString & filterPath,MailCommon::FilterImporterExporter::FilterType type)59 bool AbstractImporter::addFilters(const QString &filterPath, MailCommon::FilterImporterExporter::FilterType type)
60 {
61     if (QFileInfo::exists(filterPath)) {
62         bool canceled = false;
63         MailCommon::FilterImporterExporter importer(mAbstractDisplayInfo->parentWidget());
64         QVector<MailCommon::MailFilter *> listFilter = importer.importFilters(canceled, type, filterPath);
65         appendFilters(listFilter);
66         if (canceled) {
67             addImportFilterInfo(i18n("Importing of filters from \"%1\" was canceled.", filterPath));
68         } else {
69             addImportFilterInfo(i18np("1 filter was imported from \"%2\"", "%1 filters were imported from \"%2\"", listFilter.count(), filterPath));
70         }
71         return true;
72     } else {
73         addImportFilterError(i18n("Filters file was not found"));
74         return true;
75     }
76 }
77 
appendFilters(const QVector<MailCommon::MailFilter * > & filters)78 void AbstractImporter::appendFilters(const QVector<MailCommon::MailFilter *> &filters)
79 {
80     if (!filters.isEmpty()) {
81         MailCommon::FilterManager::instance()->appendFilters(filters, false);
82     }
83 }
84 
addImportFilterInfo(const QString & log) const85 void AbstractImporter::addImportFilterInfo(const QString &log) const
86 {
87     Q_ASSERT_X(mAbstractDisplayInfo, __FUNCTION__, "mAbstractDisplayInfo is not setting");
88     if (mAbstractDisplayInfo) {
89         mAbstractDisplayInfo->filterImportInfo(log);
90     }
91 }
92 
addImportFilterError(const QString & log) const93 void AbstractImporter::addImportFilterError(const QString &log) const
94 {
95     Q_ASSERT_X(mAbstractDisplayInfo, __FUNCTION__, "mAbstractDisplayInfo is not setting");
96     if (mAbstractDisplayInfo) {
97         mAbstractDisplayInfo->filterImportError(log);
98     }
99 }
100 
addImportSettingsInfo(const QString & log) const101 void AbstractImporter::addImportSettingsInfo(const QString &log) const
102 {
103     Q_ASSERT_X(mAbstractDisplayInfo, __FUNCTION__, "mAbstractDisplayInfo is not setting");
104     if (mAbstractDisplayInfo) {
105         mAbstractDisplayInfo->settingsImportInfo(log);
106     }
107 }
108 
addImportCalendarInfo(const QString & log) const109 void AbstractImporter::addImportCalendarInfo(const QString &log) const
110 {
111     Q_ASSERT_X(mAbstractDisplayInfo, __FUNCTION__, "mAbstractDisplayInfo is not setting");
112     if (mAbstractDisplayInfo) {
113         mAbstractDisplayInfo->calendarImportInfo(log);
114     }
115 }
116 
setAbstractDisplayInfo(AbstractDisplayInfo * info)117 void AbstractImporter::setAbstractDisplayInfo(AbstractDisplayInfo *info)
118 {
119     mAbstractDisplayInfo = info;
120 }
121