1 #include "optionsmodel.h"
2 #include "bitcoinunits.h"
8 OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) :
9 QAbstractListModel(parent),
11 nDisplayUnit(BitcoinUnits::BTC),
12 bDisplayAddresses(false)
14 // Read our specific settings from the wallet db
15 CWalletDB walletdb(wallet->strWalletFile);
16 walletdb.ReadSetting("nDisplayUnit", nDisplayUnit);
17 walletdb.ReadSetting("bDisplayAddresses", bDisplayAddresses);
20 int OptionsModel::rowCount(const QModelIndex & parent) const
22 return OptionIDRowCount;
25 QVariant OptionsModel::data(const QModelIndex & index, int role) const
27 if(role == Qt::EditRole)
34 return QVariant(fMinimizeToTray);
36 return QVariant(fUseUPnP);
38 return QVariant(fMinimizeOnClose);
40 return QVariant(fUseProxy);
42 return QVariant(QString::fromStdString(addrProxy.ToStringIP()));
44 return QVariant(QString::fromStdString(addrProxy.ToStringPort()));
46 return QVariant(nTransactionFee);
48 return QVariant(nDisplayUnit);
49 case DisplayAddresses:
50 return QVariant(bDisplayAddresses);
58 bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role)
60 bool successful = true; /* set to false on parse error */
61 if(role == Qt::EditRole)
63 CWalletDB walletdb(wallet->strWalletFile);
67 successful = false; /*TODO*/
70 fMinimizeToTray = value.toBool();
71 walletdb.WriteSetting("fMinimizeToTray", fMinimizeToTray);
74 fUseUPnP = value.toBool();
75 walletdb.WriteSetting("fUseUPnP", fUseUPnP);
81 fMinimizeOnClose = value.toBool();
82 walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose);
85 fUseProxy = value.toBool();
86 walletdb.WriteSetting("fUseProxy", fUseProxy);
90 // Use CAddress to parse and check IP
91 CAddress addr(value.toString().toStdString() + ":1");
92 if (addr.ip != INADDR_NONE)
94 addrProxy.ip = addr.ip;
95 walletdb.WriteSetting("addrProxy", addrProxy);
105 int nPort = atoi(value.toString().toAscii().data());
106 if (nPort > 0 && nPort < USHRT_MAX)
108 addrProxy.port = htons(nPort);
109 walletdb.WriteSetting("addrProxy", addrProxy);
118 nTransactionFee = value.toLongLong();
119 walletdb.WriteSetting("nTransactionFee", nTransactionFee);
123 int unit = value.toInt();
125 walletdb.WriteSetting("nDisplayUnit", nDisplayUnit);
126 emit displayUnitChanged(unit);
128 case DisplayAddresses: {
129 bDisplayAddresses = value.toBool();
130 walletdb.WriteSetting("bDisplayAddresses", bDisplayAddresses);
136 emit dataChanged(index, index);
141 qint64 OptionsModel::getTransactionFee()
143 return nTransactionFee;
146 bool OptionsModel::getMinimizeToTray()
148 return fMinimizeToTray;
151 bool OptionsModel::getMinimizeOnClose()
153 return fMinimizeOnClose;
156 int OptionsModel::getDisplayUnit()
161 bool OptionsModel::getDisplayAddresses()
163 return bDisplayAddresses;