Qt5 compatibility
This commit squashes all the changes in the Qt5 branch relative to master. Backward compatibility with Qt4 is retained. Original authors: - Philip Kaufmann <phil.kaufmann@t-online.de> - Jonas Schnelli <jonas.schnelli@include7.ch>
This commit is contained in:
parent
365ab225c0
commit
25c0cce7fb
17 changed files with 90 additions and 14 deletions
|
@ -3,7 +3,8 @@ TARGET = bitcoin-qt
|
|||
macx:TARGET = "Bitcoin-Qt"
|
||||
VERSION = 0.8.2
|
||||
INCLUDEPATH += src src/json src/qt
|
||||
QT += network
|
||||
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
|
||||
|
@ -211,6 +212,7 @@ HEADERS += src/qt/bitcoingui.h \
|
|||
src/leveldb.h \
|
||||
src/threadsafety.h \
|
||||
src/limitedmap.h \
|
||||
src/qt/macnotificationhandler.h \
|
||||
src/qt/splashscreen.h
|
||||
|
||||
SOURCES += src/qt/bitcoin.cpp \
|
||||
|
@ -312,6 +314,7 @@ DEFINES += BITCOIN_QT_TEST
|
|||
macx: CONFIG -= app_bundle
|
||||
}
|
||||
|
||||
# Todo: Remove this line when switching to Qt5, as that option was removed
|
||||
CODECFORTR = UTF-8
|
||||
|
||||
# for lrelease/lupdate
|
||||
|
@ -335,6 +338,7 @@ QMAKE_EXTRA_COMPILERS += TSQM
|
|||
OTHER_FILES += README.md \
|
||||
doc/*.rst \
|
||||
doc/*.txt \
|
||||
doc/*.md \
|
||||
src/qt/res/bitcoin-qt.rc \
|
||||
src/test/*.cpp \
|
||||
src/test/*.h \
|
||||
|
|
|
@ -28,6 +28,12 @@ for Ubuntu >= 12.04 (please read the 'Berkely DB version warning' below):
|
|||
libboost-filesystem-dev libboost-program-options-dev libboost-thread-dev \
|
||||
libssl-dev libdb++-dev libminiupnpc-dev
|
||||
|
||||
For Qt 5 you need the following, otherwise you get an error with lrelease when running qmake:
|
||||
|
||||
::
|
||||
|
||||
apt-get install qt5-qmake libqt5gui5 libqt5core5 libqt5dbus5 qttools5-dev-tools
|
||||
|
||||
then execute the following:
|
||||
|
||||
::
|
||||
|
|
|
@ -143,8 +143,13 @@ void AddressBookPage::setModel(AddressTableModel *model)
|
|||
ui->tableView->sortByColumn(0, Qt::AscendingOrder);
|
||||
|
||||
// Set column widths
|
||||
#if QT_VERSION < 0x050000
|
||||
ui->tableView->horizontalHeader()->setResizeMode(AddressTableModel::Label, QHeaderView::Stretch);
|
||||
ui->tableView->horizontalHeader()->setResizeMode(AddressTableModel::Address, QHeaderView::ResizeToContents);
|
||||
#else
|
||||
ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Label, QHeaderView::Stretch);
|
||||
ui->tableView->horizontalHeader()->setSectionResizeMode(AddressTableModel::Address, QHeaderView::ResizeToContents);
|
||||
#endif
|
||||
|
||||
connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
|
||||
this, SLOT(selectionChanged()));
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
#include "splashscreen.h"
|
||||
|
||||
#include <QMessageBox>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QTextCodec>
|
||||
#endif
|
||||
#include <QLocale>
|
||||
#include <QTimer>
|
||||
#include <QTranslator>
|
||||
|
@ -118,9 +120,11 @@ int main(int argc, char *argv[])
|
|||
// Command-line options take precedence:
|
||||
ParseParameters(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);
|
||||
|
|
|
@ -44,7 +44,9 @@
|
|||
#include <QMovie>
|
||||
#include <QTimer>
|
||||
#include <QDragEnterEvent>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QUrl>
|
||||
#endif
|
||||
#include <QMimeData>
|
||||
#include <QStyle>
|
||||
#include <QSettings>
|
||||
|
|
|
@ -13,8 +13,12 @@
|
|||
#include <QDoubleValidator>
|
||||
#include <QFont>
|
||||
#include <QLineEdit>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QUrlQuery>
|
||||
#else
|
||||
#include <QUrl>
|
||||
#include <QTextDocument> // For Qt::escape
|
||||
#endif
|
||||
#include <QTextDocument> // for Qt::mightBeRichText
|
||||
#include <QAbstractItemView>
|
||||
#include <QClipboard>
|
||||
#include <QFileDialog>
|
||||
|
@ -86,7 +90,13 @@ bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
|
|||
SendCoinsRecipient rv;
|
||||
rv.address = uri.path();
|
||||
rv.amount = 0;
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
QList<QPair<QString, QString> > items = uri.queryItems();
|
||||
#else
|
||||
QUrlQuery uriQuery(uri);
|
||||
QList<QPair<QString, QString> > items = uriQuery.queryItems();
|
||||
#endif
|
||||
for (QList<QPair<QString, QString> >::iterator i = items.begin(); i != items.end(); i++)
|
||||
{
|
||||
bool fShouldReturnFalse = false;
|
||||
|
@ -139,7 +149,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", "<br>\n");
|
||||
|
@ -176,7 +190,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
|
||||
{
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
#include <QMenu>
|
||||
#include <QWidget>
|
||||
|
||||
extern void qt_mac_set_dock_menu(QMenu*);
|
||||
#include <QTemporaryFile>
|
||||
#include <QImageWriter>
|
||||
|
||||
#undef slots
|
||||
#include <Cocoa/Cocoa.h>
|
||||
|
@ -47,11 +47,11 @@ extern void qt_mac_set_dock_menu(QMenu*);
|
|||
MacDockIconHandler::MacDockIconHandler() : QObject()
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
this->m_dockIconClickEventHandler = [[DockIconClickEventHandler alloc] initWithDockIconHandler:this];
|
||||
|
||||
this->m_dockIconClickEventHandler = [[DockIconClickEventHandler alloc] initWithDockIconHandler:this];
|
||||
this->m_dummyWidget = new QWidget();
|
||||
this->m_dockMenu = new QMenu(this->m_dummyWidget);
|
||||
qt_mac_set_dock_menu(this->m_dockMenu);
|
||||
|
||||
[pool release];
|
||||
}
|
||||
|
||||
|
@ -74,15 +74,29 @@ QMenu *MacDockIconHandler::dockMenu()
|
|||
void MacDockIconHandler::setIcon(const QIcon &icon)
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
NSImage *image;
|
||||
NSImage *image = nil;
|
||||
if (icon.isNull())
|
||||
image = [[NSImage imageNamed:@"NSApplicationIcon"] retain];
|
||||
else {
|
||||
// generate NSImage from QIcon and use this as dock icon.
|
||||
QSize size = icon.actualSize(QSize(128, 128));
|
||||
QPixmap pixmap = icon.pixmap(size);
|
||||
CGImageRef cgImage = pixmap.toMacCGImageRef();
|
||||
image = [[NSImage alloc] initWithCGImage:cgImage size:NSZeroSize];
|
||||
CFRelease(cgImage);
|
||||
|
||||
// write temp file hack (could also be done through QIODevice [memory])
|
||||
QTemporaryFile notificationIconFile;
|
||||
if (!pixmap.isNull() && notificationIconFile.open()) {
|
||||
QImageWriter writer(¬ificationIconFile, "PNG");
|
||||
if (writer.write(pixmap.toImage())) {
|
||||
const char *cString = notificationIconFile.fileName().toUtf8().data();
|
||||
NSString *macString = [NSString stringWithCString:cString encoding:NSUTF8StringEncoding];
|
||||
image = [[NSImage alloc] initWithContentsOfFile:macString];
|
||||
}
|
||||
}
|
||||
|
||||
if(!image) {
|
||||
// if testnet image could not be created, load std. app icon
|
||||
image = [[NSImage imageNamed:@"NSApplicationIcon"] retain];
|
||||
}
|
||||
}
|
||||
|
||||
[NSApp setApplicationIconImage:image];
|
||||
|
|
|
@ -18,7 +18,9 @@
|
|||
#include <QLocalServer>
|
||||
#include <QLocalSocket>
|
||||
#include <QStringList>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QUrl>
|
||||
#endif
|
||||
|
||||
using namespace boost;
|
||||
|
||||
|
|
|
@ -7,7 +7,9 @@
|
|||
#include "optionsmodel.h"
|
||||
|
||||
#include <QPixmap>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QUrl>
|
||||
#endif
|
||||
|
||||
#include <qrencode.h>
|
||||
|
||||
|
|
|
@ -8,7 +8,9 @@
|
|||
#include <QTime>
|
||||
#include <QThread>
|
||||
#include <QKeyEvent>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QUrl>
|
||||
#endif
|
||||
#include <QScrollBar>
|
||||
|
||||
#include <openssl/crypto.h>
|
||||
|
|
|
@ -93,7 +93,11 @@ void SendCoinsDialog::on_sendButton_clicked()
|
|||
QStringList formatted;
|
||||
foreach(const SendCoinsRecipient &rcp, recipients)
|
||||
{
|
||||
#if QT_VERSION < 0x050000
|
||||
formatted.append(tr("<b>%1</b> to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), Qt::escape(rcp.label), rcp.address));
|
||||
#else
|
||||
formatted.append(tr("<b>%1</b> to %2 (%3)").arg(BitcoinUnits::formatWithUnit(BitcoinUnits::BTC, rcp.amount), rcp.label.toHtmlEscaped(), rcp.address));
|
||||
#endif
|
||||
}
|
||||
|
||||
fNewRecipientAllowed = false;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "util.h"
|
||||
|
||||
#include <QPainter>
|
||||
#undef loop /* ugh, remove this when the #define loop is gone from util.h */
|
||||
#include <QApplication>
|
||||
|
||||
SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f) :
|
||||
|
|
|
@ -176,7 +176,11 @@ void TransactionView::setModel(WalletModel *model)
|
|||
transactionView->horizontalHeader()->resizeSection(TransactionTableModel::Status, 23);
|
||||
transactionView->horizontalHeader()->resizeSection(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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,11 +8,9 @@
|
|||
#include "bitcoingui.h"
|
||||
#include "walletstack.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QMessageBox>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
WalletFrame::WalletFrame(BitcoinGUI *_gui) :
|
||||
QFrame(_gui),
|
||||
gui(_gui),
|
||||
|
|
|
@ -17,8 +17,9 @@ class WalletStack;
|
|||
class WalletFrame : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WalletFrame(BitcoinGUI *_gui);
|
||||
explicit WalletFrame(BitcoinGUI *_gui = 0);
|
||||
~WalletFrame();
|
||||
|
||||
void setClientModel(ClientModel *clientModel);
|
||||
|
|
|
@ -40,6 +40,7 @@ QT_END_NAMESPACE
|
|||
class WalletStack : public QStackedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WalletStack(QWidget *parent = 0);
|
||||
~WalletStack();
|
||||
|
|
|
@ -21,7 +21,11 @@
|
|||
#include <QHBoxLayout>
|
||||
#include <QVBoxLayout>
|
||||
#include <QAction>
|
||||
#if QT_VERSION < 0x050000
|
||||
#include <QDesktopServices>
|
||||
#else
|
||||
#include <QStandardPaths>
|
||||
#endif
|
||||
#include <QFileDialog>
|
||||
#include <QPushButton>
|
||||
|
||||
|
@ -232,7 +236,11 @@ void WalletView::encryptWallet(bool status)
|
|||
|
||||
void WalletView::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)) {
|
||||
|
|
Loading…
Reference in a new issue