[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33836 - in gnunet-qt/SecureShare: . core core/identity qml utils,
gnunet <=