From 03462435fa036c435784f85264e0ef4f9132f454 Mon Sep 17 00:00:00 2001 From: zathras-crypto Date: Mon, 13 Apr 2015 18:56:27 -0700 Subject: [PATCH] omnicore_qtutils : move StripTrailingZeros() & add PopulateSimpleDialog() --- src/Makefile.qt.include | 9 +++-- src/mastercore_parse_string.cpp | 18 --------- src/mastercore_parse_string.h | 1 - src/qt/omnicore_qtutils.cpp | 66 +++++++++++++++++++++++++++++++++ src/qt/omnicore_qtutils.h | 20 ++++++++++ 5 files changed, 92 insertions(+), 22 deletions(-) create mode 100644 src/qt/omnicore_qtutils.cpp create mode 100644 src/qt/omnicore_qtutils.h diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 9903341c985d9..49b8b3eedecf7 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -155,7 +155,8 @@ QT_MOC_CPP = \ qt/moc_omnicore_init.cpp \ qt/moc_metadexdialog.cpp \ qt/moc_metadexcanceldialog.cpp \ - qt/moc_orderhistorydialog.cpp + qt/moc_orderhistorydialog.cpp \ + qt/moc_omnicore_qtutils.cpp BITCOIN_MM = \ qt/macdockiconhandler.mm \ @@ -236,7 +237,8 @@ BITCOIN_QT_H = \ qt/metadexdialog.h \ qt/metadexcanceldialog.h \ qt/orderhistorydialog.h \ - qt/sendmpdialog.h + qt/sendmpdialog.h \ + qt/omnicore_qtutils.h RES_ICONS = \ qt/res/icons/add.png \ @@ -363,7 +365,8 @@ BITCOIN_QT_CPP += \ qt/omnicore_init.cpp \ qt/metadexdialog.cpp \ qt/metadexcanceldialog.cpp \ - qt/orderhistorydialog.cpp + qt/orderhistorydialog.cpp \ + qt/omnicore_qtutils.cpp endif RES_IMAGES = \ diff --git a/src/mastercore_parse_string.cpp b/src/mastercore_parse_string.cpp index b34721d09414c..f2cd227e4e5c4 100644 --- a/src/mastercore_parse_string.cpp +++ b/src/mastercore_parse_string.cpp @@ -63,22 +63,4 @@ int64_t StrToInt64(const std::string& str, bool divisible) return nAmount; } -// Strip trailing zeros from a string containing a divisible value - TEMP - MOVE TO UTILS WHEN MERGED -std::string StripTrailingZeros(const std::string& inputStr) -{ - size_t dot = inputStr.find("."); - std::string outputStr = inputStr; // make a copy we will manipulate and return - if (dot==std::string::npos) { // could not find a decimal marker, unsafe - return original input string - return inputStr; - } - size_t lastZero = outputStr.find_last_not_of('0') + 1; - if (lastZero > dot) { // trailing zeros are after decimal marker, safe to remove - outputStr.erase ( lastZero, std::string::npos ); - if (outputStr.length() > 0) { std::string::iterator it = outputStr.end() - 1; if (*it == '.') { outputStr.erase(it); } } //get rid of trailing dot if needed - } else { // last non-zero is before the decimal marker, this is a whole number - outputStr.erase ( dot, std::string::npos ); - } - return outputStr; -} - } // namespace mastercore diff --git a/src/mastercore_parse_string.h b/src/mastercore_parse_string.h index b12b4d6a4049a..b66cea424625b 100644 --- a/src/mastercore_parse_string.h +++ b/src/mastercore_parse_string.h @@ -15,7 +15,6 @@ namespace mastercore // amounts. // Any minus sign invalidates. int64_t StrToInt64(const std::string& str, bool divisible); -std::string StripTrailingZeros(const std::string& inputStr); } #endif // _MASTERCOIN_PARSE_STRRING diff --git a/src/qt/omnicore_qtutils.cpp b/src/qt/omnicore_qtutils.cpp new file mode 100644 index 0000000000000..14fc96f030b37 --- /dev/null +++ b/src/qt/omnicore_qtutils.cpp @@ -0,0 +1,66 @@ +#include "omnicore_qtutils.h" +#include "guiutil.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace mastercore +{ + +/** + * Sets up a simple dialog layout that can be used to provide selectable text to the user + * + * Note: used in place of standard dialogs in cases where text selection & copy to clipboard functions are useful + */ +void PopulateSimpleDialog(const std::string& content, const std::string& title, const std::string& tooltip) +{ + QDialog *simpleDlg = new QDialog; + QLayout *dlgLayout = new QVBoxLayout; + dlgLayout->setSpacing(12); + dlgLayout->setMargin(12); + QTextEdit *dlgTextEdit = new QTextEdit; + dlgTextEdit->setText(QString::fromStdString(content)); + dlgTextEdit->setStatusTip(QString::fromStdString(tooltip)); + dlgTextEdit->setReadOnly(true); + dlgTextEdit->setTextInteractionFlags(dlgTextEdit->textInteractionFlags() | Qt::TextSelectableByKeyboard); + dlgLayout->addWidget(dlgTextEdit); + QPushButton *closeButton = new QPushButton(QObject::tr("&Close")); + closeButton->setDefault(true); + QDialogButtonBox *buttonBox = new QDialogButtonBox; + buttonBox->addButton(closeButton, QDialogButtonBox::AcceptRole); + dlgLayout->addWidget(buttonBox); + QObject::connect(buttonBox, SIGNAL(accepted()), simpleDlg, SLOT(accept())); + simpleDlg->setAttribute(Qt::WA_DeleteOnClose); + simpleDlg->setWindowTitle(QString::fromStdString(title)); + simpleDlg->setLayout(dlgLayout); + simpleDlg->resize(700, 360); + if (simpleDlg->exec() == QDialog::Accepted) { } //do nothing but close +} + +/** + * Strips trailing zeros from a string containing a divisible value + */ +std::string StripTrailingZeros(const std::string& inputStr) +{ + size_t dot = inputStr.find("."); + std::string outputStr = inputStr; // make a copy we will manipulate and return + if (dot==std::string::npos) { // could not find a decimal marker, unsafe - return original input string + return inputStr; + } + size_t lastZero = outputStr.find_last_not_of('0') + 1; + if (lastZero > dot) { // trailing zeros are after decimal marker, safe to remove + outputStr.erase ( lastZero, std::string::npos ); + if (outputStr.length() > 0) { std::string::iterator it = outputStr.end() - 1; if (*it == '.') { outputStr.erase(it); } } //get rid of trailing dot if needed + } else { // last non-zero is before the decimal marker, this is a whole number + outputStr.erase ( dot, std::string::npos ); + } + return outputStr; +} + +} // end namespace diff --git a/src/qt/omnicore_qtutils.h b/src/qt/omnicore_qtutils.h new file mode 100644 index 0000000000000..d0148963ffb98 --- /dev/null +++ b/src/qt/omnicore_qtutils.h @@ -0,0 +1,20 @@ +#ifndef OMNICORE_QTUTILS +#define OMNICORE_QTUTILS + +#include +#include + +namespace mastercore +{ + /** + * Sets up a simple dialog layout that can be used to provide selectable text to the user + */ + void PopulateSimpleDialog(const std::string& content, const std::string& title, const std::string& tooltip); + + /** + * Strips trailing zeros from a string containing a divisible value + */ + std::string StripTrailingZeros(const std::string& inputStr); +} + +#endif // OMNICORE_QTUTILS