File indexing completed on 2024-05-12 05:13:28
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KXmlGuiWindow> 0010 0011 class ThemeEditorPage; 0012 class QAction; 0013 class KRecentFilesAction; 0014 class QUrl; 0015 0016 class ThemeEditorMainWindow : public KXmlGuiWindow 0017 { 0018 Q_OBJECT 0019 public: 0020 explicit ThemeEditorMainWindow(); 0021 ~ThemeEditorMainWindow() override; 0022 0023 protected: 0024 void closeEvent(QCloseEvent *) override; 0025 0026 private Q_SLOTS: 0027 void slotUploadTheme(); 0028 0029 private: 0030 void slotNewTheme(); 0031 void slotCloseTheme(); 0032 void slotAddExtraPage(); 0033 void slotOpenTheme(); 0034 void slotQuitApp(); 0035 bool slotSaveTheme(); 0036 void slotConfigure(); 0037 void slotInstallTheme(); 0038 void slotInsertFile(); 0039 void slotManageTheme(); 0040 void slotUpdateView(); 0041 void slotCanInsertFile(bool b); 0042 void slotThemeSelected(const QUrl &); 0043 void slotSaveAsTheme(); 0044 0045 private: 0046 enum ActionSaveTheme { SaveOnly = 0, SaveAndCloseTheme, SaveAndCreateNewTheme }; 0047 0048 [[nodiscard]] bool loadTheme(const QString &directory); 0049 void writeConfig(); 0050 void readConfig(); 0051 void updateActions(); 0052 [[nodiscard]] bool saveCurrentProject(ActionSaveTheme act); 0053 void setupActions(); 0054 void closeThemeEditor(); 0055 ThemeEditorPage *mThemeEditor = nullptr; 0056 QAction *mNewThemeAction = nullptr; 0057 QAction *mCloseThemeAction = nullptr; 0058 QAction *mAddExtraPage = nullptr; 0059 QAction *mCloseAction = nullptr; 0060 QAction *mOpenAction = nullptr; 0061 QAction *mUploadTheme = nullptr; 0062 QAction *mSaveAction = nullptr; 0063 QAction *mInstallTheme = nullptr; 0064 QAction *mInsertFile = nullptr; 0065 QAction *mManageTheme = nullptr; 0066 QAction *mUpdateView = nullptr; 0067 QAction *mSaveAsAction = nullptr; 0068 KRecentFilesAction *mRecentFileAction = nullptr; 0069 };