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

// 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