1 #include "optionsmodel.h"
2 #include "bitcoinunits.h"
6 OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) :
7 QAbstractListModel(parent),
9 nDisplayUnit(BitcoinUnits::BTC),
10 bDisplayAddresses(false)
12 // Read our specific settings from the wallet db
13 CWalletDB walletdb(wallet->strWalletFile);
14 walletdb.ReadSetting("nDisplayUnit", nDisplayUnit);
15 walletdb.ReadSetting("bDisplayAddresses", bDisplayAddresses);
18 int OptionsModel::rowCount(const QModelIndex & parent) const
20 return OptionIDRowCount;
23 QVariant OptionsModel::data(const QModelIndex & index, int role) const
25 if(role == Qt::EditRole)
32 return QVariant(fMinimizeToTray);
34 return QVariant(fUseUPnP);
36 return QVariant(fMinimizeOnClose);
38 return QVariant(fUseProxy);
40 return QVariant(QString::fromStdString(addrProxy.ToStringIP()));
42 return QVariant(QString::fromStdString(addrProxy.ToStringPort()));
44 return QVariant(nTransactionFee);
46 return QVariant(nDisplayUnit);
47 case DisplayAddresses:
48 return QVariant(bDisplayAddresses);
56 bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role)
58 bool successful = true; /* set to false on parse error */
59 if(role == Qt::EditRole)
61 CWalletDB walletdb(wallet->strWalletFile);
65 successful = false; /*TODO*/
68 fMinimizeToTray = value.toBool();
69 walletdb.WriteSetting("fMinimizeToTray", fMinimizeToTray);
72 fUseUPnP = value.toBool();
73 walletdb.WriteSetting("fUseUPnP", fUseUPnP);
79 fMinimizeOnClose = value.toBool();
80 walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose);
83 fUseProxy = value.toBool();
84 walletdb.WriteSetting("fUseProxy", fUseProxy);
88 // Use CAddress to parse and check IP
89 CAddress addr(value.toString().toStdString() + ":1");
90 if (addr.ip != INADDR_NONE)
92 addrProxy.ip = addr.ip;
93 walletdb.WriteSetting("addrProxy", addrProxy);
103 int nPort = atoi(value.toString().toAscii().data());
104 if (nPort > 0 && nPort < USHRT_MAX)
106 addrProxy.port = htons(nPort);
107 walletdb.WriteSetting("addrProxy", addrProxy);
116 nTransactionFee = value.toLongLong();
117 walletdb.WriteSetting("nTransactionFee", nTransactionFee);
121 int unit = value.toInt();
123 walletdb.WriteSetting("nDisplayUnit", nDisplayUnit);
124 emit displayUnitChanged(unit);
126 case DisplayAddresses: {
127 bDisplayAddresses = value.toBool();
128 walletdb.WriteSetting("bDisplayAddresses", bDisplayAddresses);
134 emit dataChanged(index, index);
139 qint64 OptionsModel::getTransactionFee()
141 return nTransactionFee;
144 bool OptionsModel::getMinimizeToTray()
146 return fMinimizeToTray;
149 bool OptionsModel::getMinimizeOnClose()
151 return fMinimizeOnClose;
154 int OptionsModel::getDisplayUnit()
159 bool OptionsModel::getDisplayAddresses()
161 return bDisplayAddresses;