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