File indexing completed on 2024-06-23 05:17:49
0001 /* 0002 SPDX-FileCopyrightText: 2007 Till Adam <adam@kde.org> 0003 SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #pragma once 0009 0010 #include "mailcommon_export.h" 0011 0012 #include <KSharedConfig> 0013 #include <QUrl> 0014 0015 #include <QList> 0016 #include <QStringList> 0017 #include <memory> 0018 class QWidget; 0019 0020 namespace MailCommon 0021 { 0022 class MailFilter; 0023 0024 /** 0025 * @short Utility class that provides persisting of filters to/from KConfig. 0026 * 0027 * @author Till Adam <till@kdab.net> 0028 */ 0029 class MAILCOMMON_EXPORT FilterImporterExporter 0030 { 0031 public: 0032 enum FilterType { 0033 KMailFilter = 0, 0034 ThunderBirdFilter = 1, 0035 EvolutionFilter = 2, 0036 SylpheedFilter = 3, 0037 ProcmailFilter = 4, 0038 BalsaFilter = 5, 0039 ClawsMailFilter = 6, 0040 IcedoveFilter = 7, 0041 GmailFilter = 8, 0042 SeaMonkeyFilter = 9, 0043 }; 0044 0045 /** 0046 * Creates a new filter importer/exporter. 0047 * 0048 * @param parent The parent widget. 0049 */ 0050 explicit FilterImporterExporter(QWidget *parent = nullptr); 0051 0052 /** 0053 * Destroys the filter importer/exporter. 0054 */ 0055 virtual ~FilterImporterExporter(); 0056 0057 /** 0058 * Exports the given @p filters to a file which 0059 * is asked from the user. The list to export is also 0060 * presented for confirmation/selection. 0061 */ 0062 void exportFilters(const QList<MailFilter *> &filters, const QUrl &fileName = QUrl(), bool saveAll = false); 0063 0064 /** 0065 * Imports filters. Ask the user where to import them from 0066 * and which filters to import. 0067 */ 0068 [[nodiscard]] QList<MailFilter *> 0069 importFilters(bool &canceled, FilterImporterExporter::FilterType type = FilterImporterExporter::KMailFilter, const QString &filename = QString()); 0070 0071 /** 0072 * Writes the given list of @p filters to the given @p config file. 0073 */ 0074 static void writeFiltersToConfig(const QList<MailFilter *> &filters, KSharedConfig::Ptr config, bool exportFilter = false); 0075 0076 /** 0077 * Reads a list of filters from the given @p config file. 0078 * Return list of empty filter 0079 */ 0080 static QList<MailFilter *> readFiltersFromConfig(const KSharedConfig::Ptr &config, QStringList &emptyFilter); 0081 0082 private: 0083 //@cond PRIVATE 0084 Q_DISABLE_COPY(FilterImporterExporter) 0085 0086 class FilterImporterExporterPrivate; 0087 std::unique_ptr<FilterImporterExporterPrivate> const d; 0088 //@endcond 0089 }; 0090 }