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 }