From 8de63f5f68b207bc8d7714375dda2b5c87510032 Mon Sep 17 00:00:00 2001 From: Stefan Brand Date: Sat, 24 May 2014 19:13:42 +0200 Subject: [PATCH] Cleanup and minor Fixes --- i18n/de.ts | 29 +++++++++++++++++------------ i18n/en.ts | 29 +++++++++++++++++------------ qml/pages/AddOTP.qml | 8 +++++++- qml/pages/QRPage.qml | 3 ++- src/qqrencode/qqrencode.cpp | 6 +++--- 5 files changed, 46 insertions(+), 29 deletions(-) diff --git a/i18n/de.ts b/i18n/de.ts index 761f77d..114db66 100644 --- a/i18n/de.ts +++ b/i18n/de.ts @@ -39,57 +39,62 @@ Lizenz: BSD (3-Klausel) QR-Code anzeigen - + + Can't create QR-Code from incomplete settings! + Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden! + + + Save Speichern - + Add Hinzufügen - + Type Typ - + Time-based (TOTP) Zeitbasiert (TOTP) - + Counter-based (HOTP) Zählerbasiert (HOTP) - + Title Titel - + Title for the OTP Titel für das Token - + Secret (at least 16 characters) Schlüssel (mindestens 16 Zeichen) - + Secret OTP Key Geheimer Schlüssel - + Next Counter Value Nächster Zählerwert - + Next Value of the Counter Nächster Wert für den Zähler @@ -283,7 +288,7 @@ Lizenz: BSD (3-Klausel) QRPage - + Can't create QR-Code from incomplete settings! Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden! diff --git a/i18n/en.ts b/i18n/en.ts index a3d5f6f..72a7a50 100644 --- a/i18n/en.ts +++ b/i18n/en.ts @@ -29,57 +29,62 @@ License: BSD (3-clause) Show QR-Code - + + Can't create QR-Code from incomplete settings! + Can't create QR-Code from incomplete settings! + + + Save - + Add - + Type - + Time-based (TOTP) - + Counter-based (HOTP) - + Title - + Title for the OTP - + Secret (at least 16 characters) - + Secret OTP Key - + Next Counter Value - + Next Value of the Counter @@ -265,7 +270,7 @@ License: BSD (3-clause) QRPage - + Can't create QR-Code from incomplete settings! Can't create QR-Code from incomplete settings! diff --git a/qml/pages/AddOTP.qml b/qml/pages/AddOTP.qml index e2128cb..e72e286 100644 --- a/qml/pages/AddOTP.qml +++ b/qml/pages/AddOTP.qml @@ -64,7 +64,13 @@ Dialog { visible: checkQR() MenuItem { text: qsTr("Show QR-Code") - onClicked: pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramLabel: otpLabel.text, paramKey: otpSecret.text, paramType: paramType, paramCounter: otpCounter.text}) + onClicked: { + if ((paramType == "TOTP" && (otpLabel.text == "" || otpSecret.text == "")) || (paramType == "HOTP" && (otpLabel.text == "" || otpSecret.text == "" || otpCounter.text <= 0))) { + notify.show(qsTr("Can't create QR-Code from incomplete settings!"), 4000); + } else { + pageStack.push(Qt.resolvedUrl("QRPage.qml"), {paramLabel: otpLabel.text, paramKey: otpSecret.text, paramType: paramType, paramCounter: otpCounter.text}); + } + } } } diff --git a/qml/pages/QRPage.qml b/qml/pages/QRPage.qml index 24aae7b..f5339bd 100644 --- a/qml/pages/QRPage.qml +++ b/qml/pages/QRPage.qml @@ -51,6 +51,7 @@ Page { id: qrImage anchors.horizontalCenter: parent.horizontalCenter y: 200 + cache: false } Component.onCompleted: { @@ -61,7 +62,7 @@ Page { otpurl = "otpauth://totp/"+paramLabel+"?secret="+paramKey; } else if (paramType == "HOTP") { - if (paramLabel != "" && paramKey != "" && paramCounter > 0) return; + if (paramLabel != "" && paramKey != "" && paramCounter > 0) otpurl = "otpauth://hotp/"+paramLabel+"?secret="+paramKey+"&counter="+paramCounter; } if (otpurl != "") { diff --git a/src/qqrencode/qqrencode.cpp b/src/qqrencode/qqrencode.cpp index ca4aa21..8b35d51 100644 --- a/src/qqrencode/qqrencode.cpp +++ b/src/qqrencode/qqrencode.cpp @@ -13,9 +13,9 @@ QImage QQRencoder::requestImage(const QString &id, QSize *size, const QSize &req // Encode QR-Data QRcode *qrdata = QRcode_encodeString(qPrintable(id), 0, QR_ECLEVEL_M, QR_MODE_8, 1); - // Calculate width of the image + // Calculate qr-pixel size int datawidth = qrdata->width; - int pixsize = static_cast((imgSize - 16) / datawidth); + int pixsize = static_cast((imgSize - 64) / datawidth); // allocate memory for the image QImage image(imgSize, imgSize, QImage::Format_Mono); @@ -26,7 +26,7 @@ QImage QQRencoder::requestImage(const QString &id, QSize *size, const QSize &req painter.fillRect(image.rect(),Qt::white); for(int x=0;xdata[y*datawidth+x]) painter.fillRect(QRect(x*pixsize+16, y*pixsize+16, pixsize, pixsize), Qt::black); + if(1 & qrdata->data[y*datawidth+x]) painter.fillRect(QRect(x*pixsize+32, y*pixsize+32, pixsize, pixsize), Qt::black); } }