Wladimir J. van der Laan
14 years ago
9 changed files with 276 additions and 135 deletions
@ -1,37 +0,0 @@
@@ -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
|
@ -0,0 +1,32 @@
@@ -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
|
@ -1,82 +0,0 @@
@@ -1,82 +0,0 @@
|
||||
#include "mainoptionspage.h" |
||||
#include "optionsmodel.h" |
||||
|
||||
#include <QHBoxLayout> |
||||
#include <QVBoxLayout> |
||||
#include <QCheckBox> |
||||
#include <QLabel> |
||||
#include <QLineEdit> |
||||
#include <QDataWidgetMapper> |
||||
#include <QDebug> |
||||
|
||||
MainOptionsPage::MainOptionsPage(QWidget *parent): |
||||
QWidget(parent) |
||||
{ |
||||
QVBoxLayout *layout = new QVBoxLayout(); |
||||
|
||||
bitcoin_at_startup = new QCheckBox(tr("&Start Bitcoin on window system startup")); |
||||
layout->addWidget(bitcoin_at_startup); |
||||
|
||||
minimize_to_tray = new QCheckBox(tr("&Minimize to the tray instead of the taskbar")); |
||||
layout->addWidget(minimize_to_tray); |
||||
|
||||
map_port_upnp = new QCheckBox(tr("Map port using &UPnP")); |
||||
layout->addWidget(map_port_upnp); |
||||
|
||||
minimize_on_close = new QCheckBox(tr("M&inimize on close")); |
||||
layout->addWidget(minimize_on_close); |
||||
|
||||
connect_socks4 = new QCheckBox(tr("&Connect through socks4 proxy:")); |
||||
layout->addWidget(connect_socks4); |
||||
|
||||
QHBoxLayout *proxy_hbox = new QHBoxLayout(); |
||||
proxy_hbox->addSpacing(18); |
||||
QLabel *proxy_ip_label = new QLabel(tr("Proxy &IP: ")); |
||||
proxy_hbox->addWidget(proxy_ip_label); |
||||
proxy_ip = new QLineEdit(); |
||||
proxy_ip->setMaximumWidth(140); |
||||
proxy_ip_label->setBuddy(proxy_ip); |
||||
proxy_hbox->addWidget(proxy_ip); |
||||
QLabel *proxy_port_label = new QLabel(tr("&Port: ")); |
||||
proxy_hbox->addWidget(proxy_port_label); |
||||
proxy_port = new QLineEdit(); |
||||
proxy_port->setMaximumWidth(55); |
||||
proxy_port_label->setBuddy(proxy_port); |
||||
proxy_hbox->addWidget(proxy_port); |
||||
proxy_hbox->addStretch(1); |
||||
|
||||
layout->addLayout(proxy_hbox); |
||||
QLabel *fee_help = new QLabel(tr("Optional transaction fee per KB that helps make sure your transactions are processed quickly. Most transactions are 1KB. Fee 0.01 recommended.")); |
||||
fee_help->setWordWrap(true); |
||||
layout->addWidget(fee_help); |
||||
|
||||
QHBoxLayout *fee_hbox = new QHBoxLayout(); |
||||
fee_hbox->addSpacing(18); |
||||
QLabel *fee_label = new QLabel(tr("Pay transaction &fee")); |
||||
fee_hbox->addWidget(fee_label); |
||||
fee_edit = new QLineEdit(); |
||||
fee_edit->setMaximumWidth(70); |
||||
fee_label->setBuddy(fee_edit); |
||||
fee_hbox->addWidget(fee_edit); |
||||
fee_hbox->addStretch(1); |
||||
|
||||
layout->addLayout(fee_hbox); |
||||
|
||||
layout->addStretch(1); /* Extra space at bottom */ |
||||
|
||||
setLayout(layout); |
||||
} |
||||
|
||||
void MainOptionsPage::setMapper(QDataWidgetMapper *mapper) |
||||
{ |
||||
/* Map model to widgets */ |
||||
mapper->addMapping(bitcoin_at_startup, OptionsModel::StartAtStartup); |
||||
mapper->addMapping(minimize_to_tray, OptionsModel::MinimizeToTray); |
||||
mapper->addMapping(map_port_upnp, OptionsModel::MapPortUPnP); |
||||
mapper->addMapping(minimize_on_close, OptionsModel::MinimizeOnClose); |
||||
mapper->addMapping(connect_socks4, OptionsModel::ConnectSOCKS4); |
||||
mapper->addMapping(proxy_ip, OptionsModel::ProxyIP); |
||||
mapper->addMapping(proxy_port, OptionsModel::ProxyPort); |
||||
mapper->addMapping(fee_edit, OptionsModel::Fee); |
||||
} |
||||
|
@ -0,0 +1,39 @@
@@ -0,0 +1,39 @@
|
||||
#include "monitoreddatamapper.h" |
||||
|
||||
#include <QWidget> |
||||
#include <QMetaObject> |
||||
#include <QMetaProperty> |
||||
#include <QDebug> |
||||
|
||||
|
||||
MonitoredDataMapper::MonitoredDataMapper(QObject *parent) : |
||||
QDataWidgetMapper(parent) |
||||
{ |
||||
} |
||||
|
||||
|
||||
void MonitoredDataMapper::addMapping(QWidget *widget, int section) |
||||
{ |
||||
QDataWidgetMapper::addMapping(widget, section); |
||||
addChangeMonitor(widget); |
||||
} |
||||
|
||||
void MonitoredDataMapper::addMapping(QWidget *widget, int section, const QByteArray &propertyName) |
||||
{ |
||||
QDataWidgetMapper::addMapping(widget, section, propertyName); |
||||
addChangeMonitor(widget); |
||||
} |
||||
|
||||
void MonitoredDataMapper::addChangeMonitor(QWidget *widget) |
||||
{ |
||||
/* Watch user property of widget for changes, and connect
|
||||
the signal to our viewModified signal. |
||||
*/ |
||||
QMetaProperty prop = widget->metaObject()->userProperty(); |
||||
int signal = prop.notifySignalIndex(); |
||||
int method = this->metaObject()->indexOfMethod("viewModified()"); |
||||
if(signal != -1 && method != -1) |
||||
{ |
||||
QMetaObject::connect(widget, signal, this, method); |
||||
} |
||||
} |
Loading…
Reference in new issue