From: fsb4000 Date: Tue, 21 Oct 2014 07:55:35 +0000 (+0700) Subject: Qt 5 compatibility X-Git-Tag: nvc-v0.5.0~65^2~5 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=7ac0ffc894b6a23aa2e3a1e0939a15fe95fe9eca Qt 5 compatibility Совместимость с Qt 4 сохранена. (Собралось на Qt 4.8.6 и Qt 5.3.2) --- diff --git a/novacoin-qt.pro b/novacoin-qt.pro index bce60b9..592c556 100644 --- a/novacoin-qt.pro +++ b/novacoin-qt.pro @@ -2,9 +2,12 @@ TEMPLATE = app TARGET = novacoin-qt VERSION = 0.7.5 INCLUDEPATH += src src/json src/qt +QT += core gui network +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE CONFIG += no_include_pwd CONFIG += thread +CONFIG += static # for boost 1.37, add -mt to the boost libraries # use: qmake BOOST_LIB_SUFFIX=-mt @@ -15,6 +18,17 @@ CONFIG += thread # Dependency library locations can be customized with: # BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH, # BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively +BOOST_LIB_SUFFIX=-mgw49-mt-s-1_55 +BOOST_INCLUDE_PATH=C:/deps/boost_1_55_0 +BOOST_LIB_PATH=C:/deps/boost_1_55_0/stage/lib +BDB_INCLUDE_PATH=C:/deps/db-6.0.20/build_unix +BDB_LIB_PATH=C:/deps/db-6.0.20/build_unix +OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.1j/include +OPENSSL_LIB_PATH=C:/deps/openssl-1.0.1j +MINIUPNPC_INCLUDE_PATH=C:/deps/ +MINIUPNPC_LIB_PATH=C:/deps/miniupnpc +QRENCODE_INCLUDE_PATH=C:/deps/qrencode-3.4.4 +QRENCODE_LIB_PATH=C:/deps/qrencode-3.4.4/.libs OBJECTS_DIR = build MOC_DIR = build @@ -39,8 +53,8 @@ QMAKE_LFLAGS *= -fstack-protector-all --param ssp-buffer-size=1 # This can be enabled for Windows, when we switch to MinGW >= 4.4.x. } # for extra security on Windows: enable ASLR and DEP via GCC linker flags -win32:QMAKE_LFLAGS *= -Wl,--dynamicbase -Wl,--nxcompat -win32:QMAKE_LFLAGS += -static-libgcc -static-libstdc++ + +win32:QMAKE_LFLAGS *= -Wl,--large-address-aware -static # use: qmake "USE_QRCODE=1" # libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support @@ -107,7 +121,7 @@ contains(USE_LEVELDB, 1) { QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib) } LIBS += -lshlwapi - genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a + #genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a } genleveldb.target = $$PWD/src/leveldb/libleveldb.a genleveldb.depends = FORCE diff --git a/src/qt/aboutdialog.cpp b/src/qt/aboutdialog.cpp index 0b98bef..7c6a42e 100644 --- a/src/qt/aboutdialog.cpp +++ b/src/qt/aboutdialog.cpp @@ -1,11 +1,14 @@ #include "aboutdialog.h" #include "ui_aboutdialog.h" + +#include "dialogwindowflags.h" + #include "clientmodel.h" #include "version.h" AboutDialog::AboutDialog(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::AboutDialog) { ui->setupUi(this); diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index e20358c..5385709 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -134,9 +134,13 @@ void AddressBookPage::setModel(AddressTableModel *model) // Set column widths ui->tableView->horizontalHeader()->resizeSection( AddressTableModel::Address, 320); +#if QT_VERSION < 0x050000 ui->tableView->horizontalHeader()->setResizeMode( AddressTableModel::Label, QHeaderView::Stretch); - +#else + ui->tableView->horizontalHeader()->setSectionResizeMode( + AddressTableModel::Label, QHeaderView::Stretch); +#endif connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(selectionChanged())); diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index adaf0f4..aef2462 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -2,6 +2,7 @@ #include "ui_askpassphrasedialog.h" #include "guiconstants.h" +#include "dialogwindowflags.h" #include "walletmodel.h" #include @@ -11,7 +12,7 @@ extern bool fWalletUnlockMintOnly; AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::AskPassphraseDialog), mode(mode), model(0), diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 796b48a..a08eb03 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -14,7 +14,9 @@ #include #include +#if QT_VERSION < 0x050000 #include +#endif #include #include #include @@ -115,11 +117,11 @@ int main(int argc, char *argv[]) { // Do this early as we don't want to bother initializing if we are just calling IPC ipcScanRelay(argc, argv); - +#if QT_VERSION < 0x050000 // Internal string conversion is all UTF-8 QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForTr()); - +#endif Q_INIT_RESOURCE(bitcoin); QApplication app(argc, argv); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 4698c64..45e2c4c 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -32,7 +32,9 @@ #endif #include +#if QT_VERSION < 0x050000 #include +#endif #include #include #include @@ -50,11 +52,18 @@ #include #include #include +#if QT_VERSION < 0x050000 #include +#else +#include +#endif #include #include +#if QT_VERSION < 0x050000 #include +#endif #include +#include #include @@ -999,7 +1008,11 @@ void BitcoinGUI::unlockWalletMining(bool status) void BitcoinGUI::backupWallet() { +#if QT_VERSION < 0x050000 QString saveDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); +#else + QString saveDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); +#endif QString filename = QFileDialog::getSaveFileName(this, tr("Backup Wallet"), saveDir, tr("Wallet Data (*.dat)")); if(!filename.isEmpty()) { if(!walletModel->backupWallet(filename)) { diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index 07607d8..aeec7d8 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -7,6 +7,7 @@ #include "addresstablemodel.h" #include "optionsmodel.h" #include "coincontrol.h" +#include "dialogwindowflags.h" #include #include @@ -26,7 +27,7 @@ QList CoinControlDialog::payAmounts; CCoinControl* CoinControlDialog::coinControl = new CCoinControl(); CoinControlDialog::CoinControlDialog(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::CoinControlDialog), model(0) { @@ -95,7 +96,11 @@ CoinControlDialog::CoinControlDialog(QWidget *parent) : connect(ui->treeWidget, SIGNAL(itemChanged( QTreeWidgetItem*, int)), this, SLOT(viewItemChanged( QTreeWidgetItem*, int))); // click on header +#if QT_VERSION < 0x050000 ui->treeWidget->header()->setClickable(true); +#else + ui->treeWidget->header()->setSectionsClickable(true); +#endif connect(ui->treeWidget->header(), SIGNAL(sectionClicked(int)), this, SLOT(headerSectionClicked(int))); // ok button diff --git a/src/qt/dialogwindowflags.h b/src/qt/dialogwindowflags.h new file mode 100644 index 0000000..a8d55c3 --- /dev/null +++ b/src/qt/dialogwindowflags.h @@ -0,0 +1,9 @@ +#ifndef DIALOGWINDOWFLAGS_H +#define DIALOGWINDOWFLAGS_H +// Dialog Window Flags +#if QT_VERSION < 0x050000 + static const Qt::WindowFlags DIALOGWINDOWHINTS = Qt::WindowSystemMenuHint | Qt::WindowTitleHint; +#else + static const Qt::WindowFlags DIALOGWINDOWHINTS = Qt::WindowCloseButtonHint | Qt::WindowTitleHint; +#endif +#endif \ No newline at end of file diff --git a/src/qt/editaddressdialog.cpp b/src/qt/editaddressdialog.cpp index 776487c..de5b2c1 100644 --- a/src/qt/editaddressdialog.cpp +++ b/src/qt/editaddressdialog.cpp @@ -1,13 +1,15 @@ #include "editaddressdialog.h" #include "ui_editaddressdialog.h" #include "addresstablemodel.h" +#include "dialogwindowflags.h" +#include "guiconstants.h" #include "guiutil.h" #include #include EditAddressDialog::EditAddressDialog(Mode mode, QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::EditAddressDialog), mapper(0), mode(mode), model(0) { ui->setupUi(this); diff --git a/src/qt/editaddressdialog.h b/src/qt/editaddressdialog.h index 0e4183b..64c4ed4 100644 --- a/src/qt/editaddressdialog.h +++ b/src/qt/editaddressdialog.h @@ -2,6 +2,7 @@ #define EDITADDRESSDIALOG_H #include +#include "dialogwindowflags.h" QT_BEGIN_NAMESPACE class QDataWidgetMapper; diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index ab20bca..646e27c 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -10,8 +10,12 @@ #include #include #include +#if QT_VERSION >= 0x050000 +#include +#else #include -#include // For Qt::escape +#endif +#include // For Qt::mightBeRichText #include #include #include @@ -84,7 +88,12 @@ bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out) SendCoinsRecipient rv; rv.address = uri.path(); rv.amount = 0; +#if QT_VERSION < 0x050000 QList > items = uri.queryItems(); +#else + QUrlQuery uriQuery(uri); + QList > items = uriQuery.queryItems(); +#endif for (QList >::iterator i = items.begin(); i != items.end(); i++) { bool fShouldReturnFalse = false; @@ -137,7 +146,11 @@ bool parseBitcoinURI(QString uri, SendCoinsRecipient *out) QString HtmlEscape(const QString& str, bool fMultiLine) { +#if QT_VERSION < 0x050000 QString escaped = Qt::escape(str); +#else + QString escaped = str.toHtmlEscaped(); +#endif if(fMultiLine) { escaped = escaped.replace("\n", "
\n"); @@ -172,7 +185,11 @@ QString getSaveFileName(QWidget *parent, const QString &caption, QString myDir; if(dir.isEmpty()) // Default to user documents location { +#if QT_VERSION < 0x050000 myDir = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation); +#else + myDir = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); +#endif } else { diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 20189a7..41486c9 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -5,6 +5,8 @@ #include "monitoreddatamapper.h" #include "netbase.h" #include "optionsmodel.h" +#include "guiconstants.h" +#include "dialogwindowflags.h" #include #include @@ -14,7 +16,7 @@ #include OptionsDialog::OptionsDialog(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::OptionsDialog), model(0), mapper(0), diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index 898f940..59cb0ac 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -45,7 +45,11 @@ public: bool confirmed = index.data(TransactionTableModel::ConfirmedRole).toBool(); QVariant value = index.data(Qt::ForegroundRole); QColor foreground = option.palette.color(QPalette::Text); +#if QT_VERSION < 0x050000 if(qVariantCanConvert(value)) +#else + if(value.canConvert(QMetaType::QColor)) +#endif { foreground = qvariant_cast(value); } diff --git a/src/qt/qrcodedialog.cpp b/src/qt/qrcodedialog.cpp index 2935428..21a5f00 100644 --- a/src/qt/qrcodedialog.cpp +++ b/src/qt/qrcodedialog.cpp @@ -2,6 +2,7 @@ #include "ui_qrcodedialog.h" #include "bitcoinunits.h" +#include "dialogwindowflags.h" #include "guiconstants.h" #include "guiutil.h" #include "optionsmodel.h" @@ -12,7 +13,7 @@ #include QRCodeDialog::QRCodeDialog(const QString &addr, const QString &label, bool enableReq, QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::QRCodeDialog), model(0), address(addr) diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index ad8497c..3d498f0 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -4,6 +4,7 @@ #include "clientmodel.h" #include "bitcoinrpc.h" #include "guiutil.h" +#include "dialogwindowflags.h" #include #include @@ -186,7 +187,7 @@ void RPCExecutor::request(const QString &command) } RPCConsole::RPCConsole(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::RPCConsole), historyPtr(0) { diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 71ac191..0946b2f 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -11,6 +11,8 @@ #include "optionsmodel.h" #include "sendcoinsentry.h" #include "guiutil.h" +#include "guiconstants.h" +#include "dialogwindowflags.h" #include "askpassphrasedialog.h" #include "coincontrol.h" @@ -23,7 +25,7 @@ #include SendCoinsDialog::SendCoinsDialog(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::SendCoinsDialog), model(0) { @@ -157,7 +159,11 @@ void SendCoinsDialog::on_sendButton_clicked() QStringList formatted; foreach(const SendCoinsRecipient &rcp, recipients) { +#if QT_VERSION < 0x050000 formatted.append(tr("%1 to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), Qt::escape(rcp.label), rcp.address)); +#else + formatted.append(tr("%1 to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), rcp.label.toHtmlEscaped(), rcp.address)); +#endif } fNewRecipientAllowed = false; diff --git a/src/qt/signverifymessagedialog.cpp b/src/qt/signverifymessagedialog.cpp index 18154eb..88f8a35 100644 --- a/src/qt/signverifymessagedialog.cpp +++ b/src/qt/signverifymessagedialog.cpp @@ -4,6 +4,8 @@ #include "addressbookpage.h" #include "base58.h" #include "guiutil.h" +#include "guiconstants.h" +#include "dialogwindowflags.h" #include "init.h" #include "main.h" #include "optionsmodel.h" @@ -16,7 +18,7 @@ #include SignVerifyMessageDialog::SignVerifyMessageDialog(QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::SignVerifyMessageDialog), model(0) { diff --git a/src/qt/transactiondescdialog.cpp b/src/qt/transactiondescdialog.cpp index 3bd4808..e37b71e 100644 --- a/src/qt/transactiondescdialog.cpp +++ b/src/qt/transactiondescdialog.cpp @@ -2,11 +2,12 @@ #include "ui_transactiondescdialog.h" #include "transactiontablemodel.h" +#include "dialogwindowflags.h" #include TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *parent) : - QDialog(parent), + QDialog(parent, DIALOGWINDOWHINTS), ui(new Ui::TransactionDescDialog) { ui->setupUi(this); diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 1397017..c36c16a 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -183,8 +183,12 @@ void TransactionView::setModel(WalletModel *model) TransactionTableModel::Date, 120); transactionView->horizontalHeader()->resizeSection( TransactionTableModel::Type, 120); +#if QT_VERSION < 0x050000 transactionView->horizontalHeader()->setResizeMode( TransactionTableModel::ToAddress, QHeaderView::Stretch); +#else + transactionView->horizontalHeader()->setSectionResizeMode(TransactionTableModel::ToAddress, QHeaderView::Stretch); +#endif transactionView->horizontalHeader()->resizeSection( TransactionTableModel::Amount, 100); } diff --git a/src/util.cpp b/src/util.cpp index 90af7b1..5422d0b 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -393,7 +393,7 @@ string FormatMoney(int64 n, bool fPlus) int64 n_abs = (n > 0 ? n : -n); int64 quotient = n_abs/COIN; int64 remainder = n_abs%COIN; - string str = strprintf("%"PRI64d".%06"PRI64d, quotient, remainder); + string str = strprintf("%"PRI64d".%08"PRI64d, quotient, remainder); // Right-trim excess zeros before the decimal point: int nTrim = 0;