2 #include "ui_2faqrdialog.h"
14 #include <QMouseEvent>
19 #if defined(HAVE_CONFIG_H)
28 QDialog(parent, Qt::WindowSystemMenuHint | Qt::WindowTitleHint | Qt::WindowCloseButtonHint),
34 ui->lblQRCode->setVisible(
false);
38 connect(
ui->btnNext, SIGNAL(clicked()),
this, SLOT(accept()));
39 connect(
ui->btnCancel, SIGNAL(clicked()),
this, SLOT(reject()));
41 ui->label->setVisible(
true);
42 ui->label_2->setVisible(
true);
67 std::string addr =
"";
69 if (!std::isdigit(c)) addr += c;
74 int digits =
settings.value(
"2fadigits").toInt();
76 uri.sprintf(
"otpauth://totp/PRCY:QT Wallet?secret=%s&issuer=prcycoin&algorithm=SHA1&digits=8&period=30", addr.c_str());
77 }
else if (digits == 6) {
78 uri.sprintf(
"otpauth://totp/PRCY:QT Wallet?secret=%s&issuer=prcycoin&algorithm=SHA1&digits=6&period=30", addr.c_str());
81 infoText =
"Recovery Key: ";
82 ui->lblURI->setText(infoText + addr.c_str());
85 ui->lblQRCode->setText(
"");
88 if (uri.length() > MAX_URI_LENGTH) {
89 ui->lblQRCode->setText(tr(
"Resulting URI too long, try to reduce the text for label / message."));
91 QRcode* code = QRcode_encodeString(uri.toUtf8().constData(), 0, QR_ECLEVEL_L, QR_MODE_8, 1);
93 ui->lblQRCode->setText(tr(
"Error encoding URI into QR Code."));
96 QImage myImage = QImage(code->width + 8, code->width + 8, QImage::Format_RGB32);
97 myImage.fill(0xffffff);
98 unsigned char* p = code->data;
99 for (
int y = 0; y < code->width; y++) {
100 for (
int x = 0; x < code->width; x++) {
101 myImage.setPixel(x + 4, y + 4, ((*p & 1) ? 0x0 : 0xffffff));
107 ui->lblQRCode->setPixmap(QPixmap::fromImage(myImage).scaled(300, 300));