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 };