gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r34136 - in gnunet-qt/SecureShare: . core/gnunet core/socia


From: gnunet
Subject: [GNUnet-SVN] r34136 - in gnunet-qt/SecureShare: . core/gnunet core/social qml
Date: Sun, 10 Aug 2014 22:04:15 +0200

Author: bratao
Date: 2014-08-10 22:04:15 +0200 (Sun, 10 Aug 2014)
New Revision: 34136

Modified:
   gnunet-qt/SecureShare/SecureShare.pro
   gnunet-qt/SecureShare/core/gnunet/gnunet.h
   gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h
   gnunet-qt/SecureShare/core/social/place.cpp
   gnunet-qt/SecureShare/core/social/place.h
   gnunet-qt/SecureShare/core/social/socialservice.cpp
   gnunet-qt/SecureShare/core/social/socialservice.h
   gnunet-qt/SecureShare/psyc.cpp
   gnunet-qt/SecureShare/qml/ExportEgo.qml
   gnunet-qt/SecureShare/qml/ImportEgo.qml
   gnunet-qt/SecureShare/qml/NewEgo.qml
   gnunet-qt/SecureShare/qml/createRoom.qml
   gnunet-qt/SecureShare/qml/joinRoom.qml
   gnunet-qt/SecureShare/qml/main.qml
Log:
Implement logic of creating rooms and joining as guests.

Modified: gnunet-qt/SecureShare/SecureShare.pro
===================================================================
--- gnunet-qt/SecureShare/SecureShare.pro       2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/SecureShare.pro       2014-08-10 20:04:15 UTC (rev 
34136)
@@ -2,8 +2,12 @@
 
 QT += qml quick widgets
 
-LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetsocial 
-lgnunetfriends -lextractor -lqrencode
+LIBS += -lgnunetutil -lgnunetcore -lgnunetidentity -lgnunetarm -lgnunetsocial 
-lgnunetenv -lgnunetpsycutil -lgnunetfriends -lextractor -lqrencode
 
+
+
+
+
 #include(3rdParty/qzxing-master/QZXing.pro)
 
 SOURCES += main.cpp \

Modified: gnunet-qt/SecureShare/core/gnunet/gnunet.h
===================================================================
--- gnunet-qt/SecureShare/core/gnunet/gnunet.h  2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/core/gnunet/gnunet.h  2014-08-10 20:04:15 UTC (rev 
34136)
@@ -34,6 +34,7 @@
 {
   Q_OBJECT
   Q_PROPERTY(IdentityService * identity READ identity CONSTANT)
+  Q_PROPERTY(SocialService * social READ social CONSTANT)
 
   Q_PROPERTY(GNUNET_CONFIGURATION_Handle * config READ config)
 
@@ -50,9 +51,10 @@
   IdentityService* identity() const
   { return m_identity; }
 
+  SocialService* social() const
+  { return m_social; }
 
 
-
   GNUNET_CONFIGURATION_Handle* config() const
   { return m_config; }
 

Modified: gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h
===================================================================
--- gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h 2014-08-10 17:25:45 UTC 
(rev 34135)
+++ gnunet-qt/SecureShare/core/gnunet/gnunet_includes.h 2014-08-10 20:04:15 UTC 
(rev 34136)
@@ -42,5 +42,8 @@
 #include <gnunet/gnunet_identity_service.h>
 #include <gnunet/gnunet_friends_lib.h>
 #include <gnunet/gnunet_social_service.h>
+#include <gnunet/gnunet_psyc_util_lib.h>
+#include <gnunet/gnunet_env_lib.h>
 
+
 #endif // GNUNET_INCLUDES_H

Modified: gnunet-qt/SecureShare/core/social/place.cpp
===================================================================
--- gnunet-qt/SecureShare/core/social/place.cpp 2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/core/social/place.cpp 2014-08-10 20:04:15 UTC (rev 
34136)
@@ -1,5 +1,8 @@
 #include "place.h"
 
+#include <QApplication>
+#include <QClipboard>
+
 Place::Place(QString key, QObject *parent) :
     QObject(parent)
 {
@@ -8,3 +11,11 @@
     m_name = "No name";
     m_type = "group";//thread;group;contact
 }
+
+
+void Place::copyToClipboard()
+{
+    QClipboard *clipboard = QApplication::clipboard();
+
+    clipboard->setText(m_key);
+}

Modified: gnunet-qt/SecureShare/core/social/place.h
===================================================================
--- gnunet-qt/SecureShare/core/social/place.h   2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/core/social/place.h   2014-08-10 20:04:15 UTC (rev 
34136)
@@ -45,6 +45,7 @@
         emit statusChanged(status);
     }
 
+    Q_INVOKABLE void copyToClipboard();
 private:
     int m_index;
     QString m_name;

Modified: gnunet-qt/SecureShare/core/social/socialservice.cpp
===================================================================
--- gnunet-qt/SecureShare/core/social/socialservice.cpp 2014-08-10 17:25:45 UTC 
(rev 34135)
+++ gnunet-qt/SecureShare/core/social/socialservice.cpp 2014-08-10 20:04:15 UTC 
(rev 34136)
@@ -5,13 +5,23 @@
 #include "models/models.h"
 #include "models/PlacesModel.h"
 
+#include "core/gnunet/gnunet.h"
+
 #include "core/social/place.h"
 
+
+#define DATA2ARG(data) data, sizeof (data)
+
+
 SocialService::SocialService(QObject *parent) :
     QObject(parent)
 {
     
+    connect(this,&SocialService::createPlaceSignal,
+            this,&SocialService::createPlaceSlot, Qt::QueuedConnection);
 
+    connect(this,&SocialService::enterRoomSignal,
+            this,&SocialService::enterRoomSlot, Qt::QueuedConnection);
     
 }
 
@@ -48,6 +58,40 @@
                               &hostRecvDataCallback, &hostRecvEomCallback, 
NULL);
 }
 
+
+void SocialService::createPlace()
+{
+    emit createPlaceSignal();
+}
+
+void SocialService::createPlaceSlot()
+{
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating a New Place.\n");
+
+
+    GNUNET_CRYPTO_EddsaPrivateKey *placeKey = GNUNET_CRYPTO_eddsa_key_create 
();
+    GNUNET_CRYPTO_EddsaPublicKey placePubKey;
+
+    GNUNET_CRYPTO_eddsa_key_get_public (placeKey, &placePubKey);
+
+    char* id = GNUNET_CRYPTO_eddsa_public_key_to_string (&placePubKey);
+    QString strId = QString::fromLatin1(id);
+
+
+
+    Place* newPlace = theApp->models()->placesModel()->add(strId);
+
+    newPlace->setName(strId);
+
+
+
+    GNUNET_SOCIAL_Host * host = GNUNET_SOCIAL_host_enter (m_config, m_hostEgo, 
placeKey,
+                                                          
GNUNET_PSYC_CHANNEL_PRIVATE, m_hostSlicer,
+                                                          
&hostEnteredCallback, &hostAnswerDoorCallback,
+                                                          
&hostFarewellCallback, newPlace);
+}
+
+
 void SocialService::enterPlaceAsHost()
 {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering to place as host.\n");
@@ -153,19 +197,43 @@
 
 void
 SocialService::hostAnswerDoorCallback (void *cls,
-                        struct GNUNET_SOCIAL_Nym *nym,
-                        const char *method_name,
-                        struct GNUNET_ENV_Environment *env,
-                        size_t data_size,
-                        const void *data)
+                                       struct GNUNET_SOCIAL_Nym *nym,
+                                       const char *method_name,
+                                       struct GNUNET_ENV_Environment *env,
+                                       size_t data_size,
+                                       const void *data)
 {
 
+    
theApp->gnunet()->social()->hostAnswerDoor(cls,nym,method_name,env,data_size,data);
+
+
+
+}
+
+void
+SocialService::hostAnswerDoor (void *cls,
+                               struct GNUNET_SOCIAL_Nym *nym,
+                               const char *method_name,
+                               struct GNUNET_ENV_Environment *env,
+                               size_t data_size,
+                               const void *data)
+{
+
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
                 "Host received entry request from guest .\n"
                 );
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "%s\n%.*s\n",
                 method_name, data_size, data);
+
+
+    //TODO: Give option to deny
+
+    GNUNET_PSYC_Message *join_resp = GNUNET_PSYC_message_create ("_admit_nym", 
env,
+                                                                 DATA2ARG 
("Welcome, nym!"));
+    GNUNET_SOCIAL_host_entry_decision (m_hst, nym, GNUNET_YES, join_resp);
+
+
     /*
   switch (test)
   {
@@ -188,8 +256,9 @@
   }*/
 }
 
+
 void SocialService::hostEnteredCallback (void *cls, int result,
-                          uint64_t max_message_id)
+                                         uint64_t max_message_id)
 {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Host entered to place.\n");
 
@@ -198,10 +267,10 @@
 
 void
 SocialService::hostFarewellCallback (void *cls,
-                      struct GNUNET_SOCIAL_Nym *nym,
-                      struct GNUNET_ENV_Environment *env,
-                      size_t variable_count,
-                      struct GNUNET_ENV_Modifier *variables)
+                                     struct GNUNET_SOCIAL_Nym *nym,
+                                     struct GNUNET_ENV_Environment *env,
+                                     size_t variable_count,
+                                     struct GNUNET_ENV_Modifier *variables)
 {
     // FIXME: this function is not called yet
 
@@ -216,3 +285,94 @@
 
   GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL);*/
 }
+
+
+void
+SocialService::guestRecvLocalEnterCallback (void *cls, int result, uint64_t 
max_message_id)
+{
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Guest entered to local place, 
result : %i.\n",result);
+
+}
+
+void
+SocialService::guestRecvEntryDecisionCallback (void *cls,
+                                               int is_admitted,
+                                               const struct 
GNUNET_PSYC_Message *entry_resp)
+{
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "Guest received entry decision: %d.\n",
+                is_admitted);
+
+    if (NULL != entry_resp)
+    {
+        struct GNUNET_ENV_Environment *env = GNUNET_ENV_environment_create ();
+        const char *method_name = NULL;
+        const void *data = NULL;
+        uint16_t data_size = 0;
+        GNUNET_PSYC_message_parse (entry_resp, &method_name, env, &data, 
&data_size);
+
+        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                    "%s\n%.*s\n",
+                    method_name, data_size, data);
+        /* FIXME: check response message */
+    }
+
+    /*
+  switch (test)
+  {
+  case TEST_GUEST_RECV_ENTRY_DCSN_REFUSE:
+    GNUNET_assert (GNUNET_NO == is_admitted);
+    guest_enter ();
+    break;
+
+  case TEST_GUEST_RECV_ENTRY_DCSN_ADMIT:
+    GNUNET_assert (GNUNET_YES == is_admitted);
+    host_announce ();
+    break;
+
+  default:
+    GNUNET_assert (0);
+  }*/
+}
+
+
+
+void
+SocialService::enterRoom(QString pubKey, QString peerIdentity)
+{
+    emit enterRoomSignal(pubKey,peerIdentity);
+}
+
+void
+SocialService::enterRoomSlot(QString pubKey, QString peerIdentity)
+{
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering to place %s as 
guest.\n",pubKey.toStdString().c_str() );
+
+    GuestEnterMessage emsg;
+
+    emsg.method_name = "_request_enter";
+    emsg.env = GNUNET_ENV_environment_create ();
+    GNUNET_ENV_environment_add (emsg.env, GNUNET_ENV_OP_ASSIGN,
+                                "_abc", "abc def", 7);
+    GNUNET_ENV_environment_add (emsg.env, GNUNET_ENV_OP_ASSIGN,
+                                "_abc_def", "abc def ghi", 11);
+    emsg.data = "let me in";
+    emsg.data_size = strlen (emsg.data) + 1;
+    emsg.msg = GNUNET_PSYC_message_create (emsg.method_name, emsg.env,
+                                           emsg.data, emsg.data_size);
+
+    GNUNET_CRYPTO_EddsaPublicKey convertedRoomKey;
+
+    GNUNET_CRYPTO_eddsa_public_key_from_string (pubKey.toStdString().c_str(),
+                                                pubKey.length(),
+                                                &convertedRoomKey);
+
+
+
+
+    //TODO change place pub key to arbitrary value
+    GNUNET_SOCIAL_Guest *gst = GNUNET_SOCIAL_guest_enter (m_config, m_hostEgo, 
&convertedRoomKey,
+                                                          
theApp->gnunet()->myPeer(), 0, NULL, emsg.msg,
+                                                          m_hostSlicer, 
&guestRecvLocalEnterCallback,
+                                                          
&guestRecvEntryDecisionCallback, NULL);
+}

Modified: gnunet-qt/SecureShare/core/social/socialservice.h
===================================================================
--- gnunet-qt/SecureShare/core/social/socialservice.h   2014-08-10 17:25:45 UTC 
(rev 34135)
+++ gnunet-qt/SecureShare/core/social/socialservice.h   2014-08-10 20:04:15 UTC 
(rev 34136)
@@ -4,6 +4,16 @@
 #include <QObject>
 #include "core/gnunet/gnunet_includes.h"
 
+
+typedef struct GuestEnterMessage
+{
+  struct GNUNET_PSYC_Message *msg;
+  const char *method_name;
+  struct GNUNET_ENV_Environment *env;
+  char *data;
+  uint16_t data_size;
+}GuestEnterMessage;
+
 class SocialService : public QObject
 {
     Q_OBJECT
@@ -45,6 +55,13 @@
                       struct GNUNET_ENV_Environment *env,
                       size_t data_size,
                       const void *data);
+    void
+    hostAnswerDoor (void *cls,
+                      struct GNUNET_SOCIAL_Nym *nym,
+                      const char *method_name,
+                      struct GNUNET_ENV_Environment *env,
+                      size_t data_size,
+                      const void *data);
     static void hostEnteredCallback (void *cls, int result,
                                       uint64_t max_message_id);
     static void
@@ -53,11 +70,28 @@
                    struct GNUNET_ENV_Environment *env,
                    size_t variable_count,
                           struct GNUNET_ENV_Modifier *variables);
+
+
+    static void
+    guestRecvEntryDecisionCallback (void *cls,
+                               int is_admitted,
+                               const struct GNUNET_PSYC_Message *entry_resp);
+
+    static void
+    guestRecvLocalEnterCallback (void *cls, int result, uint64_t 
max_message_id);
+
+
+
     void start(GNUNET_CONFIGURATION_Handle *config);
+    Q_INVOKABLE void createPlace();
+    void createPlaceSlot();
+    Q_INVOKABLE void enterRoom(QString pubKey, QString peerIdentity);
 signals:
-
+    void createPlaceSignal();
+    void enterRoomSignal(QString pubKey, QString peerIdentity);
 public slots:
 
+    void enterRoomSlot(QString pubKey, QString peerIdentity);
 private:
     GNUNET_IDENTITY_Ego* m_hostEgo;
     GNUNET_SOCIAL_Slicer* m_hostSlicer;

Modified: gnunet-qt/SecureShare/psyc.cpp
===================================================================
--- gnunet-qt/SecureShare/psyc.cpp      2014-08-10 17:25:45 UTC (rev 34135)
+++ gnunet-qt/SecureShare/psyc.cpp      2014-08-10 20:04:15 UTC (rev 34136)
@@ -11,6 +11,9 @@
 #include "core/identity/identityService.h"
 #include "core/identity/identity.h"
 
+#include "core/social/socialservice.h"
+#include "core/social/place.h"
+
 #include "utils/qrimageprovider.h"
 
 #include <QQmlEngine>
@@ -71,6 +74,8 @@
 
     qmlRegisterUncreatableType<IdentityService>(URI, 1, 0, "IdentityService", 
QLatin1String("Use calling the psyc method."));
     qmlRegisterUncreatableType<Identity>(URI, 1, 0, "Identity", 
QLatin1String("Use calling the psyc method."));
+    qmlRegisterUncreatableType<SocialService>(URI, 1, 0, "SocialService", 
QLatin1String("Use calling the psyc method."));
+    qmlRegisterUncreatableType<Place>(URI, 1, 0, "Place", QLatin1String("Use 
calling the psyc method."));
 
 
 }

Modified: gnunet-qt/SecureShare/qml/ExportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ExportEgo.qml     2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/qml/ExportEgo.qml     2014-08-10 20:04:15 UTC (rev 
34136)
@@ -79,7 +79,7 @@
             spacing: 2
             Button{
                 text: "Close"
-                onPressedChanged: {
+                onClicked: {
                     exportEgoWnd.close();
                 }
             }

Modified: gnunet-qt/SecureShare/qml/ImportEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/ImportEgo.qml     2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/qml/ImportEgo.qml     2014-08-10 20:04:15 UTC (rev 
34136)
@@ -79,13 +79,13 @@
             spacing: 2
             Button{
                 text: "Cancel"
-                onPressedChanged: {
+                onClicked: {
                     importEgoWnd.close();
                 }
             }
             Button{
                 text: "Add"
-                onPressedChanged: {
+                onClicked: {
                     importEgoWnd.close();
                 }
             }

Modified: gnunet-qt/SecureShare/qml/NewEgo.qml
===================================================================
--- gnunet-qt/SecureShare/qml/NewEgo.qml        2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/qml/NewEgo.qml        2014-08-10 20:04:15 UTC (rev 
34136)
@@ -25,7 +25,7 @@
         }
         Button{
             text: "Ok"
-            onPressedChanged: {
+            onClicked: {
                 Psyc.gnunet.identity.createEgo(newName.text)
                 newEgoWnd.close();
             }

Modified: gnunet-qt/SecureShare/qml/createRoom.qml
===================================================================
--- gnunet-qt/SecureShare/qml/createRoom.qml    2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/qml/createRoom.qml    2014-08-10 20:04:15 UTC (rev 
34136)
@@ -178,6 +178,10 @@
             Button{
                 text: "Create"
                 width: 200
+
+                onClicked: {
+                    Psyc.gnunet.social.createPlace()
+                }
             }
         }
     }

Modified: gnunet-qt/SecureShare/qml/joinRoom.qml
===================================================================
--- gnunet-qt/SecureShare/qml/joinRoom.qml      2014-08-10 17:25:45 UTC (rev 
34135)
+++ gnunet-qt/SecureShare/qml/joinRoom.qml      2014-08-10 20:04:15 UTC (rev 
34136)
@@ -217,6 +217,10 @@
             Button{
                 text: "Join"
                 width: 200
+
+                onClicked: {
+                    Psyc.gnunet.social.enterRoom(publicKeyField.text, "bla")
+                }
             }
         }
     }

Modified: gnunet-qt/SecureShare/qml/main.qml
===================================================================
--- gnunet-qt/SecureShare/qml/main.qml  2014-08-10 17:25:45 UTC (rev 34135)
+++ gnunet-qt/SecureShare/qml/main.qml  2014-08-10 20:04:15 UTC (rev 34136)
@@ -12,11 +12,26 @@
 
     property var firstRun: true
     property var splashWnd
+    property var selectedPlace
 
 
     FontLoader { id: ubuntuFont; source: "fonts/Ubuntu-R.ttf" }
     FontLoader { id: ubuntuBIFont; source: "fonts/Ubuntu-BI.ttf" }
 
+
+
+    Action {
+        id: copyLink
+        text: "Copy Link"
+        onTriggered: selectedPlace.copyToClipboard()
+    }
+
+    Menu {
+        id: contextMenu
+        MenuItem { action: copyLink }
+
+    }
+
     menuBar: MenuBar {
         Menu {
             title: qsTr("File")
@@ -72,7 +87,7 @@
 
 
 
-/*
+    /*
     ListModel {
         id: contactsModel
         ListElement {
@@ -314,10 +329,22 @@
                                     anchors.fill: parent
 
                                     hoverEnabled: true
+                                    acceptedButtons: Qt.LeftButton | 
Qt.RightButton
 
-                                    onClicked: main.currentIndex =  3+index
+                                    onClicked: {
 
+                                        if (mouse.button == Qt.RightButton)
+                                        {
+                                            selectedPlace = 
Psyc.models.placesModel.get(index)
+                                            contextMenu.popup()
+                                        }
+                                        else
+                                            main.currentIndex =  3+index
+                                    }
 
+
+
+
                                 }
                             }
                         }




reply via email to

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