twisterp2pblockchainnetworkbittorrentmicrobloggingipv6social-networkdhtdecentralizedtwisterarmyp2p-networktwister-servertwister-ipv6twister-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
3.8 KiB
141 lines
3.8 KiB
#include "optionsmodel.h" |
|
|
|
#include "headers.h" |
|
|
|
#include <QDebug> |
|
|
|
OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) : |
|
QAbstractListModel(parent), |
|
wallet(wallet) |
|
{ |
|
} |
|
|
|
int OptionsModel::rowCount(const QModelIndex & parent) const |
|
{ |
|
return OptionIDRowCount; |
|
} |
|
|
|
QVariant OptionsModel::data(const QModelIndex & index, int role) const |
|
{ |
|
if(role == Qt::EditRole) |
|
{ |
|
switch(index.row()) |
|
{ |
|
case StartAtStartup: |
|
return QVariant(); |
|
case MinimizeToTray: |
|
return QVariant(fMinimizeToTray); |
|
case MapPortUPnP: |
|
return QVariant(fUseUPnP); |
|
case MinimizeOnClose: |
|
return QVariant(fMinimizeOnClose); |
|
case ConnectSOCKS4: |
|
return QVariant(fUseProxy); |
|
case ProxyIP: |
|
return QVariant(QString::fromStdString(addrProxy.ToStringIP())); |
|
case ProxyPort: |
|
return QVariant(QString::fromStdString(addrProxy.ToStringPort())); |
|
case Fee: |
|
return QVariant(QString::fromStdString(FormatMoney(nTransactionFee))); |
|
default: |
|
return QVariant(); |
|
} |
|
} |
|
return QVariant(); |
|
} |
|
|
|
bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, int role) |
|
{ |
|
bool successful = true; /* set to false on parse error */ |
|
if(role == Qt::EditRole) |
|
{ |
|
CWalletDB walletdb(wallet->strWalletFile); |
|
switch(index.row()) |
|
{ |
|
case StartAtStartup: |
|
successful = false; /*TODO*/ |
|
break; |
|
case MinimizeToTray: |
|
fMinimizeToTray = value.toBool(); |
|
walletdb.WriteSetting("fMinimizeToTray", fMinimizeToTray); |
|
break; |
|
case MapPortUPnP: |
|
fUseUPnP = value.toBool(); |
|
walletdb.WriteSetting("fUseUPnP", fUseUPnP); |
|
#ifdef USE_UPNP |
|
MapPort(fUseUPnP); |
|
#endif |
|
break; |
|
case MinimizeOnClose: |
|
fMinimizeOnClose = value.toBool(); |
|
walletdb.WriteSetting("fMinimizeOnClose", fMinimizeOnClose); |
|
break; |
|
case ConnectSOCKS4: |
|
fUseProxy = value.toBool(); |
|
walletdb.WriteSetting("fUseProxy", fUseProxy); |
|
break; |
|
case ProxyIP: |
|
{ |
|
// Use CAddress to parse and check IP |
|
CAddress addr(value.toString().toStdString() + ":1"); |
|
if (addr.ip != INADDR_NONE) |
|
{ |
|
addrProxy.ip = addr.ip; |
|
walletdb.WriteSetting("addrProxy", addrProxy); |
|
} |
|
else |
|
{ |
|
successful = false; |
|
} |
|
} |
|
break; |
|
case ProxyPort: |
|
{ |
|
int nPort = atoi(value.toString().toAscii().data()); |
|
if (nPort > 0 && nPort < USHRT_MAX) |
|
{ |
|
addrProxy.port = htons(nPort); |
|
walletdb.WriteSetting("addrProxy", addrProxy); |
|
} |
|
else |
|
{ |
|
successful = false; |
|
} |
|
} |
|
break; |
|
case Fee: { |
|
int64 retval; |
|
if(ParseMoney(value.toString().toStdString(), retval)) |
|
{ |
|
nTransactionFee = retval; |
|
walletdb.WriteSetting("nTransactionFee", nTransactionFee); |
|
} |
|
else |
|
{ |
|
successful = false; // Parse error |
|
} |
|
} |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
emit dataChanged(index, index); |
|
|
|
return successful; |
|
} |
|
|
|
qint64 OptionsModel::getTransactionFee() |
|
{ |
|
return nTransactionFee; |
|
} |
|
|
|
bool OptionsModel::getMinimizeToTray() |
|
{ |
|
return fMinimizeToTray; |
|
} |
|
|
|
bool OptionsModel::getMinimizeOnClose() |
|
{ |
|
return fMinimizeOnClose; |
|
}
|
|
|