Libksieve

managesievewidget.h
1/*
2 SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-only
5*/
6
7#pragma once
8#include "ksieveui_export.h"
9#include <KSieveCore/SieveImapAccountSettings>
10#include <QMap>
11#include <QUrl>
12#include <QWidget>
13#include <memory>
14
15class QTreeWidgetItem;
16
17namespace KManageSieve
18{
19class SieveJob;
20}
21namespace KSieveCore
22{
23class ParseUserScriptJob;
24}
25namespace KSieveUi
26{
27class ManageSieveTreeView;
28class ManageSieveWidgetPrivate;
29/**
30 * @brief The ManageSieveWidget class
31 * @author Laurent Montel <montel@kde.org>
32 */
33class KSIEVEUI_EXPORT ManageSieveWidget : public QWidget
34{
35 Q_OBJECT
36public:
37 enum SieveEditorMode { NormalEditorMode = 0, Kep14EditorMode };
38
39 struct ScriptInfo {
40 QUrl currentUrl;
41 QStringList currentCapabilities;
42 KSieveCore::SieveImapAccountSettings sieveImapAccountSettings;
43 QStringList scriptList;
44 };
45
46 explicit ManageSieveWidget(QWidget *parent = nullptr);
47 ~ManageSieveWidget() override;
48
49 ManageSieveTreeView *treeView() const;
50 void enableDisableActions(bool &newScriptAction, bool &editScriptAction, bool &deleteScriptAction, bool &desactivateScriptAction);
51
52Q_SIGNALS:
53 void updateButtons(QTreeWidgetItem *item);
54 void newScript(const KSieveUi::ManageSieveWidget::ScriptInfo &info);
55 void editScript(const KSieveUi::ManageSieveWidget::ScriptInfo &info);
56 void scriptDeleted(const QUrl &u);
57 void serverSieveFound(bool imapFound);
58 void scriptRenamed(const QUrl &oldUrl, const QUrl &newUrl);
59 void updateSieveSettingsDone();
60
61protected:
62 virtual bool refreshList() = 0;
63 virtual void updateSieveSettings() = 0;
64
65private Q_SLOTS:
66 KSIEVEUI_NO_EXPORT void slotItemChanged(QTreeWidgetItem *item, int col);
67 KSIEVEUI_NO_EXPORT void slotContextMenuRequested(const QPoint &p);
68 KSIEVEUI_NO_EXPORT void slotUpdateButtons();
69 KSIEVEUI_NO_EXPORT void slotDoubleClicked(QTreeWidgetItem *item);
70 KSIEVEUI_NO_EXPORT void slotSystemNetworkOnlineStateChanged(bool state);
71 KSIEVEUI_NO_EXPORT void slotCheckNetworkStatus();
72 KSIEVEUI_NO_EXPORT void setActiveScripts(KSieveCore::ParseUserScriptJob *job);
73
74 KSIEVEUI_NO_EXPORT void slotCancelFetch();
75 KSIEVEUI_NO_EXPORT void slotRenameResult(KManageSieve::SieveJob *job, bool success);
76 KSIEVEUI_NO_EXPORT void slotRenameFinished(const QUrl &oldUrl, const QUrl &newUrl, const QString &errorStr, bool success);
77
78public Q_SLOTS:
79 void slotRenameScript();
80 void slotGotList(KManageSieve::SieveJob *job, bool success, const QStringList &listScript, const QString &activeScript);
81 void slotNewScript();
82 void slotEditScript();
83 void slotDeleteScript();
84 void slotDeactivateScript();
85 void slotDeleteResult(KManageSieve::SieveJob *job, bool success);
86 void slotRefresh();
87
88protected:
91
92private:
93 void updateSieveSettingsFinished();
94 enum sieveServerStatus {
95 SIEVE_SERVER_ERROR = Qt::UserRole + 1,
96 SIEVE_SERVER_CAPABILITIES = Qt::UserRole + 2,
97 SIEVE_SERVER_MODE = Qt::UserRole + 3,
98 SIEVE_SERVER_IMAP_SETTINGS = Qt::UserRole + 4,
99 SIEVE_SERVER_LIST_SCRIPT = Qt::UserRole + 5
100 };
101 KSIEVEUI_NO_EXPORT bool canAddNewScript(QTreeWidgetItem *item, bool jobsListIsEmpty);
102 KSIEVEUI_NO_EXPORT bool serverHasError(QTreeWidgetItem *item) const;
103 KSIEVEUI_NO_EXPORT void killAllJobs();
104 KSIEVEUI_NO_EXPORT void clear();
105 [[nodiscard]] KSIEVEUI_NO_EXPORT bool isFileNameItem(QTreeWidgetItem *item) const;
106 [[nodiscard]] KSIEVEUI_NO_EXPORT bool itemIsActived(QTreeWidgetItem *item) const;
107 KSIEVEUI_NO_EXPORT void changeActiveScript(QTreeWidgetItem *item, bool activate, bool deleteScript = false);
108 [[nodiscard]] KSIEVEUI_NO_EXPORT bool updateGlobalScript(QTreeWidgetItem *item, const QUrl &u);
109 KSIEVEUI_NO_EXPORT void slotGenerateGlobalScriptError(const QString &errorStr);
110 std::unique_ptr<ManageSieveWidgetPrivate> const d;
111};
112}
A job to manage sieve scripts.
Definition sievejob.h:31
The SieveImapAccountSettings class.
The ManageSieveTreeView class.
The ManageSieveWidget class.
UserRole
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:17:19 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.