implement options model / improve view with validators

This commit is contained in:
Wladimir J. van der Laan
2011-06-01 14:40:06 +02:00
parent c6dd35f03d
commit c3e0734dbc
9 changed files with 276 additions and 135 deletions

View File

@@ -1,37 +0,0 @@
#ifndef MAINOPTIONSPAGE_H
#define MAINOPTIONSPAGE_H
#include <QWidget>
QT_BEGIN_NAMESPACE
class QDataWidgetMapper;
class QCheckBox;
class QLineEdit;
QT_END_NAMESPACE
class OptionsModel;
class MainOptionsPage : public QWidget
{
Q_OBJECT
public:
explicit MainOptionsPage(QWidget *parent=0);
void setMapper(QDataWidgetMapper *mapper);
private:
QCheckBox *bitcoin_at_startup;
QCheckBox *minimize_to_tray;
QCheckBox *map_port_upnp;
QCheckBox *minimize_on_close;
QCheckBox *connect_socks4;
QLineEdit *proxy_ip;
QLineEdit *proxy_port;
QLineEdit *fee_edit;
signals:
public slots:
};
#endif // MAINOPTIONSPAGE_H

View File

@@ -0,0 +1,32 @@
#ifndef MONITOREDDATAMAPPER_H
#define MONITOREDDATAMAPPER_H
#include <QDataWidgetMapper>
QT_BEGIN_NAMESPACE
class QWidget;
QT_END_NAMESPACE
/* Data <-> Widget mapper that watches for changes,
to be able to notify when 'dirty' (for example, to
enable a commit/apply button).
*/
class MonitoredDataMapper : public QDataWidgetMapper
{
Q_OBJECT
public:
explicit MonitoredDataMapper(QObject *parent=0);
void addMapping(QWidget *widget, int section);
void addMapping(QWidget *widget, int section, const QByteArray &propertyName);
private:
void addChangeMonitor(QWidget *widget);
signals:
void viewModified();
};
#endif // MONITOREDDATAMAPPER_H

View File

@@ -7,11 +7,11 @@ QT_BEGIN_NAMESPACE
class QStackedWidget;
class QListWidget;
class QListWidgetItem;
class QDataWidgetMapper;
class QPushButton;
QT_END_NAMESPACE
class OptionsModel;
class MainOptionsPage;
class MonitoredDataMapper;
class OptionsDialog : public QDialog
{
@@ -30,12 +30,13 @@ private slots:
void cancelClicked();
void applyClicked();
void enableApply();
void disableApply();
private:
QListWidget *contents_widget;
QStackedWidget *pages_widget;
MainOptionsPage *main_options_page;
OptionsModel *model;
QDataWidgetMapper *mapper;
MonitoredDataMapper *mapper;
QPushButton *apply_button;
void setupMainPage();

View File

@@ -3,7 +3,7 @@
#include <QAbstractListModel>
/* Configuration data structure for bitcoin client */
/* Interface from QT to configuration data structure for bitcoin client */
class OptionsModel : public QAbstractListModel
{
Q_OBJECT
@@ -28,6 +28,8 @@ public:
/* Explicit getters */
qint64 getTransactionFee();
bool getMinimizeToTray();
bool getMinimizeOnClose();
signals:
public slots: