diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -26,6 +26,7 @@ #include "ark_debug.h" #include "archive_kerfuffle.h" #include "createdialog.h" +#include "settingsdialog.h" #include "settingspage.h" #include "pluginmanager.h" #include "interface.h" @@ -257,10 +258,12 @@ Interface *iface = qobject_cast(m_part); Q_ASSERT(iface); - KConfigDialog *dialog = new KConfigDialog(this, QStringLiteral("settings"), iface->config()); + auto dialog = new Kerfuffle::SettingsDialog(this, QStringLiteral("settings"), iface->config()); foreach (Kerfuffle::SettingsPage *page, iface->settingsPages(this)) { dialog->addPage(page, page->name(), page->iconName()); + connect(dialog, &KConfigDialog::settingsChanged, page, &Kerfuffle::SettingsPage::slotSettingsChanged); + connect(dialog, &Kerfuffle::SettingsDialog::defaultsButtonClicked, page, &Kerfuffle::SettingsPage::slotDefaultsButtonClicked); } // Hide the icons list if only one page has been added. dialog->setFaceType(KPageDialog::Auto); diff --git a/kerfuffle/CMakeLists.txt b/kerfuffle/CMakeLists.txt --- a/kerfuffle/CMakeLists.txt +++ b/kerfuffle/CMakeLists.txt @@ -7,6 +7,7 @@ extractionsettingspage.cpp generalsettingspage.cpp previewsettingspage.cpp + settingsdialog.cpp settingspage.cpp jobs.cpp adddialog.cpp diff --git a/kerfuffle/settingspage.h b/kerfuffle/settingsdialog.h copy from kerfuffle/settingspage.h copy to kerfuffle/settingsdialog.h --- a/kerfuffle/settingspage.h +++ b/kerfuffle/settingsdialog.h @@ -1,7 +1,7 @@ /* * ark -- archiver for the KDE project * - * Copyright (C) 2015 Elvis Angelaccio + * Copyright (C) 2016 Elvis Angelaccio * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -25,29 +25,34 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef SETTINGSPAGE_H -#define SETTINGSPAGE_H +#ifndef SETTINGSDIALOG_H +#define SETTINGSDIALOG_H #include "kerfuffle_export.h" -#include +#include namespace Kerfuffle { -class KERFUFFLE_EXPORT SettingsPage : public QWidget + +/** + * A custom KConfigDialog that emits a signal when the Default button has been clicked. + */ +class KERFUFFLE_EXPORT SettingsDialog : public KConfigDialog { Q_OBJECT public: - explicit SettingsPage(QWidget *parent = 0, const QString &name = QString(), const QString &iconName = QString()); + explicit SettingsDialog(QWidget *parent, const QString &name, KCoreConfigSkeleton *config); - QString name() const; - QString iconName() const; +signals: + void defaultsButtonClicked(); + +protected slots: + void updateWidgetsDefault() Q_DECL_OVERRIDE; -private: - QString m_name; - QString m_iconName; }; + } #endif diff --git a/kerfuffle/settingspage.cpp b/kerfuffle/settingsdialog.cpp copy from kerfuffle/settingspage.cpp copy to kerfuffle/settingsdialog.cpp --- a/kerfuffle/settingspage.cpp +++ b/kerfuffle/settingsdialog.cpp @@ -1,7 +1,7 @@ /* * ark -- archiver for the KDE project * - * Copyright (C) 2015 Elvis Angelaccio + * Copyright (C) 2016 Elvis Angelaccio * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -25,24 +25,19 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "settingspage.h" +#include "settingsdialog.h" namespace Kerfuffle { -SettingsPage::SettingsPage(QWidget *parent, const QString &name, const QString &iconName) - : QWidget(parent), - m_name(name), - m_iconName(iconName) + +SettingsDialog::SettingsDialog(QWidget *parent, const QString &name, KCoreConfigSkeleton *config) + : KConfigDialog(parent, name, config) {} -QString SettingsPage::name() const +void SettingsDialog::updateWidgetsDefault() { - return m_name; + emit defaultsButtonClicked(); } -QString SettingsPage::iconName() const -{ - return m_iconName; -} } diff --git a/kerfuffle/settingspage.h b/kerfuffle/settingspage.h --- a/kerfuffle/settingspage.h +++ b/kerfuffle/settingspage.h @@ -44,6 +44,10 @@ QString name() const; QString iconName() const; +public slots: + virtual void slotSettingsChanged(); + virtual void slotDefaultsButtonClicked(); + private: QString m_name; QString m_iconName; diff --git a/kerfuffle/settingspage.cpp b/kerfuffle/settingspage.cpp --- a/kerfuffle/settingspage.cpp +++ b/kerfuffle/settingspage.cpp @@ -44,5 +44,14 @@ { return m_iconName; } + +void SettingsPage::slotSettingsChanged() +{ +} + +void SettingsPage::slotDefaultsButtonClicked() +{ +} + }