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