File indexing completed on 2024-04-28 04:21:19

0001 // SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team
0002 // SPDX-FileCopyrightText: 2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
0003 //
0004 // SPDX-License-Identifier: GPL-2.0-or-later
0005 
0006 #ifndef SETTINGSDIALOG_H
0007 #define SETTINGSDIALOG_H
0008 
0009 // KDE includes
0010 #include <KPageDialog>
0011 
0012 namespace Exif
0013 {
0014 class TreeView;
0015 }
0016 
0017 namespace Settings
0018 {
0019 class ViewerSizeConfig;
0020 class CategoryItem;
0021 class CategoryPage;
0022 class TagGroupsPage;
0023 class GeneralPage;
0024 class ThumbnailsPage;
0025 class ViewerPage;
0026 class FileVersionDetectionPage;
0027 class PluginsPage;
0028 class ExifPage;
0029 class DatabaseBackendPage;
0030 class BirthdayPage;
0031 
0032 /**
0033  * @brief The SettingsPage enum has a value for every settings sub-page.
0034  * It is used for SettingsDialog::setPage().
0035  */
0036 enum class SettingsPage {
0037     BirthdayPage,
0038     CategoryPage,
0039     DatabaseBackendPage,
0040     ExifPage,
0041     FileVersionDetectionPage,
0042     GeneralPage,
0043     PluginsPage,
0044     TagGroupsPage,
0045     ThumbnailsPage,
0046     ViewerPage
0047 };
0048 
0049 class SettingsDialog : public KPageDialog
0050 {
0051     Q_OBJECT
0052 
0053 public:
0054     explicit SettingsDialog(QWidget *parent);
0055     virtual void show();
0056 
0057 public Q_SLOTS:
0058     void activatePage(SettingsPage pageId);
0059 
0060 Q_SIGNALS:
0061     void changed();
0062     void thumbnailSizeChanged();
0063 
0064 protected Q_SLOTS:
0065     void slotMyOK();
0066 
0067 private:
0068     Settings::GeneralPage *m_generalPage;
0069     Settings::FileVersionDetectionPage *m_fileVersionDetectionPage;
0070     Settings::ThumbnailsPage *m_thumbnailsPage;
0071     Settings::CategoryPage *m_categoryPage;
0072     Settings::TagGroupsPage *m_tagGroupsPage;
0073     Settings::ViewerPage *m_viewerPage;
0074     Settings::ExifPage *m_exifPage;
0075     Settings::DatabaseBackendPage *m_databaseBackendPage;
0076     Settings::BirthdayPage *m_birthdayPage;
0077     QMap<SettingsPage, KPageWidgetItem *> m_pages;
0078 
0079     void keyPressEvent(QKeyEvent *) override;
0080 };
0081 }
0082 
0083 #endif /* SETTINGSDIALOG_H */
0084 
0085 // vi:expandtab:tabstop=4 shiftwidth=4: