Skip to content

Commit

Permalink
omnicore_qtutils : move StripTrailingZeros() & add PopulateSimpleDial…
Browse files Browse the repository at this point in the history
…og()
  • Loading branch information
zathras-crypto committed Apr 14, 2015
1 parent b14074f commit 0346243
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 22 deletions.
9 changes: 6 additions & 3 deletions src/Makefile.qt.include
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand Down Expand Up @@ -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 \
Expand Down Expand Up @@ -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 = \
Expand Down
18 changes: 0 additions & 18 deletions src/mastercore_parse_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 0 additions & 1 deletion src/mastercore_parse_string.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
66 changes: 66 additions & 0 deletions src/qt/omnicore_qtutils.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include "omnicore_qtutils.h"
#include "guiutil.h"

#include <string>
#include <QDialog>
#include <QVBoxLayout>
#include <QTextEdit>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QObject>
#include <QWidget>

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
20 changes: 20 additions & 0 deletions src/qt/omnicore_qtutils.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#ifndef OMNICORE_QTUTILS
#define OMNICORE_QTUTILS

#include <QDialog>
#include <string>

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

0 comments on commit 0346243

Please sign in to comment.