File indexing completed on 2024-05-05 04:51:38
0001 /* 0002 SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 0008 #include "k3boptiondialog.h" 0009 #include "k3bcore.h" 0010 #include "k3bdeviceoptiontab.h" 0011 #include "k3badvancedoptiontab.h" 0012 #include "k3bexternalbinoptiontab.h" 0013 #include "k3bmiscoptiontab.h" 0014 #include "k3bthemeoptiontab.h" 0015 #include "k3bpluginoptiontab.h" 0016 #include "k3bcddboptiontab.h" 0017 #include "k3bsystemproblemdialog.h" 0018 #include "k3bnotifyoptiontab.h" 0019 0020 #include <KConfig> 0021 #include <KConfigGroup> 0022 #include <KSharedConfig> 0023 #include <KLocalizedString> 0024 0025 #include <QIcon> 0026 #include <QFrame> 0027 #include <QGridLayout> 0028 #include <QHBoxLayout> 0029 #include <QLayout> 0030 #include <QTabWidget> 0031 #include <QToolTip> 0032 #include <QVBoxLayout> 0033 0034 // TODO: handle the default-settings 0035 0036 K3b::OptionDialog::OptionDialog(QWidget *parent ) 0037 : KPageDialog( parent ) 0038 { 0039 setFaceType( List ); 0040 setWindowTitle( i18n("Settings") ); 0041 0042 this->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::RestoreDefaults | QDialogButtonBox::Apply | QDialogButtonBox::Cancel); 0043 0044 setupMiscPage(); 0045 setupDevicePage(); 0046 setupProgramsPage(); 0047 setupNotifyPage(); 0048 setupPluginPage(); 0049 setupThemePage(); 0050 setupCddbPage(); 0051 setupAdvancedPage(); 0052 0053 m_miscOptionTab->readSettings(); 0054 m_deviceOptionTab->readDevices(); 0055 m_externalBinOptionTab->readSettings(); 0056 m_notifyOptionTab->readSettings(); 0057 m_themeOptionTab->readSettings(); 0058 m_advancedOptionTab->readSettings(); 0059 0060 // if we don't do this the dialog start really huge 0061 // because of the label in the device-tab 0062 resize( 700, 500 ); 0063 0064 buttonBox()->button(QDialogButtonBox::Apply)->setDefault(false); 0065 connect( this->buttonBox()->button( QDialogButtonBox::Ok ), SIGNAL(clicked()), SLOT(slotOk()) ); 0066 connect( this->buttonBox()->button( QDialogButtonBox::RestoreDefaults ), SIGNAL(clicked()), SLOT(slotDefault()) ); 0067 connect( this->buttonBox()->button( QDialogButtonBox::Apply ), SIGNAL(clicked()), SLOT(slotApply()) ); 0068 } 0069 0070 0071 K3b::OptionDialog::~OptionDialog() 0072 { 0073 } 0074 0075 0076 void K3b::OptionDialog::setCurrentPage( ConfigPage page ) 0077 { 0078 Pages::const_iterator pageIt = m_pages.constFind( page ); 0079 if( pageIt != m_pages.constEnd() ) { 0080 KPageDialog::setCurrentPage( *pageIt ); 0081 } 0082 } 0083 0084 0085 void K3b::OptionDialog::slotOk() 0086 { 0087 if( saveSettings() ) { 0088 accept(); 0089 0090 KConfigGroup grp( KSharedConfig::openConfig(), QStringLiteral("General Options") ); 0091 if( grp.readEntry( "check system config", true ) ) 0092 K3b::SystemProblemDialog::checkSystem(); 0093 } 0094 } 0095 0096 void K3b::OptionDialog::slotApply() 0097 { 0098 saveSettings(); 0099 } 0100 0101 0102 bool K3b::OptionDialog::saveSettings() 0103 { 0104 m_deviceOptionTab->saveDevices(); 0105 m_externalBinOptionTab->saveSettings(); 0106 m_notifyOptionTab->saveSettings(); 0107 m_themeOptionTab->saveSettings(); 0108 m_cddbOptionTab->apply(); 0109 m_advancedOptionTab->saveSettings(); 0110 0111 if( !m_miscOptionTab->saveSettings() ) 0112 return false; 0113 0114 return true; 0115 } 0116 0117 0118 void K3b::OptionDialog::slotDefault() 0119 { 0120 } 0121 0122 0123 void K3b::OptionDialog::setupMiscPage() 0124 { 0125 m_miscOptionTab = new K3b::MiscOptionTab; 0126 connect(m_miscOptionTab, &K3b::MiscOptionTab::changed, [this](){ 0127 buttonBox()->button(QDialogButtonBox::Apply)->setDefault(true); 0128 }); 0129 m_miscPage = addPage( m_miscOptionTab, i18n("Misc") ); 0130 m_miscPage->setHeader( i18n("Miscellaneous Settings") ); 0131 m_miscPage->setIcon( QIcon::fromTheme( "preferences-other" ) ); 0132 m_pages.insert( Misc, m_miscPage ); 0133 } 0134 0135 0136 void K3b::OptionDialog::setupDevicePage() 0137 { 0138 m_deviceOptionTab = new K3b::DeviceOptionTab; 0139 m_devicePage = addPage( m_deviceOptionTab, i18n("Devices") ); 0140 m_devicePage->setHeader( i18n("Optical Devices") ); 0141 QIcon icon = QIcon::fromTheme("drive-optical"); 0142 if (icon.isNull()) { 0143 icon = QIcon::fromTheme("media-optical"); 0144 } 0145 m_devicePage->setIcon(icon); 0146 m_pages.insert( Devices, m_devicePage ); 0147 } 0148 0149 0150 void K3b::OptionDialog::setupProgramsPage() 0151 { 0152 m_externalBinOptionTab = new K3b::ExternalBinOptionTab( k3bcore->externalBinManager() ); 0153 m_programsPage = addPage( m_externalBinOptionTab, i18n("Programs") ); 0154 m_programsPage->setHeader( i18n("Setup External Programs") ); 0155 m_programsPage->setIcon( QIcon::fromTheme( "system-run" ) ); 0156 m_pages.insert( Programs, m_programsPage ); 0157 } 0158 0159 0160 void K3b::OptionDialog::setupNotifyPage() 0161 { 0162 m_notifyOptionTab = new K3b::NotifyOptionTab; 0163 m_notifyPage = addPage( m_notifyOptionTab, i18n("Notifications") ); 0164 m_notifyPage->setHeader( i18n("System Notifications") ); 0165 m_notifyPage->setIcon( QIcon::fromTheme( "preferences-desktop-notification" ) ); 0166 m_pages.insert( Notifications, m_notifyPage ); 0167 } 0168 0169 0170 void K3b::OptionDialog::setupPluginPage() 0171 { 0172 m_pluginOptionTab = new K3b::PluginOptionTab; 0173 m_pluginPage = addPage( m_pluginOptionTab, i18n("Plugins") ); 0174 m_pluginPage->setHeader( i18n("K3b Plugin Configuration") ); 0175 QIcon icon = QIcon::fromTheme("preferences-plugin"); 0176 if (icon.isNull()) { 0177 icon = QIcon::fromTheme("application-x-addon"); 0178 } 0179 m_pluginPage->setIcon(icon); 0180 m_pages.insert( Plugins, m_pluginPage ); 0181 } 0182 0183 0184 void K3b::OptionDialog::setupThemePage() 0185 { 0186 m_themeOptionTab = new K3b::ThemeOptionTab; 0187 m_themePage = addPage( m_themeOptionTab, i18n("Themes") ); 0188 m_themePage->setHeader( i18n("K3b GUI Themes") ); 0189 m_themePage->setIcon( QIcon::fromTheme( "preferences-desktop-theme" ) ); 0190 m_pages.insert( Themes, m_themePage ); 0191 } 0192 0193 0194 void K3b::OptionDialog::setupCddbPage() 0195 { 0196 m_cddbOptionTab = new K3b::CddbOptionTab; 0197 m_cddbPage = addPage( m_cddbOptionTab, i18n("CDDB") ); 0198 m_cddbPage->setHeader( i18n("CDDB Audio CD Info Retrieval") ); 0199 m_cddbPage->setIcon( QIcon::fromTheme( "media-optical-audio" ) ); 0200 m_pages.insert( Cddb, m_cddbPage ); 0201 } 0202 0203 0204 void K3b::OptionDialog::setupAdvancedPage() 0205 { 0206 m_advancedOptionTab = new K3b::AdvancedOptionTab; 0207 m_advancedPage = addPage( m_advancedOptionTab, i18n("Advanced") ); 0208 m_advancedPage->setHeader( i18n("Advanced Settings") ); 0209 m_advancedPage->setIcon( QIcon::fromTheme( "media-optical-recordable" ) ); 0210 m_pages.insert( Advanced, m_advancedPage ); 0211 } 0212 0213 #include "moc_k3boptiondialog.cpp"