/***************************************************************************
- * Copyright (C) 2005-2013 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 *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef _SETTINGSPAGE_H_
-#define _SETTINGSPAGE_H_
+#pragma once
+
+#include "uisupport-export.h"
#include <QWidget>
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.
* - 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; }
*/
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
* 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.
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.
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.
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