Revert "Use standard C99 (and Qt) types for 64-bit integers"
[novacoin.git] / src / qt / optionsmodel.cpp
index 3788f9f..a68c84c 100644 (file)
@@ -1,12 +1,19 @@
 #include "optionsmodel.h"
-#include "main.h"
-#include "net.h"
+#include "bitcoinunits.h"
 
-#include <QDebug>
+#include "headers.h"
+#include "init.h"
 
-OptionsModel::OptionsModel(QObject *parent) :
-    QAbstractListModel(parent)
+OptionsModel::OptionsModel(CWallet *wallet, QObject *parent) :
+    QAbstractListModel(parent),
+    wallet(wallet),
+    nDisplayUnit(BitcoinUnits::BTC),
+    bDisplayAddresses(false)
 {
+    // Read our specific settings from the wallet db
+    CWalletDB walletdb(wallet->strWalletFile);
+    walletdb.ReadSetting("nDisplayUnit", nDisplayUnit);
+    walletdb.ReadSetting("bDisplayAddresses", bDisplayAddresses);
 }
 
 int OptionsModel::rowCount(const QModelIndex & parent) const
@@ -21,7 +28,7 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
         switch(index.row())
         {
         case StartAtStartup:
-            return QVariant();
+            return QVariant(GetStartOnSystemStartup());
         case MinimizeToTray:
             return QVariant(fMinimizeToTray);
         case MapPortUPnP:
@@ -35,7 +42,11 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const
         case ProxyPort:
             return QVariant(QString::fromStdString(addrProxy.ToStringPort()));
         case Fee:
-            return QVariant(QString::fromStdString(FormatMoney(nTransactionFee)));
+            return QVariant(nTransactionFee);
+        case DisplayUnit:
+            return QVariant(nDisplayUnit);
+        case DisplayAddresses:
+            return QVariant(bDisplayAddresses);
         default:
             return QVariant();
         }
@@ -48,11 +59,11 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
     bool successful = true; /* set to false on parse error */
     if(role == Qt::EditRole)
     {
-        CWalletDB walletdb;
+        CWalletDB walletdb(wallet->strWalletFile);
         switch(index.row())
         {
         case StartAtStartup:
-            successful = false; /*TODO*/
+            successful = SetStartOnSystemStartup(value.toBool());
             break;
         case MinimizeToTray:
             fMinimizeToTray = value.toBool();
@@ -91,7 +102,7 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
         case ProxyPort:
             {
                 int nPort = atoi(value.toString().toAscii().data());
-                if (nPort > 0 && nPort < USHRT_MAX)
+                if (nPort > 0 && nPort < std::numeric_limits<unsigned short>::max())
                 {
                     addrProxy.port = htons(nPort);
                     walletdb.WriteSetting("addrProxy", addrProxy);
@@ -103,18 +114,20 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in
             }
             break;
         case Fee: {
-                int64 retval;
-                if(ParseMoney(value.toString().toStdString(), retval))
-                {
-                    nTransactionFee = retval;
-                    walletdb.WriteSetting("nTransactionFee", nTransactionFee);
-                }
-                else
-                {
-                    successful = false; // Parse error
-                }
+            nTransactionFee = value.toLongLong();
+            walletdb.WriteSetting("nTransactionFee", nTransactionFee);
             }
             break;
+        case DisplayUnit: {
+            int unit = value.toInt();
+            nDisplayUnit = unit;
+            walletdb.WriteSetting("nDisplayUnit", nDisplayUnit);
+            emit displayUnitChanged(unit);
+            }
+        case DisplayAddresses: {
+            bDisplayAddresses = value.toBool();
+            walletdb.WriteSetting("bDisplayAddresses", bDisplayAddresses);
+            }
         default:
             break;
         }
@@ -138,3 +151,13 @@ bool OptionsModel::getMinimizeOnClose()
 {
     return fMinimizeOnClose;
 }
+
+int OptionsModel::getDisplayUnit()
+{
+    return nDisplayUnit;
+}
+
+bool OptionsModel::getDisplayAddresses()
+{
+    return bDisplayAddresses;
+}