X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fsettingspage.h;h=11555e5b10fb54fc2682344c9cb3abbf33660b65;hb=6b523158496a0fb79482a7451d0afb6bae482e4e;hp=80df8d3675f63205abaab7f67a1182ff2da94a3c;hpb=694f9bfbf7f1af19108461c7e00d133e55082bce;p=quassel.git diff --git a/src/uisupport/settingspage.h b/src/uisupport/settingspage.h index 80df8d36..11555e5b 100644 --- a/src/uisupport/settingspage.h +++ b/src/uisupport/settingspage.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,17 +15,19 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _SETTINGSPAGE_H_ -#define _SETTINGSPAGE_H_ +#pragma once + +#include "uisupport-export.h" #include class QCheckBox; class QComboBox; class QSpinBox; +class FontSelector; //! A SettingsPage is a page in the settings dialog. /** The SettingsDlg provides suitable standard buttons, such as Ok, Apply, Cancel, Restore Defaults and Reset. @@ -54,13 +56,12 @@ class QSpinBox; * - QComboBox (currentIndex()) * - QSpinBox (value()) */ -class SettingsPage : public QWidget +class UISUPPORT_EXPORT SettingsPage : public QWidget { Q_OBJECT public: - SettingsPage(const QString &category, const QString &name, QWidget *parent = 0); - virtual ~SettingsPage() {}; + SettingsPage(QString category, QString name, QWidget* parent = nullptr); //! The category of this settings page. inline virtual QString category() const { return _category; } @@ -74,6 +75,13 @@ public: */ inline virtual bool needsCoreConnection() const { return false; } + /** + * Whether the settingspage should be selectable or not, in a given situation + * Used for pages that should only be visible if certain features are available (or not). + * @return + */ + inline virtual bool isSelectable() const { return true; } + //! The key this settings page stores its values under /** This needs to be overriden to enable automatic loading/saving/hasChanged checking of widgets. * The child widgets' values will be stored in client settings under this key. Every widget that @@ -89,7 +97,7 @@ public: * enabled. You also need to provide an implementation of defaults() then. * * The default implementation returns false. - */ + */ inline virtual bool hasDefaults() const { return false; } //! Check if there are changes in the page, compared to the state saved in permanent storage. @@ -102,12 +110,14 @@ public: inline virtual bool aboutToSave() { return true; } //! sets checked state depending on \checked and stores the value for later comparision - static void load(QCheckBox *box, bool checked); - static bool hasChanged(QCheckBox *box); - static void load(QComboBox *box, int index); - static bool hasChanged(QComboBox *box); - static void load(QSpinBox *box, int value); - static bool hasChanged(QSpinBox *box); + static void load(QCheckBox* box, bool checked); + static bool hasChanged(QCheckBox* box); + static void load(QComboBox* box, int index); + static bool hasChanged(QComboBox* box); + static void load(QSpinBox* box, int value); + static bool hasChanged(QSpinBox* box); + static void load(FontSelector* box, QFont value); + static bool hasChanged(FontSelector* box); public slots: //! Save settings to permanent storage. @@ -129,16 +139,13 @@ public slots: virtual void defaults(); protected slots: - //! Calling this slot is equivalent to calling setChangedState(true). - inline void changed() { setChangedState(true); } - //! This should be called whenever the widget state changes from unchanged to change or the other way round. void setChangedState(bool hasChanged = true); protected: void initAutoWidgets(); - virtual QVariant loadAutoWidgetValue(const QString &widgetName); - virtual void saveAutoWidgetValue(const QString &widgetName, const QVariant &value); + virtual QVariant loadAutoWidgetValue(const QString& widgetName); + virtual void saveAutoWidgetValue(const QString& widgetName, const QVariant& value); signals: //! Emitted whenever the widget state changes. @@ -149,14 +156,11 @@ private slots: void autoWidgetHasChanged(); private: - void findAutoWidgets(QObject *parent, QObjectList *widgetList) const; - QByteArray autoWidgetPropertyName(QObject *widget) const; - QString autoWidgetSettingsKey(QObject *widget) const; + void findAutoWidgets(QObject* parent, QObjectList* widgetList) const; + QByteArray autoWidgetPropertyName(QObject* widget) const; + QString autoWidgetSettingsKey(QObject* widget) const; QString _category, _title; bool _changed, _autoWidgetsChanged; QObjectList _autoWidgets; }; - - -#endif