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
-
+
+
+ Ein QR-Code kann nur mit vollständigen Einstellungen erzeugt werden!
+
+
+
Speichern
-
+
Hinzufügen
-
+
Typ
-
+
Zeitbasiert (TOTP)
-
+
Zählerbasiert (HOTP)
-
+
Titel
-
+
Titel für das Token
-
+
Schlüssel (mindestens 16 Zeichen)
-
+
Geheimer Schlüssel
-
+
Nächster Zählerwert
-
+
Nächster Wert für den Zähler
@@ -283,7 +288,7 @@ Lizenz: BSD (3-Klausel)
QRPage
-
+
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!
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -265,7 +270,7 @@ License: BSD (3-clause)
QRPage
-
+
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);
}
}