Merge pull request #2916 from birarda/master

make transaction amounts and balances signed 64-bit
This commit is contained in:
AndrewMeadows 2014-05-23 16:36:34 -07:00
commit 4f8b2819d2
8 changed files with 22 additions and 20 deletions

View file

@ -735,7 +735,7 @@ void DomainServer::setupPendingAssignmentCredits() {
const float CREDITS_PER_HOUR = 0.10f; const float CREDITS_PER_HOUR = 0.10f;
const float CREDITS_PER_MSEC = CREDITS_PER_HOUR / (60 * 60 * 1000); const float CREDITS_PER_MSEC = CREDITS_PER_HOUR / (60 * 60 * 1000);
const int SATOSHIS_PER_MSEC = CREDITS_PER_MSEC * powf(10.0f, 8.0f); const int SATOSHIS_PER_MSEC = CREDITS_PER_MSEC * SATOSHIS_PER_CREDIT;
float pendingCredits = elapsedMsecsSinceLastPayment * SATOSHIS_PER_MSEC; float pendingCredits = elapsedMsecsSinceLastPayment * SATOSHIS_PER_MSEC;
@ -884,10 +884,10 @@ QJsonObject DomainServer::jsonObjectForNode(const SharedNodePointer& node) {
if (!nodeData->getWalletUUID().isNull()) { if (!nodeData->getWalletUUID().isNull()) {
TransactionHash::iterator i = _pendingAssignmentCredits.find(nodeData->getWalletUUID()); TransactionHash::iterator i = _pendingAssignmentCredits.find(nodeData->getWalletUUID());
double pendingCreditAmount = 0; float pendingCreditAmount = 0;
while (i != _pendingAssignmentCredits.end() && i.key() == nodeData->getWalletUUID()) { while (i != _pendingAssignmentCredits.end() && i.key() == nodeData->getWalletUUID()) {
pendingCreditAmount += i.value()->getAmount(); pendingCreditAmount += i.value()->getAmount() / (float) SATOSHIS_PER_CREDIT;
++i; ++i;
} }

View file

@ -18,13 +18,13 @@
WalletTransaction::WalletTransaction() : WalletTransaction::WalletTransaction() :
_uuid(), _uuid(),
_destinationUUID(), _destinationUUID(),
_amount(), _amount(0),
_isFinalized(false) _isFinalized(false)
{ {
} }
WalletTransaction::WalletTransaction(const QUuid& destinationUUID, double amount) : WalletTransaction::WalletTransaction(const QUuid& destinationUUID, qint64 amount) :
_uuid(QUuid::createUuid()), _uuid(QUuid::createUuid()),
_destinationUUID(destinationUUID), _destinationUUID(destinationUUID),
_amount(amount), _amount(amount),
@ -63,5 +63,5 @@ void WalletTransaction::loadFromJson(const QJsonObject& jsonObject) {
_uuid = QUuid(transactionObject.value(TRANSACTION_ID_KEY).toString()); _uuid = QUuid(transactionObject.value(TRANSACTION_ID_KEY).toString());
_destinationUUID = QUuid(transactionObject.value(TRANSACTION_DESTINATION_WALLET_ID_KEY).toString()); _destinationUUID = QUuid(transactionObject.value(TRANSACTION_DESTINATION_WALLET_ID_KEY).toString());
_amount = transactionObject.value(TRANSACTION_AMOUNT_KEY).toDouble(); _amount = transactionObject.value(TRANSACTION_AMOUNT_KEY).toInt();
} }

View file

@ -19,16 +19,16 @@
class WalletTransaction : public QObject { class WalletTransaction : public QObject {
public: public:
WalletTransaction(); WalletTransaction();
WalletTransaction(const QUuid& destinationUUID, double amount); WalletTransaction(const QUuid& destinationUUID, qint64 amount);
const QUuid& getUUID() const { return _uuid; } const QUuid& getUUID() const { return _uuid; }
void setDestinationUUID(const QUuid& destinationUUID) { _destinationUUID = destinationUUID; } void setDestinationUUID(const QUuid& destinationUUID) { _destinationUUID = destinationUUID; }
const QUuid& getDestinationUUID() const { return _destinationUUID; } const QUuid& getDestinationUUID() const { return _destinationUUID; }
double getAmount() const { return _amount; } qint64 getAmount() const { return _amount; }
void setAmount(double amount) { _amount = amount; } void setAmount(qint64 amount) { _amount = amount; }
void incrementAmount(double increment) { _amount += increment; } void incrementAmount(qint64 increment) { _amount += increment; }
bool isFinalized() const { return _isFinalized; } bool isFinalized() const { return _isFinalized; }
void setIsFinalized(bool isFinalized) { _isFinalized = isFinalized; } void setIsFinalized(bool isFinalized) { _isFinalized = isFinalized; }
@ -39,7 +39,7 @@ public:
private: private:
QUuid _uuid; QUuid _uuid;
QUuid _destinationUUID; QUuid _destinationUUID;
double _amount; qint64 _amount;
bool _isFinalized; bool _isFinalized;
}; };

View file

@ -3108,7 +3108,7 @@ void Application::updateWindowTitle(){
AccountManager& accountManager = AccountManager::getInstance(); AccountManager& accountManager = AccountManager::getInstance();
if (accountManager.getAccountInfo().hasBalance()) { if (accountManager.getAccountInfo().hasBalance()) {
float creditBalance = accountManager.getAccountInfo().getBalance() * pow(10.0f, -8.0f); float creditBalance = accountManager.getAccountInfo().getBalance() / (float) SATOSHIS_PER_CREDIT;
QString creditBalanceString; QString creditBalanceString;
creditBalanceString.sprintf("%.8f", creditBalance); creditBalanceString.sprintf("%.8f", creditBalance);

View file

@ -98,7 +98,7 @@ void AccountManager::updateBalance() {
} }
} }
void AccountManager::accountInfoBalanceChanged(quint64 newBalance) { void AccountManager::accountInfoBalanceChanged(qint64 newBalance) {
emit balanceChanged(newBalance); emit balanceChanged(newBalance);
} }

View file

@ -64,7 +64,7 @@ public slots:
void requestError(QNetworkReply::NetworkError error); void requestError(QNetworkReply::NetworkError error);
void logout(); void logout();
void updateBalance(); void updateBalance();
void accountInfoBalanceChanged(quint64 newBalance); void accountInfoBalanceChanged(qint64 newBalance);
signals: signals:
void authRequired(); void authRequired();
void authEndpointChanged(); void authEndpointChanged();
@ -73,7 +73,7 @@ signals:
void loginComplete(const QUrl& authURL); void loginComplete(const QUrl& authURL);
void loginFailed(); void loginFailed();
void logoutComplete(); void logoutComplete();
void balanceChanged(quint64 newBalance); void balanceChanged(qint64 newBalance);
private slots: private slots:
void processReply(); void processReply();
private: private:

View file

@ -83,7 +83,7 @@ void DataServerAccountInfo::setDiscourseApiKey(const QString& discourseApiKey) {
} }
} }
void DataServerAccountInfo::setBalance(quint64 balance) { void DataServerAccountInfo::setBalance(qint64 balance) {
if (!_hasBalance || _balance != balance) { if (!_hasBalance || _balance != balance) {
_balance = balance; _balance = balance;
_hasBalance = true; _hasBalance = true;

View file

@ -16,6 +16,8 @@
#include "OAuthAccessToken.h" #include "OAuthAccessToken.h"
const float SATOSHIS_PER_CREDIT = 10.0e8f;
class DataServerAccountInfo : public QObject { class DataServerAccountInfo : public QObject {
Q_OBJECT Q_OBJECT
public: public:
@ -35,8 +37,8 @@ public:
const QString& getDiscourseApiKey() const { return _discourseApiKey; } const QString& getDiscourseApiKey() const { return _discourseApiKey; }
void setDiscourseApiKey(const QString& discourseApiKey); void setDiscourseApiKey(const QString& discourseApiKey);
quint64 getBalance() const { return _balance; } qint64 getBalance() const { return _balance; }
void setBalance(quint64 balance); void setBalance(qint64 balance);
bool hasBalance() const { return _hasBalance; } bool hasBalance() const { return _hasBalance; }
void setHasBalance(bool hasBalance) { _hasBalance = hasBalance; } void setHasBalance(bool hasBalance) { _hasBalance = hasBalance; }
Q_INVOKABLE void setBalanceFromJSON(const QJsonObject& jsonObject); Q_INVOKABLE void setBalanceFromJSON(const QJsonObject& jsonObject);
@ -44,7 +46,7 @@ public:
friend QDataStream& operator<<(QDataStream &out, const DataServerAccountInfo& info); friend QDataStream& operator<<(QDataStream &out, const DataServerAccountInfo& info);
friend QDataStream& operator>>(QDataStream &in, DataServerAccountInfo& info); friend QDataStream& operator>>(QDataStream &in, DataServerAccountInfo& info);
signals: signals:
quint64 balanceChanged(quint64 newBalance); qint64 balanceChanged(qint64 newBalance);
private: private:
void swap(DataServerAccountInfo& otherInfo); void swap(DataServerAccountInfo& otherInfo);
@ -52,7 +54,7 @@ private:
QString _username; QString _username;
QString _xmppPassword; QString _xmppPassword;
QString _discourseApiKey; QString _discourseApiKey;
quint64 _balance; qint64 _balance;
bool _hasBalance; bool _hasBalance;
}; };