Merge pull request 'Improve QR code detection for VR' (#73) from dsc/wowlet:improve-qr-code-detection into master

Reviewed-on: https://git.wownero.com/wowlet/wowlet/pulls/73
This commit is contained in:
dsc 2021-05-15 15:23:57 +00:00
commit 7e5cac9fa3
2 changed files with 15 additions and 17 deletions

View file

@ -184,31 +184,33 @@ namespace wowletvr {
auto results = m_qrDecoder.decodePNG(path);
auto result = wowletvr::WowletVR::checkQRScreenshotResults(results);
qDebug() << "no initial results";
qDebug() << "QR code try #1: " << result;
if(result.isEmpty()) {
qDebug() << "trying to invert the image";
// lets try to invert the image
QImage image(path);
image.invertPixels();
image.save(pathPreview);
results = m_qrDecoder.decodePNG(pathPreview);
result = wowletvr::WowletVR::checkQRScreenshotResults(results);
if(!result.isEmpty()) {
qDebug() << "Found QR code after inverting the image.";
emit qrScreenshotSuccess(result);
QFile file (path);
file.remove();
return;
}
} else {
qDebug() << "QR code found.";
emit qrScreenshotSuccess(result);
QFile file (path);
file.remove();
return;
qDebug() << "QR code try #2: " << result;
}
emit qrScreenshotSuccess("No QR code could be detected.");
if(!result.isEmpty()) {
qDebug() << "QR code decoded, trying address validation.";
if(result.toLower().startsWith("wownero:"))
result = result.remove(0, 8);
if(WalletManager::addressValid(result, NetworkType::MAINNET)) {
qDebug() << "QR code appears valid.";
emit qrScreenshotSuccess(result);
QFile file(path);
file.remove();
return;
}
}
emit qrScreenshotFailed("No QR code could be detected.");
}
QString WowletVR::checkQRScreenshotResults(std::vector<std::string> results) {

View file

@ -51,13 +51,9 @@ ColumnLayout {
function onQrScreenshotSuccess(address) {
root.takingScreenshot = false;
console.log("onPinLookupReceived", address);
if(!address.startsWith("wownero:")) {
messagePopup.showMessage("Invalid QR code", "QR data did not start with \"wownero:\"");
return;
}
if(sendStateView.currentView === sendStateView.qrPage) {
sendStateController.destinationAddress = address.slice(8);
sendStateController.destinationAddress = address;
sendStateView.state = "transferPage";
}
}