gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r33836 - in gnunet-qt/SecureShare: . core core/identity qml


From: gnunet
Subject: [GNUnet-SVN] r33836 - in gnunet-qt/SecureShare: . core core/identity qml utils
Date: Tue, 24 Jun 2014 21:28:08 +0200

Author: bratao
Date: 2014-06-24 21:28:08 +0200 (Tue, 24 Jun 2014)
New Revision: 33836

Added:
   gnunet-qt/SecureShare/qml/ExportEgo.qml
   gnunet-qt/SecureShare/qml/ImportEgo.qml
   gnunet-qt/SecureShare/readme
   gnunet-qt/SecureShare/utils/
   gnunet-qt/SecureShare/utils/helpers.cpp
   gnunet-qt/SecureShare/utils/helpers.h
   gnunet-qt/SecureShare/utils/qrimageprovider.cpp
   gnunet-qt/SecureShare/utils/qrimageprovider.h
Removed:
   gnunet-qt/SecureShare/3rdParty/
Modified:
   gnunet-qt/SecureShare/SecureShare.pro
   gnunet-qt/SecureShare/core/identity/identity.h
   gnunet-qt/SecureShare/core/psyccore.cpp
   gnunet-qt/SecureShare/core/psyccore.h
   gnunet-qt/SecureShare/main.cpp
   gnunet-qt/SecureShare/psyc.cpp
   gnunet-qt/SecureShare/psyc.h
   gnunet-qt/SecureShare/qml.qrc
   gnunet-qt/SecureShare/qml/QrReader.qml
   gnunet-qt/SecureShare/qml/Splash.qml
   gnunet-qt/SecureShare/qml/main.qml
Log:
Working QRr code import/export

Modified: gnunet-qt/SecureShare/SecureShare.pro
===================================================================
--- gnunet-qt/SecureShare/SecureShare.pro       2014-06-24 15:17:34 UTC (rev 
33835)
+++ gnunet-qt/SecureShare/SecureShare.pro       2014-06-24 19:28:08 UTC (rev 
33836)
@@ -2,7 +2,7 @@
 
 QT += qml quick widgets
 
-LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetfriends 
-lextractor
+LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetfriends 
-lextractor -lqrencode
 
 #include(3rdParty/qzxing-master/QZXing.pro)
 
@@ -16,7 +16,9 @@
     core/gnunet/gnunet.cpp \
     core/identity/identityService.cpp \
     core/identity/identity.cpp \
-    models/IdentityModel.cpp
+    models/IdentityModel.cpp \
+    utils/helpers.cpp \
+    utils/qrimageprovider.cpp
 
 RESOURCES += qml.qrc
 
@@ -37,4 +39,6 @@
     core/gnunet/gnunet_includes.h \
     core/identity/identityService.h \
     core/identity/identity.h \
-    models/IdentityModel.h
+    models/IdentityModel.h \
+    utils/helpers.h \
+    utils/qrimageprovider.h

Modified: gnunet-qt/SecureShare/core/identity/identity.h
===================================================================
--- gnunet-qt/SecureShare/core/identity/identity.h      2014-06-24 15:17:34 UTC 
(rev 33835)
+++ gnunet-qt/SecureShare/core/identity/identity.h      2014-06-24 19:28:08 UTC 
(rev 33836)
@@ -7,6 +7,7 @@
 {
     Q_OBJECT
     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+    Q_PROPERTY(QString url READ url CONSTANT)
 
 public:
     explicit Identity(QString key, QObject *parent = 0);
@@ -29,7 +30,9 @@
         emit modifiedSignal(m_index);
     }
 
-
+    QString url(){
+        return QString("GNUNET://GNS/%1/").arg(m_key);
+    }
 private:
     int m_index;
     QString m_name;

Modified: gnunet-qt/SecureShare/core/psyccore.cpp
===================================================================
--- gnunet-qt/SecureShare/core/psyccore.cpp     2014-06-24 15:17:34 UTC (rev 
33835)
+++ gnunet-qt/SecureShare/core/psyccore.cpp     2014-06-24 19:28:08 UTC (rev 
33836)
@@ -4,6 +4,8 @@
 
 #include "models/models.h"
 #include "gnunet/gnunet.h"
+#include "utils/helpers.h"
+#include "utils/qrimageprovider.h"
 
 #include <QApplication>
 #include <QQuickWindow>
@@ -19,6 +21,12 @@
       theApp = this;
       m_models = new Models(this);
 
+      m_helpers = new Helpers(this);
+
+      m_qrProvider = new QrImageProvider();
+
+      m_identity = NULL;
+
       //Finally start gnunet
       startGNUNet();
 

Modified: gnunet-qt/SecureShare/core/psyccore.h
===================================================================
--- gnunet-qt/SecureShare/core/psyccore.h       2014-06-24 15:17:34 UTC (rev 
33835)
+++ gnunet-qt/SecureShare/core/psyccore.h       2014-06-24 19:28:08 UTC (rev 
33836)
@@ -7,11 +7,17 @@
 
 class GNUNet;
 class Models;
+class Helpers;
+class Identity;
+class QrImageProvider;
 class PsycCore : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(Models * models READ models CONSTANT)
     Q_PROPERTY(GNUNet * gnunet READ gnunet CONSTANT)
+    Q_PROPERTY(Helpers * helpers READ helpers CONSTANT)
+    Q_PROPERTY(QrImageProvider* qrProvider READ qrProvider CONSTANT)
+    Q_PROPERTY(Identity * identity READ identity WRITE setIdentity)
     Q_PROPERTY(bool connected READ isConnected WRITE setConnected NOTIFY 
connectedChanged)
 
 public:
@@ -20,12 +26,26 @@
 
 
     GNUNet* gnunet() const
-        { return m_gnunet; }
+    { return m_gnunet; }
 
     Models* models() const
-        { return m_models; }
+    { return m_models; }
 
+    Helpers* helpers() const
+    { return m_helpers; }
 
+    QrImageProvider* qrProvider() const
+    { return m_qrProvider; }
+
+    Identity* identity() const
+    { return m_identity; }
+
+    Q_INVOKABLE void setIdentity(Identity* identity)
+    {
+        m_identity = identity;
+    }
+
+
     void setupTray();
     Q_INVOKABLE void onClose();
 
@@ -38,6 +58,12 @@
 private:
     Models* m_models;
 
+    Helpers* m_helpers;
+
+    QrImageProvider* m_qrProvider;
+
+    Identity* m_identity;
+
     GNUNet* m_gnunet;
     QThread *m_gnunetThread;
 

Modified: gnunet-qt/SecureShare/main.cpp
===================================================================
--- gnunet-qt/SecureShare/main.cpp      2014-06-24 15:17:34 UTC (rev 33835)
+++ gnunet-qt/SecureShare/main.cpp      2014-06-24 19:28:08 UTC (rev 33836)
@@ -28,8 +28,10 @@
     QObject::connect(&engine, SIGNAL(quit()), &app, SLOT(quit()));
 
 
+    psyc.registerImageProvider(&engine);
 
 
+
     //Create the tray icon
     theApp->setupTray();
 

Modified: gnunet-qt/SecureShare/psyc.cpp
===================================================================
--- gnunet-qt/SecureShare/psyc.cpp      2014-06-24 15:17:34 UTC (rev 33835)
+++ gnunet-qt/SecureShare/psyc.cpp      2014-06-24 19:28:08 UTC (rev 33836)
@@ -5,10 +5,14 @@
 #include "models/models.h"
 #include "models/PlacesModel.h"
 #include "models/IdentityModel.h"
+#include "utils/helpers.h"
 
 #include "core/gnunet/gnunet.h"
 #include "core/identity/identityService.h"
+#include "core/identity/identity.h"
 
+#include "utils/qrimageprovider.h"
+
 #include <QQmlEngine>
 #include <QtQml/qqml.h>
 
@@ -63,7 +67,21 @@
     qmlRegisterUncreatableType<IdentityModel>(URI, 1, 0, "IdentityModel", 
QLatin1String("Use calling the psyc method."));
 
     qmlRegisterUncreatableType<GNUNet>(URI, 1, 0, "GNUNet", QLatin1String("Use 
calling the psyc method."));
+    qmlRegisterUncreatableType<Helpers>(URI, 1, 0, "Helpers", 
QLatin1String("Use calling the psyc method."));
+
     qmlRegisterUncreatableType<IdentityService>(URI, 1, 0, "IdentityService", 
QLatin1String("Use calling the psyc method."));
+    qmlRegisterUncreatableType<Identity>(URI, 1, 0, "Identity", 
QLatin1String("Use calling the psyc method."));
 
 
 }
+
+/**
+ * @brief Psyc::registerImageProvider , registers image handlers to QML engine
+ * @param engine
+ */
+void Psyc::registerImageProvider(QQmlEngine *engine)
+{
+    engine->addImageProvider("qrProvider",theApp->qrProvider());
+
+
+}

Modified: gnunet-qt/SecureShare/psyc.h
===================================================================
--- gnunet-qt/SecureShare/psyc.h        2014-06-24 15:17:34 UTC (rev 33835)
+++ gnunet-qt/SecureShare/psyc.h        2014-06-24 19:28:08 UTC (rev 33836)
@@ -6,12 +6,14 @@
 class Preferences;
 class QQuickWindow;
 class PsycCore;
+class QQmlEngine;
 class Psyc : public QObject
 {
     Q_OBJECT
 public:
     explicit Psyc(QObject *parent = 0);
     void registerQmlTypes();
+    void registerImageProvider(QQmlEngine *engine);
 private:
     PsycCore *m_core;
 

Added: gnunet-qt/SecureShare/qml/ExportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ExportEgo.qml                             (rev 0)
+++ gnunet-qt/SecureShare/qml/ExportEgo.qml     2014-06-24 19:28:08 UTC (rev 
33836)
@@ -0,0 +1,89 @@
+import QtQuick.Window 2.1;
+import QtQuick 2.2
+import QtQuick.Controls 1.1
+import QtQuick.Layouts 1.1
+import Psyc 1.0
+import QtQuick.Dialogs 1.2
+
+Window {
+    title: "Export Ego";
+    width: 300;
+    height: 400;
+    id: exportEgoWnd
+
+
+    FileDialog {
+        id: fileDialog
+        title: "Please choose a file"
+        selectExisting: false
+        nameFilters: [ "Image files (*.png *.jpg)" ]
+        onAccepted: {
+            console.log("You chose: " + fileDialog.fileUrls)
+            var orginal = fileDialog.fileUrl.toString()
+
+            Psyc.helpers.saveQrAsFile(orginal.replace("file:///",""));
+
+
+        }
+        onRejected: {
+            console.log("Canceled")
+        }
+    }
+
+
+    Item{
+        anchors.fill: parent
+        anchors.margins: 10
+        Label {
+            id: exportLabel
+            text: "Export your Identity"
+            font.pointSize: 22
+        }
+
+
+        Image {
+            anchors.top: exportLabel.bottom
+            anchors.left: parent.left
+
+            id: qrImage
+            width: 250; height: 250
+            source: "image://qrProvider/image.jpg"
+        }
+        Button{
+            id: saveImageButton
+            anchors.top: qrImage.bottom
+            anchors.left: qrImage.left
+            text: "Save as Image"
+
+            onClicked: {
+                fileDialog.open();
+            }
+
+        }
+
+
+        TextField{
+            anchors.top: saveImageButton.bottom
+            anchors.topMargin: 15
+            anchors.left: parent.left
+            anchors.right: parent.right
+
+            id:newName
+
+            text: Psyc.identity.url
+        }
+
+        Row{
+            anchors.bottom: parent.bottom
+            anchors.right: parent.right
+            spacing: 2
+            Button{
+                text: "Close"
+                onPressedChanged: {
+                    exportEgoWnd.close();
+                }
+            }
+        }
+    }
+
+}

Added: gnunet-qt/SecureShare/qml/ImportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ImportEgo.qml                             (rev 0)
+++ gnunet-qt/SecureShare/qml/ImportEgo.qml     2014-06-24 19:28:08 UTC (rev 
33836)
@@ -0,0 +1,95 @@
+import QtQuick.Window 2.1;
+import QtQuick 2.2
+import QtQuick.Controls 1.1
+import QtQuick.Layouts 1.1
+import QtQuick.Dialogs 1.2
+
+
+
+import Psyc 1.0
+
+Window {
+    title: "Import Ego";
+    width: 500;
+    height: 130;
+    id: importEgoWnd
+
+    FileDialog {
+        id: fileDialog
+        title: "Please choose a file"
+        onAccepted: {
+            console.log("You chose: " + fileDialog.fileUrls)
+            var orginal = fileDialog.fileUrl.toString()
+
+            qrReader.decode.decodeImageFromFile(orginal.replace("file:///",""))
+        }
+        onRejected: {
+            console.log("Canceled")
+        }
+    }
+
+    QrReader{
+        id:qrReader
+
+        onCaptured: {
+            egoTextField.text = str
+        }
+    }
+
+
+    ColumnLayout{
+
+        anchors.fill: parent
+        anchors.margins: 10
+
+        spacing: 5
+        Label{
+
+            text: "Enter the ego you want to import:"
+        }
+
+        RowLayout{
+            spacing: 5
+            TextField{
+                id: egoTextField
+                Layout.fillWidth: true
+                height: 20
+            }
+            Button{
+                text: "Import qr from File"
+
+                onClicked: {
+                    fileDialog.open()
+                }
+            }
+            Button{
+                text: "Import qr from Camera"
+
+                onClicked: {
+                    /*var reader = 
Qt.createComponent("qrc:///qml/QrReader.qml");
+                    var readerWnd = reader.createObject();
+                    readerWnd.show();*/
+                    qrReader.startCamera();
+                    qrReader.show()
+                }
+            }
+        }
+        Row{
+            Layout.alignment: Qt.AlignRight
+            spacing: 2
+            Button{
+                text: "Cancel"
+                onPressedChanged: {
+                    importEgoWnd.close();
+                }
+            }
+            Button{
+                text: "Add"
+                onPressedChanged: {
+                    importEgoWnd.close();
+                }
+            }
+        }
+    }
+
+}

Modified: gnunet-qt/SecureShare/qml/QrReader.qml
===================================================================
--- gnunet-qt/SecureShare/qml/QrReader.qml      2014-06-24 15:17:34 UTC (rev 
33835)
+++ gnunet-qt/SecureShare/qml/QrReader.qml      2014-06-24 19:28:08 UTC (rev 
33836)
@@ -3,27 +3,41 @@
 import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
 import QZXing 1.3
-import QtMultimedia 5.0
+import QtMultimedia 5.3
 
 
 
 import Psyc 1.0
 
 Window {
-    title: "Qr Reader";
-    width: 300;
-    height: 60;
+    title: "Camera Qr Reader";
+    width: 640;
+    height: 360;
     id: newEgoWnd
 
+    property var decode: decoder
 
+    signal captured(string str)
 
-    Item {
-        width: 640
-        height: 360
+    function startCamera(){
+        camera.cameraState = Camera.ActiveState
+        camera.start()
+        camera.imageCapture.captureToLocation(Psyc.helpers.importLocation());
+    }
 
+    onClosing:{
+        camera.stop()
+        newEgoWnd.close()
+
+    }
+
+
+
         Camera {
             id: camera
+            cameraState : Camera.LoadedState
 
+
             imageProcessing.whiteBalanceMode: 
CameraImageProcessing.WhiteBalanceFlash
 
             exposure {
@@ -34,19 +48,50 @@
             flash.mode: Camera.FlashRedEyeReduction
 
             imageCapture {
-                onImageCaptured: {
-                    photoPreview.source = preview  // Show the preview in an 
Image
+                onImageSaved:{
+                    console.log(path)
+                    decoder.decodeImageFromFile(path)
                 }
+
+
             }
+
+
         }
 
         VideoOutput {
             source: camera
             anchors.fill: parent
             focus : visible // to receive focus and capture key events when 
visible
+
         }
         Image {
             id: photoPreview
         }
-    }
+        QZXing{
+                id: decoder
+
+                onDecodingStarted: console.log("Decoding of image started...")
+
+                onTagFound: {
+
+                    console.log("Barcode data: " + tag)
+                    newEgoWnd.captured(tag)
+                    camera.stop()
+                    newEgoWnd.close()
+
+                }
+
+                onDecodingFinished:
+                {
+                    console.log("Decoding finished " + (succeeded==true ? 
"successfully" : "unsuccessfully") )
+
+                    if(succeeded == false)
+                    {
+                        
camera.imageCapture.captureToLocation(Psyc.helpers.importLocation());
+                    }
+                }
+        }
+
+
 }

Modified: gnunet-qt/SecureShare/qml/Splash.qml
===================================================================
--- gnunet-qt/SecureShare/qml/Splash.qml        2014-06-24 15:17:34 UTC (rev 
33835)
+++ gnunet-qt/SecureShare/qml/Splash.qml        2014-06-24 19:28:08 UTC (rev 
33836)
@@ -35,6 +35,7 @@
             }
 
             ComboBox {
+                id: egoCombo
                 width: 200
                 model: Psyc.models.identityModel
                 textRole: "name"
@@ -57,7 +58,11 @@
             anchors.horizontalCenter: parent.horizontalCenter
 
             onClicked: {
-                splashWnd.visible = false;
+
+                var selectedIdentity = Psyc.models.identityModel.get 
(egoCombo.currentIndex)
+                Psyc.setIdentity(selectedIdentity)
+
+                splashWnd.close();
                 mainWnd.visible = true;
             }
         }

Modified: gnunet-qt/SecureShare/qml/main.qml
===================================================================
--- gnunet-qt/SecureShare/qml/main.qml  2014-06-24 15:17:34 UTC (rev 33835)
+++ gnunet-qt/SecureShare/qml/main.qml  2014-06-24 19:28:08 UTC (rev 33836)
@@ -47,9 +47,17 @@
             }
 
             MenuItem {
-                text: qsTr("QR Reader")
+                text: qsTr("Import Ego")
                 onTriggered: {
-                    var reader = Qt.createComponent("qrc:///qml/QrReader.qml");
+                    var importEgo = 
Qt.createComponent("qrc:///qml/ImportEgo.qml");
+                    var importEgoWnd = importEgo.createObject();
+                    importEgoWnd.show();
+                }
+            }
+            MenuItem {
+                text: qsTr("Export Ego")
+                onTriggered: {
+                    var reader = 
Qt.createComponent("qrc:///qml/ExportEgo.qml");
                     var readerWnd = reader.createObject();
                     readerWnd.show();
                 }

Modified: gnunet-qt/SecureShare/qml.qrc
===================================================================
--- gnunet-qt/SecureShare/qml.qrc       2014-06-24 15:17:34 UTC (rev 33835)
+++ gnunet-qt/SecureShare/qml.qrc       2014-06-24 19:28:08 UTC (rev 33836)
@@ -28,5 +28,7 @@
         <file>qml/images/enter.png</file>
         <file>qml/images/new.png</file>
         <file>qml/QrReader.qml</file>
+        <file>qml/ExportEgo.qml</file>
+        <file>qml/ImportEgo.qml</file>
     </qresource>
 </RCC>

Added: gnunet-qt/SecureShare/readme
===================================================================
--- gnunet-qt/SecureShare/readme                                (rev 0)
+++ gnunet-qt/SecureShare/readme        2014-06-24 19:28:08 UTC (rev 33836)
@@ -0,0 +1,4 @@
+This project needs the following library
+- Qt  >= 5.3
+- libqrencode
+- qzing from https://github.com/bratao/qzxing
\ No newline at end of file

Added: gnunet-qt/SecureShare/utils/helpers.cpp
===================================================================
--- gnunet-qt/SecureShare/utils/helpers.cpp                             (rev 0)
+++ gnunet-qt/SecureShare/utils/helpers.cpp     2014-06-24 19:28:08 UTC (rev 
33836)
@@ -0,0 +1,90 @@
+#include "helpers.h"
+
+#include <QtQml>
+#include "core/psyccore.h"
+#include "core/identity/identity.h"
+#include <QtQuick/QQuickImageProvider>
+#include <qrencode.h>
+
+Helpers::Helpers(QObject *parent) :
+    QObject(parent)
+{
+}
+
+QImage Helpers::convertQmlToImage( const QString& path)
+{
+    QUrl imageUrl(path);
+    QQmlEngine* engine = QQmlEngine::contextForObject(this)->engine();
+    QQmlImageProviderBase* imageProviderBase = engine->imageProvider(
+                imageUrl.host());
+    QQuickImageProvider* imageProvider = static_cast<QQuickImageProvider*>
+            (imageProviderBase);
+
+    QSize imageSize;
+    QString imageId = imageUrl.path().remove(0,1);
+    QImage image = imageProvider->requestImage(imageId, &imageSize, imageSize);
+
+    return image;
+
+}
+
+QImage Helpers::convertQrToImage(QString str)
+{
+    QString uri = str;
+    //qDebug() << "Encoding:" << uri.toUtf8().constData();
+
+
+    QRcode *code = QRcode_encodeString(uri.toUtf8().constData(), 0, 
QR_ECLEVEL_L, QR_MODE_8, 1);
+    QImage myImage = QImage(code->width + 2, code->width + 2, 
QImage::Format_RGB32);
+    myImage.fill(0xffffff);
+    unsigned char *p = code->data;
+    for(int y = 0; y < code->width; y++) {
+        for(int x = 0; x < code->width; x++) {
+            myImage.setPixel(x + 1, y + 1, ((*p & 1) ? 0x0 : 0xffffff));
+            p++;
+        }
+    }
+
+
+    QRcode_free(code);
+
+    return myImage;
+}
+
+void Helpers::saveQrAsFile(QString path)
+{
+
+    QImage image = convertQrToImage(theApp->identity()->url());
+
+    int width = 200;
+    int height = 200;
+
+
+    QSize size = QSize(width, height);
+
+    QImage scaledImage = image.scaled(size);
+
+    if(!scaledImage.save(path))
+    {
+        qDebug() << "Fail saving QR code";
+    }
+}
+
+
+
+QString Helpers::importLocation() const
+{
+    QString imageLocation = 
QStandardPaths::writableLocation(QStandardPaths::TempLocation);
+
+    return  imageLocation + "/tempQrImage.jpg";
+}
+
+
+bool Helpers::removeTemp()
+{
+    const char* location = importLocation().toUtf8();
+    if(QFile::remove(location) != true ) {
+        qWarning() << "Error deleting temporary image";
+    }
+    return 0;
+}

Added: gnunet-qt/SecureShare/utils/helpers.h
===================================================================
--- gnunet-qt/SecureShare/utils/helpers.h                               (rev 0)
+++ gnunet-qt/SecureShare/utils/helpers.h       2014-06-24 19:28:08 UTC (rev 
33836)
@@ -0,0 +1,24 @@
+#ifndef HELPERS_H
+#define HELPERS_H
+
+#include <QObject>
+#include <QImage>
+
+class Helpers : public QObject
+{
+    Q_OBJECT
+public:
+    explicit Helpers(QObject *parent = 0);
+
+    Q_INVOKABLE QImage convertQmlToImage(const QString &path);
+    Q_INVOKABLE QString importLocation() const;
+    Q_INVOKABLE bool removeTemp();
+    QImage convertQrToImage(QString str);
+    Q_INVOKABLE void saveQrAsFile(QString path);
+signals:
+
+public slots:
+
+};
+
+#endif // HELPERS_H

Added: gnunet-qt/SecureShare/utils/qrimageprovider.cpp
===================================================================
--- gnunet-qt/SecureShare/utils/qrimageprovider.cpp                             
(rev 0)
+++ gnunet-qt/SecureShare/utils/qrimageprovider.cpp     2014-06-24 19:28:08 UTC 
(rev 33836)
@@ -0,0 +1,28 @@
+#include "qrimageprovider.h"
+#include "core/psyccore.h"
+#include "core/identity/identity.h"
+
+#include "utils/helpers.h"
+
+#include <QImage>
+
+QrImageProvider::QrImageProvider(): 
QQuickImageProvider(QQuickImageProvider::Image)
+{
+}
+
+QImage QrImageProvider::requestImage(const QString &id, QSize *size, const 
QSize& requestedSize)
+{
+
+    QImage image = 
theApp->helpers()->convertQrToImage(theApp->identity()->url());
+
+    int width = 200;
+    int height = 200;
+
+
+    if (size)
+         *size = QSize(width, height);
+
+    QImage scaledImage = image.scaled(*size);
+
+    return scaledImage;
+}

Added: gnunet-qt/SecureShare/utils/qrimageprovider.h
===================================================================
--- gnunet-qt/SecureShare/utils/qrimageprovider.h                               
(rev 0)
+++ gnunet-qt/SecureShare/utils/qrimageprovider.h       2014-06-24 19:28:08 UTC 
(rev 33836)
@@ -0,0 +1,19 @@
+#ifndef QRIMAGEPROVIDER_H
+#define QRIMAGEPROVIDER_H
+
+
+#include <QQuickImageProvider>
+
+class QrImageProvider : public QQuickImageProvider
+{
+public:
+    explicit QrImageProvider();
+
+    virtual QImage requestImage(const QString &id, QSize *size, const QSize& 
requestedSize);
+signals:
+
+public slots:
+
+};
+
+#endif // QRIMAGEPROVIDER_H




reply via email to

[Prev in Thread] Current Thread [Next in Thread]