Hush lite wallet
https://faq.hush.is/sdl
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.
249 lines
7.5 KiB
249 lines
7.5 KiB
// Copyright 2019-2024 The Hush developers
|
|
// Released under the GPLv3
|
|
#ifndef SETTINGS_H
|
|
#define SETTINGS_H
|
|
|
|
#include "precompiled.h"
|
|
#include "camount.h"
|
|
|
|
using json = nlohmann::json;
|
|
|
|
struct Config {
|
|
// The randomly chosen server we are talking to OR user-specific server
|
|
QString server;
|
|
// Shouuld we only speak Tor to this server?
|
|
bool torOnly {false};
|
|
// Should we randomly try other servers if specified server is down?
|
|
bool stickyServer {false};
|
|
};
|
|
|
|
struct ToFields;
|
|
struct Tx;
|
|
|
|
struct PaymentURI {
|
|
QString addr;
|
|
QString amt;
|
|
QString memo;
|
|
|
|
// Any errors are stored here
|
|
QString error;
|
|
};
|
|
|
|
class Settings
|
|
{
|
|
public:
|
|
static Settings* init();
|
|
static Settings* getInstance();
|
|
|
|
Config getSettings();
|
|
void saveSettings(const QString& server);
|
|
|
|
bool isTestnet();
|
|
void setTestnet(bool isTestnet);
|
|
|
|
bool isSaplingAddress(QString addr);
|
|
|
|
bool isValidSaplingPrivateKey(QString pk);
|
|
|
|
bool isSyncing();
|
|
void setSyncing(bool syncing);
|
|
|
|
QString gethushdVersion();
|
|
void sethushdVersion(QString version);
|
|
|
|
void setUseEmbedded(bool r) { _useEmbedded = r; }
|
|
bool useEmbedded() { return _useEmbedded; }
|
|
|
|
void setHeadless(bool h) { _headless = h; }
|
|
bool isHeadless() { return _headless; }
|
|
|
|
int getBlockNumber();
|
|
void setBlockNumber(int number);
|
|
|
|
bool getAllowFetchPrices();
|
|
void setAllowFetchPrices(bool allow);
|
|
|
|
bool getCheckForUpdates();
|
|
void setCheckForUpdates(bool allow);
|
|
|
|
bool getUseStickyServer();
|
|
void setUseStickyServer(bool allow);
|
|
|
|
bool getUseNoteAutomation();
|
|
void setUseNoteAutomation(bool allow);
|
|
|
|
QString get_theme_name();
|
|
void set_theme_name(QString theme_name);
|
|
|
|
QString get_currency_name();
|
|
void set_currency_name(QString currency_name);
|
|
|
|
|
|
bool isSaplingActive();
|
|
|
|
void setHUSHPrice(double p) { HUSHPrice = p; }
|
|
void setEURPrice(double p) { EURPrice = p; }
|
|
void setBTCPrice(double p) { BTCPrice = p; }
|
|
void setCNYPrice(double p) { CNYPrice = p; }
|
|
void setRUBPrice(double p) { RUBPrice = p; }
|
|
void setCADPrice(double p) { CADPrice = p; }
|
|
void setSGDPrice(double p) { SGDPrice = p; }
|
|
void setCHFPrice(double p) { CHFPrice = p; }
|
|
void setINRPrice(double p) { INRPrice = p; }
|
|
void setGBPPrice(double p) { GBPPrice = p; }
|
|
void setAUDPrice(double p) { AUDPrice = p; }
|
|
void setUSDVolume(double p) { USDVolume = p; }
|
|
void setEURVolume(double p) { EURVolume = p; }
|
|
void setBTCVolume(double p) { BTCVolume = p; }
|
|
void setCNYVolume(double p) { CNYVolume = p; }
|
|
void setRUBVolume(double p) { RUBVolume = p; }
|
|
void setCADVolume(double p) { CADVolume = p; }
|
|
void setSGDVolume(double p) { SGDVolume = p; }
|
|
void setCHFVolume(double p) { CHFVolume = p; }
|
|
void setINRVolume(double p) { INRVolume = p; }
|
|
void setGBPVolume(double p) { GBPVolume = p; }
|
|
void setAUDVolume(double p) { AUDVolume = p; }
|
|
void setUSDCAP(double p) { USDCAP = p; }
|
|
void setEURCAP(double p) { EURCAP = p; }
|
|
void setBTCCAP(double p) { BTCCAP = p; }
|
|
void setCNYCAP(double p) { CNYCAP = p; }
|
|
void setRUBCAP(double p) { RUBCAP = p; }
|
|
void setCADCAP(double p) { CADCAP = p; }
|
|
void setSGDCAP(double p) { SGDCAP = p; }
|
|
void setCHFCAP(double p) { CHFCAP = p; }
|
|
void setINRCAP(double p) { INRCAP = p; }
|
|
void setGBPCAP(double p) { GBPCAP = p; }
|
|
void setAUDCAP(double p) { AUDCAP = p; }
|
|
double getHUSHPrice();
|
|
double getEURPrice();
|
|
double getBTCPrice();
|
|
double getCNYPrice();
|
|
double getRUBPrice();
|
|
double getCADPrice();
|
|
double getSGDPrice();
|
|
double getCHFPrice();
|
|
double getINRPrice();
|
|
double getGBPPrice();
|
|
double getAUDPrice();
|
|
double getUSDVolume();
|
|
double getEURVolume();
|
|
double getBTCVolume();
|
|
double getCNYVolume();
|
|
double getRUBVolume();
|
|
double getCADVolume();
|
|
double getSGDVolume();
|
|
double getCHFVolume();
|
|
double getINRVolume();
|
|
double getGBPVolume();
|
|
double getAUDVolume();
|
|
double getUSDCAP();
|
|
double getEURCAP();
|
|
double getBTCCAP();
|
|
double getCNYCAP();
|
|
double getRUBCAP();
|
|
double getCADCAP();
|
|
double getSGDCAP();
|
|
double getCHFCAP();
|
|
double getINRCAP();
|
|
double getGBPCAP();
|
|
double getAUDCAP();
|
|
|
|
|
|
// Static stuff
|
|
static const QString txidStatusMessage;
|
|
|
|
static void saveRestore(QDialog* d);
|
|
static void saveRestoreTableHeader(QTableView* table, QDialog* d, QString tablename) ;
|
|
|
|
static void openAddressInExplorer(QString address);
|
|
static void openTxInExplorer(QString txid);
|
|
|
|
static PaymentURI parseURI(QString paymentURI);
|
|
static QString paymentURIPretty(PaymentURI);
|
|
|
|
static bool isZAddress(QString addr);
|
|
static bool isTAddress(QString addr);
|
|
|
|
static QString getTokenName();
|
|
static QString getDonationAddr();
|
|
|
|
static QString getDefaultServer();
|
|
static QString getRandomServer();
|
|
static CAmount getMinerFee();
|
|
|
|
static int getMaxMobileAppTxns() { return 30; }
|
|
|
|
static int getNumberOfDecimalPlaces() {return 8;}
|
|
|
|
static bool isValidAddress(QString addr);
|
|
|
|
static QString getDefaultChainName() { return QString("main"); }
|
|
|
|
static const QString labelRegExp;
|
|
|
|
static const int updateSpeed = 30 * 1000; // 30 sec
|
|
static const int quickUpdateSpeed = 5 * 1000; // 5 sec
|
|
static const int priceRefreshSpeed = 5 * 60 * 1000; // 5 min
|
|
|
|
private:
|
|
// This class can only be accessed through Settings::getInstance()
|
|
Settings() = default;
|
|
~Settings() = default;
|
|
|
|
static Settings* instance;
|
|
|
|
QString _executable;
|
|
bool _isTestnet = false;
|
|
bool _isSyncing = false;
|
|
int _blockNumber = 0;
|
|
QString _hushdVersion = 0;
|
|
bool _useEmbedded = false;
|
|
bool _headless = false;
|
|
|
|
double HUSHPrice = 0.0;
|
|
double BTCPrice = 0.0;
|
|
double EURPrice = 0.0;
|
|
double CNYPrice = 0.0;
|
|
double RUBPrice = 0.0;
|
|
double CADPrice = 0.0;
|
|
double SGDPrice = 0.0;
|
|
double CHFPrice = 0.0;
|
|
double INRPrice = 0.0;
|
|
double GBPPrice = 0.0;
|
|
double AUDPrice = 0.0;
|
|
double USDVolume = 0.0;
|
|
double EURVolume = 0.0;
|
|
double BTCVolume = 0.0;
|
|
double CNYVolume = 0.0;
|
|
double RUBVolume = 0.0;
|
|
double CADVolume = 0.0;
|
|
double SGDVolume = 0.0;
|
|
double CHFVolume = 0.0;
|
|
double INRVolume = 0.0;
|
|
double GBPVolume = 0.0;
|
|
double AUDVolume = 0.0;
|
|
double USDCAP = 0.0;
|
|
double EURCAP = 0.0;
|
|
double BTCCAP = 0.0;
|
|
double CNYCAP = 0.0;
|
|
double RUBCAP = 0.0;
|
|
double CADCAP = 0.0;
|
|
double SGDCAP = 0.0;
|
|
double CHFCAP = 0.0;
|
|
double INRCAP = 0.0;
|
|
double GBPCAP = 0.0;
|
|
double AUDCAP = 0.0;
|
|
};
|
|
|
|
|
|
inline bool isJsonResultSuccess(const json& res) {
|
|
return res.find("result") != res.end() &&
|
|
QString::fromStdString(res["result"].get<json::string_t>()) == "success";
|
|
}
|
|
|
|
inline bool isJsonError(const json& res) {
|
|
return res.find("error") != res.end();
|
|
}
|
|
|
|
|
|
#endif // SETTINGS_H
|
|
|