update core to d0d80170a2ca73004e08fb85007fe055cbf4e411 (CWallet class)
[novacoin.git] / src / qt / optionsmodel.cpp
1 #include "optionsmodel.h"
2
3 #include "headers.h"
4
5 #include <QDebug>
6
7 OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) :
8     QAbstractListModel(parent),
9     wallet(wallet)
10 {
11 }
12
13 int OptionsModel::rowCount(const QModelIndex & parent) const
14 {
15     return OptionIDRowCount;
16 }
17
18 QVariant OptionsModel::data(const QModelIndex & index, int role) const
19 {
20     if(role == Qt::EditRole)
21     {
22         switch(index.row())
23         {
24         case StartAtStartup:
25             return QVariant();
26         case MinimizeToTray:
27             return QVariant(fMinimizeToTray);
28         case MapPortUPnP:
29             return QVariant(fUseUPnP);
30         case MinimizeOnClose:
31             return QVariant(fMinimizeOnClose);
32         case ConnectSOCKS4:
33             return QVariant(fUseProxy);
34         case ProxyIP:
35             return QVariant(QString::fromStdString(addrProxy.ToStringIP()));
36         case ProxyPort:
37             return QVariant(QString::fromStdString(addrProxy.ToStringPort()));
38         case Fee:
39             return QVariant(QString::fromStdString(FormatMoney(nTransactionFee)));
40         default:
41             return QVariant();
42         }
43     }
44     return QVariant();
45 }
46
47 bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role)
48 {
49     bool successful = true; /* set to false on parse error */
50     if(role == Qt::EditRole)
51     {
52         CWalletDB walletdb(wallet->strWalletFile);
53         switch(index.row())
54         {
55         case StartAtStartup:
56             successful = false; /*TODO*/
57             break;
58         case MinimizeToTray:
59             fMinimizeToTray = value.toBool();
60             walletdb.WriteSetting("fMinimizeToTray", fMinimizeToTray);
61             break;
62         case MapPortUPnP:
63             fUseUPnP = value.toBool();
64             walletdb.WriteSetting("fUseUPnP", fUseUPnP);
65 #ifdef USE_UPNP
66             MapPort(fUseUPnP);
67 #endif
68             break;
69         case MinimizeOnClose:
70             fMinimizeOnClose = value.toBool();
71             walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose);
72             break;
73         case ConnectSOCKS4:
74             fUseProxy = value.toBool();
75             walletdb.WriteSetting("fUseProxy", fUseProxy);
76             break;
77         case ProxyIP:
78             {
79                 // Use CAddress to parse and check IP
80                 CAddress addr(value.toString().toStdString() + ":1");
81                 if (addr.ip != INADDR_NONE)
82                 {
83                     addrProxy.ip = addr.ip;
84                     walletdb.WriteSetting("addrProxy", addrProxy);
85                 }
86                 else
87                 {
88                     successful = false;
89                 }
90             }
91             break;
92         case ProxyPort:
93             {
94                 int nPort = atoi(value.toString().toAscii().data());
95                 if (nPort > 0 && nPort < USHRT_MAX)
96                 {
97                     addrProxy.port = htons(nPort);
98                     walletdb.WriteSetting("addrProxy", addrProxy);
99                 }
100                 else
101                 {
102                     successful = false;
103                 }
104             }
105             break;
106         case Fee: {
107                 int64 retval;
108                 if(ParseMoney(value.toString().toStdString(), retval))
109                 {
110                     nTransactionFee = retval;
111                     walletdb.WriteSetting("nTransactionFee", nTransactionFee);
112                 }
113                 else
114                 {
115                     successful = false; // Parse error
116                 }
117             }
118             break;
119         default:
120             break;
121         }
122     }
123     emit dataChanged(index, index);
124
125     return successful;
126 }
127
128 qint64 OptionsModel::getTransactionFee()
129 {
130     return nTransactionFee;
131 }
132
133 bool OptionsModel::getMinimizeToTray()
134 {
135     return fMinimizeToTray;
136 }
137
138 bool OptionsModel::getMinimizeOnClose()
139 {
140     return fMinimizeOnClose;
141 }