Merge pull request #2 from UdjinM6/Digits
Alternative digits implementation
This commit is contained in:
commit
a23c61e37e
@ -178,43 +178,6 @@ QString BitcoinUnits::format(int unit, const CAmount& nIn, bool fPlus, Separator
|
|||||||
// Please take care to use formatHtmlWithUnit instead, when
|
// Please take care to use formatHtmlWithUnit instead, when
|
||||||
// appropriate.
|
// appropriate.
|
||||||
|
|
||||||
QString BitcoinUnits::simpleFormat(int unit, const CAmount& nIn, bool fPlus, SeparatorStyle separators)
|
|
||||||
{
|
|
||||||
// Note: not using straight sprintf here because we do NOT want
|
|
||||||
// localized number formatting.
|
|
||||||
if(!valid(unit))
|
|
||||||
return QString(); // Refuse to format invalid unit
|
|
||||||
qint64 n = (qint64)nIn;
|
|
||||||
qint64 coin = factor(unit);
|
|
||||||
int num_decimals = decimals(unit);
|
|
||||||
qint64 n_abs = (n > 0 ? n : -n);
|
|
||||||
qint64 quotient = n_abs / coin;
|
|
||||||
qint64 remainder = n_abs % coin;
|
|
||||||
QString quotient_str = QString::number(quotient);
|
|
||||||
QString remainder_str = QString::number(remainder).rightJustified(num_decimals, '0');
|
|
||||||
|
|
||||||
if (n < 0)
|
|
||||||
quotient_str.insert(0, '-');
|
|
||||||
else if (fPlus && n > 0)
|
|
||||||
quotient_str.insert(0, '+');
|
|
||||||
|
|
||||||
return quotient_str + QString(".") + remainder_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString BitcoinUnits::roundWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators)
|
|
||||||
{
|
|
||||||
QSettings settings;
|
|
||||||
int digits = settings.value("digits").toInt();
|
|
||||||
|
|
||||||
QString result = simpleFormat(unit, amount, plussign);
|
|
||||||
double dAmount = result.toDouble();
|
|
||||||
|
|
||||||
QString rounded;
|
|
||||||
rounded.setNum(dAmount, 'f', digits);
|
|
||||||
|
|
||||||
return rounded + QString(" ") + name(unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString BitcoinUnits::formatWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators)
|
QString BitcoinUnits::formatWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators)
|
||||||
{
|
{
|
||||||
return format(unit, amount, plussign, separators) + QString(" ") + name(unit);
|
return format(unit, amount, plussign, separators) + QString(" ") + name(unit);
|
||||||
@ -227,6 +190,23 @@ QString BitcoinUnits::formatHtmlWithUnit(int unit, const CAmount& amount, bool p
|
|||||||
return QString("<span style='white-space: nowrap;'>%1</span>").arg(str);
|
return QString("<span style='white-space: nowrap;'>%1</span>").arg(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString BitcoinUnits::floorWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators)
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
int digits = settings.value("digits").toInt();
|
||||||
|
|
||||||
|
QString result = format(unit, amount, plussign, separators);
|
||||||
|
if(decimals(unit) > digits) result.chop(decimals(unit) - digits);
|
||||||
|
|
||||||
|
return result + QString(" ") + name(unit);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString BitcoinUnits::floorHtmlWithUnit(int unit, const CAmount& amount, bool plussign, SeparatorStyle separators)
|
||||||
|
{
|
||||||
|
QString str(floorWithUnit(unit, amount, plussign, separators));
|
||||||
|
str.replace(QChar(THIN_SP_CP), QString(THIN_SP_HTML));
|
||||||
|
return QString("<span style='white-space: nowrap;'>%1</span>").arg(str);
|
||||||
|
}
|
||||||
|
|
||||||
bool BitcoinUnits::parse(int unit, const QString &value, CAmount *val_out)
|
bool BitcoinUnits::parse(int unit, const QString &value, CAmount *val_out)
|
||||||
{
|
{
|
||||||
|
@ -93,8 +93,10 @@ public:
|
|||||||
static QString simpleFormat(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
static QString simpleFormat(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
||||||
//! Format as string (with unit)
|
//! Format as string (with unit)
|
||||||
static QString formatWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
static QString formatWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
||||||
static QString roundWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
|
||||||
static QString formatHtmlWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
static QString formatHtmlWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
||||||
|
//! Format as string (with unit) but floor value up to "digits" settings
|
||||||
|
static QString floorWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
||||||
|
static QString floorHtmlWithUnit(int unit, const CAmount& amount, bool plussign=false, SeparatorStyle separators=separatorStandard);
|
||||||
//! Parse string to coin amount
|
//! Parse string to coin amount
|
||||||
static bool parse(int unit, const QString &value, CAmount *val_out);
|
static bool parse(int unit, const QString &value, CAmount *val_out);
|
||||||
//! Gets title for amount column including current display unit if optionsModel reference available */
|
//! Gets title for amount column including current display unit if optionsModel reference available */
|
||||||
|
@ -186,15 +186,15 @@ void OverviewPage::setBalance(const CAmount& balance, const CAmount& unconfirmed
|
|||||||
currentWatchOnlyBalance = watchOnlyBalance;
|
currentWatchOnlyBalance = watchOnlyBalance;
|
||||||
currentWatchUnconfBalance = watchUnconfBalance;
|
currentWatchUnconfBalance = watchUnconfBalance;
|
||||||
currentWatchImmatureBalance = watchImmatureBalance;
|
currentWatchImmatureBalance = watchImmatureBalance;
|
||||||
ui->labelBalance->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, balance, false, BitcoinUnits::separatorAlways));
|
ui->labelBalance->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, balance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelUnconfirmed->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, unconfirmedBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelUnconfirmed->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, unconfirmedBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelImmature->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, immatureBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelImmature->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, immatureBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelAnonymized->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, anonymizedBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelAnonymized->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, anonymizedBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelTotal->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, balance + unconfirmedBalance + immatureBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelTotal->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, balance + unconfirmedBalance + immatureBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelWatchAvailable->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, watchOnlyBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelWatchAvailable->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchOnlyBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelWatchPending->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, watchUnconfBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelWatchPending->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchUnconfBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelWatchImmature->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, watchImmatureBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelWatchImmature->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchImmatureBalance, false, BitcoinUnits::separatorAlways));
|
||||||
ui->labelWatchTotal->setText(BitcoinUnits::roundWithUnit(nDisplayUnit, watchOnlyBalance + watchUnconfBalance + watchImmatureBalance, false, BitcoinUnits::separatorAlways));
|
ui->labelWatchTotal->setText(BitcoinUnits::floorHtmlWithUnit(nDisplayUnit, watchOnlyBalance + watchUnconfBalance + watchImmatureBalance, false, BitcoinUnits::separatorAlways));
|
||||||
|
|
||||||
// only show immature (newly mined) balance if it's non-zero, so as not to complicate things
|
// only show immature (newly mined) balance if it's non-zero, so as not to complicate things
|
||||||
// for the non-mining users
|
// for the non-mining users
|
||||||
|
Loading…
Reference in New Issue
Block a user