Preferences: start to port preferences to a more sane design

Our preferences dialog right now is a rather huge dialog
with more than 9 subpages, and all of those pages are programmed
inside of the same class, same methods and all that - which means
that if I change something on the dialog I can break any
other thing quite easily.

The idea of this patch series is to make it harder to break
user settings and the settings dialog.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2015-09-17 14:04:27 -03:00 committed by Dirk Hohndel
parent 225ac07005
commit b35ccc3a35
4 changed files with 59 additions and 0 deletions

View file

@ -13,6 +13,8 @@ include_directories(.
${CMAKE_BINARY_DIR}
)
add_subdirectory(preferences)
# the interface, in C++
set(SUBSURFACE_INTERFACE
updatemanager.cpp

View file

@ -0,0 +1,9 @@
# the profile widget
set(SUBSURFACE_PREFERENCES_LIB_SRCS
abstractpreferenceswidget.cpp
)
source_group("Subsurface Preferences" FILES ${SUBSURFACE_PREFERENCES_LIB_SRCS})
add_library(subsurface_desktop_preferences STATIC ${SUBSURFACE_PREFERENCES_LIB_SRCS})
target_link_libraries(subsurface_desktop_preferences ${QT_LIBRARIES})

View file

@ -0,0 +1,21 @@
#include "abstractpreferenceswidget.h"
AbstractPreferencesWidget::AbstractPreferencesWidget(const QString& name, const QIcon& icon, float positionHeight)
: QWidget(), _name(name), _icon(icon), _positionHeight(positionHeight)
{
}
QIcon AbstractPreferencesWidget::icon() const
{
return _icon;
}
QString AbstractPreferencesWidget::name() const
{
return _name;
}
float AbstractPreferencesWidget::positionHeight() const
{
return _positionHeight;
}

View file

@ -0,0 +1,27 @@
#ifndef ABSTRACTPREFERENCESWIDGET_H
#define ABSTRACTPREFERENCESWIDGET_H
#include <QIcon>
#include <QWidget>
class AbstractPreferencesWidget : public QWidget {
Q_OBJECT
public:
AbstractPreferencesWidget(const QString& name, const QIcon& icon, float positionHeight);
QIcon icon() const;
QString name() const;
float positionHeight() const;
/* gets the values from the preferences and should set the correct values in
* the interface */
virtual void refreshSettings() = 0;
/* gets the values from the interface and set in the preferences object. */
virtual void syncSettings() = 0;
private:
QIcon _icon;
QString _name;
float _positionHeight;
};
#endif