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

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 ContactEditorPage;
0011 class QAction;
0012 class KRecentFilesAction;
0013 class QUrl;
0014 
0015 class ContactEditorMainWindow : public KXmlGuiWindow
0016 {
0017     Q_OBJECT
0018 public:
0019     explicit ContactEditorMainWindow();
0020     ~ContactEditorMainWindow() override;
0021 
0022 protected:
0023     void closeEvent(QCloseEvent *) override;
0024 
0025 private Q_SLOTS:
0026     void slotUploadTheme();
0027 
0028 private:
0029     void slotNewTheme();
0030     void slotCloseTheme();
0031     void slotAddExtraPage();
0032     void slotOpenTheme();
0033     void slotQuitApp();
0034     [[nodiscard]] bool slotSaveTheme();
0035     void slotInstallTheme();
0036     void slotInsertFile();
0037     void slotManageTheme();
0038     void slotUpdateView();
0039     void slotConfigure();
0040     void slotCanInsertFile(bool b);
0041     void slotThemeSelected(const QUrl &);
0042     void slotSaveAsTheme();
0043 
0044 private:
0045     enum ActionSaveTheme { SaveOnly = 0, SaveAndCloseTheme, SaveAndCreateNewTheme };
0046 
0047     void writeConfig();
0048     bool loadTheme(const QString &directory);
0049     void readConfig();
0050     void updateActions();
0051     [[nodiscard]] bool saveCurrentProject(ActionSaveTheme act);
0052     void setupActions();
0053     void closeThemeEditor();
0054     ContactEditorPage *mContactEditor = nullptr;
0055     QAction *mNewThemeAction = nullptr;
0056     QAction *mCloseThemeAction = nullptr;
0057     QAction *mAddExtraPage = nullptr;
0058     QAction *mCloseAction = nullptr;
0059     QAction *mOpenAction = nullptr;
0060     QAction *mUploadTheme = nullptr;
0061     QAction *mSaveAction = nullptr;
0062     QAction *mInstallTheme = nullptr;
0063     QAction *mInsertFile = nullptr;
0064     QAction *mManageTheme = nullptr;
0065     QAction *mUpdateView = nullptr;
0066     QAction *mSaveAsAction = nullptr;
0067     KRecentFilesAction *mRecentFileAction = nullptr;
0068 };