Merge #7636: Add bitcoin address label to request payment QR code

1c2a1ba Add address label to request payment QR Code (QT) (Francesco 'makevoid' Canessa)
This commit is contained in:
Jonas Schnelli 2016-06-14 13:17:39 +02:00
commit fb0ac482ee
No known key found for this signature in database
GPG Key ID: 29D4BCB6416F53EC
4 changed files with 20 additions and 7 deletions

View File

@ -22,7 +22,7 @@
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>300</width> <width>300</width>
<height>300</height> <height>320</height>
</size> </size>
</property> </property>
<property name="toolTip"> <property name="toolTip">

View File

@ -43,7 +43,7 @@ static const int TOOLTIP_WRAP_THRESHOLD = 80;
static const int MAX_URI_LENGTH = 255; static const int MAX_URI_LENGTH = 255;
/* QRCodeDialog -- size of exported QR Code image */ /* QRCodeDialog -- size of exported QR Code image */
#define EXPORT_IMAGE_SIZE 256 #define QR_IMAGE_SIZE 300
/* Number of frames in spinner animation */ /* Number of frames in spinner animation */
#define SPINNER_FRAMES 36 #define SPINNER_FRAMES 36

View File

@ -45,7 +45,7 @@ QImage QRImageWidget::exportImage()
{ {
if(!pixmap()) if(!pixmap())
return QImage(); return QImage();
return pixmap()->toImage().scaled(EXPORT_IMAGE_SIZE, EXPORT_IMAGE_SIZE); return pixmap()->toImage();
} }
void QRImageWidget::mousePressEvent(QMouseEvent *event) void QRImageWidget::mousePressEvent(QMouseEvent *event)
@ -166,20 +166,32 @@ void ReceiveRequestDialog::update()
ui->lblQRCode->setText(tr("Error encoding URI into QR Code.")); ui->lblQRCode->setText(tr("Error encoding URI into QR Code."));
return; return;
} }
QImage myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32); QImage qrImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32);
myImage.fill(0xffffff); qrImage.fill(0xffffff);
unsigned char *p = code->data; unsigned char *p = code->data;
for (int y = 0; y < code->width; y++) for (int y = 0; y < code->width; y++)
{ {
for (int x = 0; x < code->width; x++) for (int x = 0; x < code->width; x++)
{ {
myImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff)); qrImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff));
p++; p++;
} }
} }
QRcode_free(code); QRcode_free(code);
ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300)); QImage qrAddrImage = QImage(QR_IMAGE_SIZE, QR_IMAGE_SIZE+20, QImage::Format_RGB32);
qrAddrImage.fill(0xffffff);
QPainter painter(&qrAddrImage);
painter.drawImage(0, 0, qrImage.scaled(QR_IMAGE_SIZE, QR_IMAGE_SIZE));
QFont font = GUIUtil::fixedPitchFont();
font.setPixelSize(12);
painter.setFont(font);
QRect paddedRect = qrAddrImage.rect();
paddedRect.setHeight(QR_IMAGE_SIZE+12);
painter.drawText(paddedRect, Qt::AlignBottom|Qt::AlignCenter, info.address);
painter.end();
ui->lblQRCode->setPixmap(QPixmap::fromImage(qrAddrImage));
ui->btnSaveAs->setEnabled(true); ui->btnSaveAs->setEnabled(true);
} }
} }

View File

@ -10,6 +10,7 @@
#include <QDialog> #include <QDialog>
#include <QImage> #include <QImage>
#include <QLabel> #include <QLabel>
#include <QPainter>
class OptionsModel; class OptionsModel;