File indexing completed on 2024-05-05 04:51:38

0001 /*
0002     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef K3BOPTIONDIALOG_H
0007 #define K3BOPTIONDIALOG_H
0008 
0009 #include <KPageDialog>
0010 #include <QHash>
0011 
0012 class KPageWidgetItem;
0013 namespace K3b {
0014     class MiscOptionTab;
0015 }
0016 namespace K3b {
0017     class DeviceOptionTab;
0018 }
0019 namespace K3b {
0020     class ExternalBinOptionTab;
0021 }
0022 namespace K3b {
0023     class NotifyOptionTab;
0024 }
0025 namespace K3b {
0026     class PluginOptionTab;
0027 }
0028 namespace K3b {
0029     class ThemeOptionTab;
0030 }
0031 namespace K3b {
0032     class CddbOptionTab;
0033 }
0034 namespace K3b {
0035     class AdvancedOptionTab;
0036 }
0037 
0038 /**
0039  *@author Sebastian Trueg
0040  */
0041 namespace K3b {
0042 class OptionDialog : public KPageDialog
0043 {
0044     Q_OBJECT
0045 
0046 public:
0047     explicit OptionDialog( QWidget* parent = 0 );
0048     ~OptionDialog() override;
0049 
0050     enum ConfigPage {
0051         Misc = 0,
0052         Devices,
0053         Programs,
0054         Notifications,
0055         Plugins,
0056         Themes,
0057         Cddb,
0058         Advanced
0059     };
0060 
0061 public Q_SLOTS:
0062     void setCurrentPage( ConfigPage page );
0063 
0064 protected Q_SLOTS:
0065     void slotOk();
0066     void slotApply();
0067     void slotDefault();
0068 
0069 private:
0070     bool saveSettings();
0071 
0072     // misc options
0073     MiscOptionTab* m_miscOptionTab;
0074     KPageWidgetItem* m_miscPage;
0075     void setupMiscPage();
0076 
0077     // device options
0078     DeviceOptionTab* m_deviceOptionTab;
0079     KPageWidgetItem* m_devicePage;
0080     void setupDevicePage();
0081 
0082     // programs options
0083     ExternalBinOptionTab* m_externalBinOptionTab;
0084     KPageWidgetItem* m_programsPage;
0085     void setupProgramsPage();
0086 
0087     // notify options
0088     NotifyOptionTab* m_notifyOptionTab;
0089     KPageWidgetItem* m_notifyPage;
0090     void setupNotifyPage();
0091 
0092     // plugin options
0093     PluginOptionTab* m_pluginOptionTab;
0094     KPageWidgetItem* m_pluginPage;
0095     void setupPluginPage();
0096 
0097     // theme options
0098     ThemeOptionTab* m_themeOptionTab;
0099     KPageWidgetItem* m_themePage;
0100     void setupThemePage();
0101 
0102     // cddb options
0103     CddbOptionTab* m_cddbOptionTab;
0104     KPageWidgetItem* m_cddbPage;
0105     void setupCddbPage();
0106 
0107     // advanced options
0108     AdvancedOptionTab* m_advancedOptionTab;
0109     KPageWidgetItem* m_advancedPage;
0110     void setupAdvancedPage();
0111 
0112     typedef QHash<ConfigPage,KPageWidgetItem*> Pages;
0113     Pages m_pages;
0114 };
0115 }
0116 
0117 #endif