File indexing completed on 2024-05-12 05:25:40
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KSieveUi/ManageSieveWidget> 0010 #include <KSieveUi/SieveEditorWidget> 0011 #include <QSplitter> 0012 #include <QUrl> 0013 class QTabWidget; 0014 class QStackedWidget; 0015 class SieveEditorTabWidget; 0016 class SieveEditorScriptManagerWidget; 0017 class SieveEditorPageWidget; 0018 class SieveEditorEmptyTabWidgetLabel; 0019 class KActionCollection; 0020 0021 class SieveEditorMainWidget : public QSplitter 0022 { 0023 Q_OBJECT 0024 public: 0025 explicit SieveEditorMainWidget(KActionCollection *ac, QWidget *parent = nullptr); 0026 ~SieveEditorMainWidget() override; 0027 0028 void createNewScript(); 0029 void deleteScript(); 0030 void updateServerList(); 0031 void editScript(); 0032 void desactivateScript(); 0033 void refreshList(); 0034 void uploadScript(); 0035 bool needToSaveScript(); 0036 0037 QTabWidget *tabWidget() const; 0038 0039 KSieveUi::SieveEditorWidget::EditorMode pageMode() const; 0040 [[nodiscard]] bool isUndoAvailable() const; 0041 [[nodiscard]] bool isRedoAvailable() const; 0042 [[nodiscard]] bool isWordWrap() const; 0043 0044 [[nodiscard]] bool hasSelection() const; 0045 [[nodiscard]] QString currentHelpTitle() const; 0046 [[nodiscard]] QUrl currentHelpUrl() const; 0047 void openBookmarkUrl(const QUrl &url); 0048 [[nodiscard]] bool printSupportEnabled() const; 0049 [[nodiscard]] bool isTextEditor() const; 0050 [[nodiscard]] QString currentText() const; 0051 void forceCloseTab(int index); 0052 public Q_SLOTS: 0053 void slotDebugSieveScript(); 0054 void slotGoToLine(); 0055 0056 void slotReplace(); 0057 void slotFind(); 0058 void slotCopy(); 0059 void slotPaste(); 0060 void slotCut(); 0061 void slotSaveAs(); 0062 void slotCheckSpelling(); 0063 void slotImport(); 0064 void slotCreateRulesGraphically(); 0065 void slotCheckSyntax(); 0066 void slotComment(); 0067 void slotUncomment(); 0068 void slotUpperCase(); 0069 void slotSentenceCase(); 0070 void slotLowerCase(); 0071 void slotReverseCase(); 0072 void slotZoomIn(); 0073 void slotZoomOut(); 0074 void slotZoomReset(); 0075 void slotWordWrap(bool); 0076 void slotPrintPreview(); 0077 void slotPrint(); 0078 void slotUndo(); 0079 void slotRedo(); 0080 void slotSelectAll(); 0081 0082 Q_SIGNALS: 0083 void updateButtons(bool newScriptAction, bool editScriptAction, bool deleteScriptAction, bool desactivateScriptAction); 0084 void updateScriptList(); 0085 void modeEditorChanged(KSieveUi::SieveEditorWidget::EditorMode); 0086 void serverSieveFound(bool); 0087 void undoAvailable(bool); 0088 void redoAvailable(bool); 0089 void copyAvailable(bool); 0090 void sieveEditorTabCurrentChanged(); 0091 0092 protected: 0093 [[nodiscard]] bool event(QEvent *e) override; 0094 0095 private: 0096 void slotCreateScriptPage(const KSieveUi::ManageSieveWidget::ScriptInfo &info, bool isNewScript); 0097 void slotScriptDeleted(const QUrl &url); 0098 void slotScriptRenamed(const QUrl &oldUrl, const QUrl &newUrl); 0099 void slotScriptModified(bool modified, SieveEditorPageWidget *page); 0100 void slotGeneralPaletteChanged(); 0101 void updatePaletteColor(); 0102 void slotTabCloseRequested(int index); 0103 void slotTabRemoveAllExclude(int index); 0104 void slotTabCloseAllRequested(); 0105 0106 private: 0107 void updateStackedWidget(); 0108 QWidget *hasExistingPage(const QUrl &url); 0109 QColor mModifiedScriptColor; 0110 QColor mScriptColor; 0111 SieveEditorTabWidget *mTabWidget = nullptr; 0112 SieveEditorScriptManagerWidget *mScriptManagerWidget = nullptr; 0113 QStackedWidget *mStackedWidget = nullptr; 0114 SieveEditorEmptyTabWidgetLabel *mEditorEmptyLabel = nullptr; 0115 };