Revert "Use standard C99 (and Qt) types for 64-bit integers"
[novacoin.git] / src / qt / optionsmodel.cpp
1 #include "optionsmodel.h"
2 #include "bitcoinunits.h"
3
4 #include "headers.h"
5 #include "init.h"
6
7 OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) :
8     QAbstractListModel(parent),
9     wallet(wallet),
10     nDisplayUnit(BitcoinUnits::BTC),
11     bDisplayAddresses(false)
12 {
13     // Read our specific settings from the wallet db
14     CWalletDB walletdb(wallet->strWalletFile);
15     walletdb.ReadSetting("nDisplayUnit", nDisplayUnit);
16     walletdb.ReadSetting("bDisplayAddresses", bDisplayAddresses);
17 }
18
19 int OptionsModel::rowCount(const QModelIndex & parent) const
20 {
21     return OptionIDRowCount;
22 }
23
24 QVariant OptionsModel::data(const QModelIndex & index, int role) const
25 {
26     if(role == Qt::EditRole)
27     {
28         switch(index.row())
29         {
30         case StartAtStartup:
31             return QVariant(GetStartOnSystemStartup());
32         case MinimizeToTray:
33             return QVariant(fMinimizeToTray);
34         case MapPortUPnP:
35             return QVariant(fUseUPnP);
36         case MinimizeOnClose:
37             return QVariant(fMinimizeOnClose);
38         case ConnectSOCKS4:
39             return QVariant(fUseProxy);
40         case ProxyIP:
41             return QVariant(QString::fromStdString(addrProxy.ToStringIP()));
42         case ProxyPort:
43             return QVariant(QString::fromStdString(addrProxy.ToStringPort()));
44         case Fee:
45             return QVariant(nTransactionFee);
46         case DisplayUnit:
47             return QVariant(nDisplayUnit);
48         case DisplayAddresses:
49             return QVariant(bDisplayAddresses);
50         default:
51             return QVariant();
52         }
53     }
54     return QVariant();
55 }
56
57 bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role)
58 {
59     bool successful = true; /* set to false on parse error */
60     if(role == Qt::EditRole)
61     {
62         CWalletDB walletdb(wallet->strWalletFile);
63         switch(index.row())
64         {
65         case StartAtStartup:
66             successful = SetStartOnSystemStartup(value.toBool());
67             break;
68         case MinimizeToTray:
69             fMinimizeToTray = value.toBool();
70             walletdb.WriteSetting("fMinimizeToTray", fMinimizeToTray);
71             break;
72         case MapPortUPnP:
73             fUseUPnP = value.toBool();
74             walletdb.WriteSetting("fUseUPnP", fUseUPnP);
75 #ifdef USE_UPNP
76             MapPort(fUseUPnP);
77 #endif
78             break;
79         case MinimizeOnClose:
80             fMinimizeOnClose = value.toBool();
81             walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose);
82             break;
83         case ConnectSOCKS4:
84             fUseProxy = value.toBool();
85             walletdb.WriteSetting("fUseProxy", fUseProxy);
86             break;
87         case ProxyIP:
88             {
89                 // Use CAddress to parse and check IP
90                 CAddress addr(value.toString().toStdString() + ":1");
91                 if (addr.ip != INADDR_NONE)
92                 {
93                     addrProxy.ip = addr.ip;
94                     walletdb.WriteSetting("addrProxy", addrProxy);
95                 }
96                 else
97                 {
98                     successful = false;
99                 }
100             }
101             break;
102         case ProxyPort:
103             {
104                 int nPort = atoi(value.toString().toAscii().data());
105                 if (nPort > 0 && nPort < std::numeric_limits<unsigned short>::max())
106                 {
107                     addrProxy.port = htons(nPort);
108                     walletdb.WriteSetting("addrProxy", addrProxy);
109                 }
110                 else
111                 {
112                     successful = false;
113                 }
114             }
115             break;
116         case Fee: {
117             nTransactionFee = value.toLongLong();
118             walletdb.WriteSetting("nTransactionFee", nTransactionFee);
119             }
120             break;
121         case DisplayUnit: {
122             int unit = value.toInt();
123             nDisplayUnit = unit;
124             walletdb.WriteSetting("nDisplayUnit", nDisplayUnit);
125             emit displayUnitChanged(unit);
126             }
127         case DisplayAddresses: {
128             bDisplayAddresses = value.toBool();
129             walletdb.WriteSetting("bDisplayAddresses", bDisplayAddresses);
130             }
131         default:
132             break;
133         }
134     }
135     emit dataChanged(index, index);
136
137     return successful;
138 }
139
140 qint64 OptionsModel::getTransactionFee()
141 {
142     return nTransactionFee;
143 }
144
145 bool OptionsModel::getMinimizeToTray()
146 {
147     return fMinimizeToTray;
148 }
149
150 bool OptionsModel::getMinimizeOnClose()
151 {
152     return fMinimizeOnClose;
153 }
154
155 int OptionsModel::getDisplayUnit()
156 {
157     return nDisplayUnit;
158 }
159
160 bool OptionsModel::getDisplayAddresses()
161 {
162     return bDisplayAddresses;
163 }