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