Somewhat confident now, tested on GNOME+KDE, with all types of transactions. Next...
[novacoin.git] / src / qt / monitoreddatamapper.cpp
1 #include "monitoreddatamapper.h"
2
3 #include <QWidget>
4 #include <QMetaObject>
5 #include <QMetaProperty>
6 #include <QDebug>
7
8
9 MonitoredDataMapper::MonitoredDataMapper(QObject *parent) :
10     QDataWidgetMapper(parent)
11 {
12 }
13
14
15 void MonitoredDataMapper::addMapping(QWidget *widget, int section)
16 {
17     QDataWidgetMapper::addMapping(widget, section);
18     addChangeMonitor(widget);
19 }
20
21 void MonitoredDataMapper::addMapping(QWidget *widget, int section, const QByteArray &propertyName)
22 {
23     QDataWidgetMapper::addMapping(widget, section, propertyName);
24     addChangeMonitor(widget);
25 }
26
27 void MonitoredDataMapper::addChangeMonitor(QWidget *widget)
28 {
29     /* Watch user property of widget for changes, and connect
30        the signal to our viewModified signal.
31      */
32     QMetaProperty prop = widget->metaObject()->userProperty();
33     int signal = prop.notifySignalIndex();
34     int method = this->metaObject()->indexOfMethod("viewModified()");
35     if(signal != -1 && method != -1)
36     {
37         QMetaObject::connect(widget, signal, this, method);
38     }
39 }