File indexing completed on 2024-09-22 04:50:01
0001 /* 0002 * SPDX-FileCopyrightText: 1996-1998 Stefan Taferner <taferner@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 * 0006 */ 0007 0008 #pragma once 0009 0010 #include "filteraction.h" 0011 0012 namespace MailCommon 0013 { 0014 /** 0015 * @short Abstract base class for filter actions with a mail folder as parameter. 0016 * 0017 * Abstract base class for mail filter actions that need a 0018 * mail folder as parameter, e.g. 'move into folder'. Can 0019 * create a KComboBox as parameter widget. A subclass of this 0020 * must provide at least implementations for the following methods: 0021 * 0022 * @li virtual FilterAction::ReturnCodes FilterAction::process 0023 * @li static FilterAction::newAction 0024 * 0025 * @author Marc Mutz <mutz@kde.org>, based upon work by Stefan Taferner <taferner@kde.org> 0026 * @see FilterActionWithStringList FilterAction Filter 0027 */ 0028 class FilterActionWithFolder : public FilterAction 0029 { 0030 Q_OBJECT 0031 0032 public: 0033 /** 0034 * @copydoc FilterAction::FilterAction 0035 */ 0036 FilterActionWithFolder(const QString &name, const QString &label, QObject *parent = nullptr); 0037 0038 /** 0039 * @copydoc FilterAction::isEmpty 0040 */ 0041 [[nodiscard]] bool isEmpty() const override; 0042 0043 /** 0044 * @copydoc FilterAction::createParamWidget 0045 */ 0046 [[nodiscard]] QWidget *createParamWidget(QWidget *parent) const override; 0047 0048 /** 0049 * @copydoc FilterAction::applyParamWidgetValue 0050 */ 0051 void applyParamWidgetValue(QWidget *paramWidget) override; 0052 0053 /** 0054 * @copydoc FilterAction::setParamWidgetValue 0055 */ 0056 void setParamWidgetValue(QWidget *paramWidget) const override; 0057 0058 /** 0059 * @copydoc FilterAction::clearParamWidget 0060 */ 0061 void clearParamWidget(QWidget *paramWidget) const override; 0062 0063 /** 0064 * @copydoc FilterAction::argsFromString 0065 */ 0066 void argsFromString(const QString &argsStr) override; 0067 0068 /** 0069 * @copydoc FilterAction::argsAsString 0070 */ 0071 [[nodiscard]] QString argsAsString() const override; 0072 0073 [[nodiscard]] bool argsFromStringInteractive(const QString &argsStr, const QString &filterName) override; 0074 0075 [[nodiscard]] QString argsAsStringReal() const override; 0076 0077 /** 0078 * @copydoc FilterAction::displayString 0079 */ 0080 [[nodiscard]] QString displayString() const override; 0081 0082 /** 0083 * @copydoc FilterAction::folderRemoved 0084 */ 0085 [[nodiscard]] bool folderRemoved(const Akonadi::Collection &aFolder, const Akonadi::Collection &aNewFolder) override; 0086 0087 protected: 0088 Akonadi::Collection mFolder; 0089 }; 0090 }