1 /*
2    SPDX-FileCopyrightText: 2013-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "libsieveeditor_export.h"
10 #include <KXmlGuiWindow>
11 class QAction;
12 class SieveEditorCentralWidget;
13 class QLabel;
14 class SieveEditorBookmarks;
15 class KActionMenu;
16 namespace PimCommon
17 {
18 class KActionMenuChangeCase;
19 }
20 class LIBSIEVEEDITOR_EXPORT SieveEditorMainWindow : public KXmlGuiWindow
21 {
22     Q_OBJECT
23 public:
24     explicit SieveEditorMainWindow(QWidget *parent = nullptr);
25     ~SieveEditorMainWindow() override;
26 
27     Q_REQUIRED_RESULT QString currentHelpTitle() const;
28     Q_REQUIRED_RESULT QUrl currentHelpUrl() const;
29 
30 protected:
31     void closeEvent(QCloseEvent *e) override;
32 
33 private:
34     void slotConfigure();
35     void slotAddServerSieve();
36     void slotCreateNewScript();
37     void slotDeleteScript();
38     void slotUpdateButtons(bool newScriptAction, bool editScriptAction, bool deleteScriptAction, bool desactivateScriptAction);
39     void slotEditScript();
40     void slotDesactivateScript();
41     void slotRefreshList();
42     void slotUploadScript();
43     void slotUpdateActions();
44     void slotSystemNetworkOnlineStateChanged(bool state);
45     void slotUndoAvailable(bool);
46     void slotRedoAvailable(bool);
47     void slotCopyAvailable(bool b);
48     void slotOpenBookmarkUrl(const QUrl &url);
49     void slotImportImapSettings();
50 
51 private:
52     void initStatusBar();
53     void readConfig();
54     void setupActions();
55     QString currentText() const;
56 
57     SieveEditorCentralWidget *mMainWidget = nullptr;
58     QAction *mDeleteScript = nullptr;
59     QAction *mNewScript = nullptr;
60     QAction *mEditScript = nullptr;
61     QAction *mDesactivateScript = nullptr;
62     QAction *mRefreshList = nullptr;
63     QAction *mUploadScript = nullptr;
64     QAction *mGoToLine = nullptr;
65     QAction *mFindAction = nullptr;
66     QAction *mReplaceAction = nullptr;
67     QAction *mUndoAction = nullptr;
68     QAction *mRedoAction = nullptr;
69     QAction *mCopyAction = nullptr;
70     QAction *mPasteAction = nullptr;
71     QAction *mCutAction = nullptr;
72     QAction *mSelectAllAction = nullptr;
73     QAction *mSaveAsAction = nullptr;
74     QAction *mImportAction = nullptr;
75     QAction *mShareAction = nullptr;
76     QAction *mSpellCheckAction = nullptr;
77     QAction *mCheckSyntaxAction = nullptr;
78     QAction *mCreateRulesGraphicallyAction = nullptr;
79     QAction *mCommentAction = nullptr;
80     QAction *mUncommentAction = nullptr;
81     QAction *mZoomInAction = nullptr;
82     QAction *mZoomOutAction = nullptr;
83     QAction *mZoomResetAction = nullptr;
84     QAction *mDebugSieveScriptAction = nullptr;
85     QAction *mWrapTextAction = nullptr;
86     QAction *mPrintAction = nullptr;
87     QAction *mPrintPreviewAction = nullptr;
88     PimCommon::KActionMenuChangeCase *mMenuChangeCaseAction = nullptr;
89 
90     QLabel *mStatusBarInfo = nullptr;
91     SieveEditorBookmarks *mSieveEditorBookmarks = nullptr;
92     KActionMenu *mBookmarkMenu = nullptr;
93     bool mNetworkIsDown = false;
94 };
95 
96