Changeset View
Changeset View
Standalone View
Standalone View
src/qt/bitcoingui.cpp
Show First 20 Lines • Show All 1,413 Lines • ▼ Show 20 Lines | UnitDisplayStatusBarControl::UnitDisplayStatusBarControl( | ||||
const PlatformStyle *platformStyle) | const PlatformStyle *platformStyle) | ||||
: optionsModel(0), menu(0) { | : optionsModel(0), menu(0) { | ||||
createContextMenu(); | createContextMenu(); | ||||
setToolTip(tr("Unit to show amounts in. Click to select another unit.")); | setToolTip(tr("Unit to show amounts in. Click to select another unit.")); | ||||
QList<BitcoinUnits::Unit> units = BitcoinUnits::availableUnits(); | QList<BitcoinUnits::Unit> units = BitcoinUnits::availableUnits(); | ||||
int max_width = 0; | int max_width = 0; | ||||
const QFontMetrics fm(font()); | const QFontMetrics fm(font()); | ||||
for (const BitcoinUnits::Unit unit : units) { | for (const BitcoinUnits::Unit unit : units) { | ||||
max_width = qMax(max_width, fm.width(BitcoinUnits::name(unit))); | max_width = qMax(max_width, fm.width(BitcoinUnits::longName(unit))); | ||||
} | } | ||||
setMinimumSize(max_width, 0); | setMinimumSize(max_width, 0); | ||||
setAlignment(Qt::AlignRight | Qt::AlignVCenter); | setAlignment(Qt::AlignRight | Qt::AlignVCenter); | ||||
setStyleSheet(QString("QLabel { color : %1 }") | setStyleSheet(QString("QLabel { color : %1 }") | ||||
.arg(platformStyle->SingleColor().name())); | .arg(platformStyle->SingleColor().name())); | ||||
} | } | ||||
/** So that it responds to button clicks */ | /** So that it responds to button clicks */ | ||||
void UnitDisplayStatusBarControl::mousePressEvent(QMouseEvent *event) { | void UnitDisplayStatusBarControl::mousePressEvent(QMouseEvent *event) { | ||||
onDisplayUnitsClicked(event->pos()); | onDisplayUnitsClicked(event->pos()); | ||||
} | } | ||||
/** Creates context menu, its actions, and wires up all the relevant signals for | /** Creates context menu, its actions, and wires up all the relevant signals for | ||||
* mouse events. */ | * mouse events. */ | ||||
void UnitDisplayStatusBarControl::createContextMenu() { | void UnitDisplayStatusBarControl::createContextMenu() { | ||||
menu = new QMenu(this); | menu = new QMenu(this); | ||||
for (const BitcoinUnits::Unit u : BitcoinUnits::availableUnits()) { | for (const BitcoinUnits::Unit u : BitcoinUnits::availableUnits()) { | ||||
QAction *menuAction = new QAction(QString(BitcoinUnits::name(u)), this); | QAction *menuAction = | ||||
new QAction(QString(BitcoinUnits::longName(u)), this); | |||||
menuAction->setData(QVariant(u)); | menuAction->setData(QVariant(u)); | ||||
menu->addAction(menuAction); | menu->addAction(menuAction); | ||||
} | } | ||||
connect(menu, &QMenu::triggered, this, | connect(menu, &QMenu::triggered, this, | ||||
&UnitDisplayStatusBarControl::onMenuSelection); | &UnitDisplayStatusBarControl::onMenuSelection); | ||||
} | } | ||||
/** Lets the control know about the Options Model (and its signals) */ | /** Lets the control know about the Options Model (and its signals) */ | ||||
Show All 10 Lines | if (_optionsModel) { | ||||
// model. | // model. | ||||
updateDisplayUnit(_optionsModel->getDisplayUnit()); | updateDisplayUnit(_optionsModel->getDisplayUnit()); | ||||
} | } | ||||
} | } | ||||
/** When Display Units are changed on OptionsModel it will refresh the display | /** When Display Units are changed on OptionsModel it will refresh the display | ||||
* text of the control on the status bar */ | * text of the control on the status bar */ | ||||
void UnitDisplayStatusBarControl::updateDisplayUnit(int newUnits) { | void UnitDisplayStatusBarControl::updateDisplayUnit(int newUnits) { | ||||
setText(BitcoinUnits::name(newUnits)); | setText(BitcoinUnits::longName(newUnits)); | ||||
} | } | ||||
/** Shows context menu with Display Unit options by the mouse coordinates */ | /** Shows context menu with Display Unit options by the mouse coordinates */ | ||||
void UnitDisplayStatusBarControl::onDisplayUnitsClicked(const QPoint &point) { | void UnitDisplayStatusBarControl::onDisplayUnitsClicked(const QPoint &point) { | ||||
QPoint globalPos = mapToGlobal(point); | QPoint globalPos = mapToGlobal(point); | ||||
menu->exec(globalPos); | menu->exec(globalPos); | ||||
} | } | ||||
/** Tells underlying optionsModel to update its current display unit. */ | /** Tells underlying optionsModel to update its current display unit. */ | ||||
void UnitDisplayStatusBarControl::onMenuSelection(QAction *action) { | void UnitDisplayStatusBarControl::onMenuSelection(QAction *action) { | ||||
if (action) { | if (action) { | ||||
optionsModel->setDisplayUnit(action->data()); | optionsModel->setDisplayUnit(action->data()); | ||||
} | } | ||||
} | } |