File indexing completed on 2024-05-12 05:13:31

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include <KXmlGuiWindow>
0009 
0010 class ThemeEditorPage;
0011 class QAction;
0012 class KToggleAction;
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     [[nodiscard]] bool slotSaveTheme();
0036     void slotConfigure();
0037     void slotInstallTheme();
0038     void slotInsertFile();
0039     void slotPrintingMode();
0040     void slotNormalMode();
0041     void slotManageTheme();
0042     void slotUpdateView();
0043     void slotCanInsertFile(bool b);
0044     void slotThemeSelected(const QUrl &);
0045     void slotSaveAsTheme();
0046 
0047 private:
0048     enum ActionSaveTheme { SaveOnly = 0, SaveAndCloseTheme, SaveAndCreateNewTheme };
0049 
0050     bool loadTheme(const QString &directory);
0051     void readConfig();
0052     void writeConfig();
0053     void updateActions();
0054     bool saveCurrentProject(ActionSaveTheme act);
0055     void setupActions();
0056     void closeThemeEditor();
0057     ThemeEditorPage *mThemeEditor = nullptr;
0058     QAction *mNewThemeAction = nullptr;
0059     QAction *mCloseThemeAction = nullptr;
0060     QAction *mAddExtraPage = nullptr;
0061     QAction *mCloseAction = nullptr;
0062     QAction *mOpenAction = nullptr;
0063     QAction *mUploadTheme = nullptr;
0064     QAction *mSaveAction = nullptr;
0065     QAction *mInstallTheme = nullptr;
0066     QAction *mInsertFile = nullptr;
0067     QAction *mManageTheme = nullptr;
0068     QAction *mUpdateView = nullptr;
0069     QAction *mSaveAsAction = nullptr;
0070     KToggleAction *mPrintingMode = nullptr;
0071     KToggleAction *mNormalMode = nullptr;
0072     KRecentFilesAction *mRecentFileAction = nullptr;
0073 };