diff options
author | tg(x) <*@tg-x.net> | 2016-03-10 23:23:37 +0100 |
---|---|---|
committer | tg(x) <*@tg-x.net> | 2016-03-10 23:23:37 +0100 |
commit | 83f2395605f5ab34d1ee9003a49f0d0b5d4144f7 (patch) | |
tree | 05e906385d149ef50b1a1682c3998d41cc06d4b2 | |
parent | d503c3f159f29e7fd5b1dfa362bc6ce557e397fd (diff) | |
download | secushare-83f2395605f5ab34d1ee9003a49f0d0b5d4144f7.tar.gz secushare-83f2395605f5ab34d1ee9003a49f0d0b5d4144f7.zip |
ego model
-rw-r--r-- | qml/PlaceCreate.qml | 2 | ||||
-rw-r--r-- | qml/PlaceEnter.qml | 2 | ||||
-rw-r--r-- | src/app.cpp | 8 | ||||
-rw-r--r-- | src/model/EgoListModel.cpp | 36 | ||||
-rw-r--r-- | src/model/EgoListModel.h | 7 | ||||
-rw-r--r-- | src/model/PlaceListModel.cpp | 11 | ||||
-rw-r--r-- | src/model/PlaceListModel.h | 4 | ||||
-rw-r--r-- | src/model/models.cpp | 2 | ||||
-rw-r--r-- | src/nym/ego.cpp | 8 | ||||
-rw-r--r-- | src/nym/ego.h | 5 | ||||
-rw-r--r-- | src/nym/nym.cpp | 9 | ||||
-rw-r--r-- | src/nym/nym.h | 5 | ||||
-rw-r--r-- | src/social/socialapp.cpp | 99 | ||||
-rw-r--r-- | src/social/socialapp.h | 62 |
14 files changed, 187 insertions, 73 deletions
diff --git a/qml/PlaceCreate.qml b/qml/PlaceCreate.qml index 2206eb5..a5a4313 100644 --- a/qml/PlaceCreate.qml +++ b/qml/PlaceCreate.qml | |||
@@ -173,7 +173,7 @@ Rectangle { | |||
173 | width: 200 | 173 | width: 200 |
174 | 174 | ||
175 | onClicked: { | 175 | onClicked: { |
176 | App.social.createPlace() // FIXME: nameField.text | 176 | App.social.createPlace("FIXME: egoPubKey") // FIXME: nameField.text |
177 | } | 177 | } |
178 | } | 178 | } |
179 | } | 179 | } |
diff --git a/qml/PlaceEnter.qml b/qml/PlaceEnter.qml index 1eb09bb..3dcd3e7 100644 --- a/qml/PlaceEnter.qml +++ b/qml/PlaceEnter.qml | |||
@@ -212,7 +212,7 @@ Rectangle { | |||
212 | width: 200 | 212 | width: 200 |
213 | 213 | ||
214 | onClicked: { | 214 | onClicked: { |
215 | App.social.enterPlace(publicKeyField.text, originField.text) | 215 | App.social.enterPlace("FIXME: egoPubKey", publicKeyField.text, originField.text) |
216 | } | 216 | } |
217 | } | 217 | } |
218 | } | 218 | } |
diff --git a/src/app.cpp b/src/app.cpp index 6933589..15063cb 100644 --- a/src/app.cpp +++ b/src/app.cpp | |||
@@ -15,7 +15,7 @@ Settings *theSettings; | |||
15 | QQuickWindow *theWindow; | 15 | QQuickWindow *theWindow; |
16 | 16 | ||
17 | 17 | ||
18 | App::App (QObject * parent) | 18 | App::App (QObject *parent) |
19 | : QObject (parent) | 19 | : QObject (parent) |
20 | { | 20 | { |
21 | theApp = this; | 21 | theApp = this; |
@@ -78,6 +78,12 @@ App::startGnuNet () | |||
78 | void | 78 | void |
79 | App::setConnected (bool connected) | 79 | App::setConnected (bool connected) |
80 | { | 80 | { |
81 | #if FIXME | ||
82 | m_models->egos ()->setData (m_gnunet->social ()->egos ()); | ||
83 | connect (m_gnunet->social (), SIGNAL (egoAdded ()), | ||
84 | m_models->egos (), SLOT (add ())); | ||
85 | #endif | ||
86 | |||
81 | m_connected = connected; | 87 | m_connected = connected; |
82 | emit connectedChanged (m_connected); | 88 | emit connectedChanged (m_connected); |
83 | } | 89 | } |
diff --git a/src/model/EgoListModel.cpp b/src/model/EgoListModel.cpp index 740545f..3ffe6bd 100644 --- a/src/model/EgoListModel.cpp +++ b/src/model/EgoListModel.cpp | |||
@@ -28,9 +28,15 @@ | |||
28 | EgoListModel::EgoListModel (QObject * parent) | 28 | EgoListModel::EgoListModel (QObject * parent) |
29 | : QAbstractListModel (parent) | 29 | : QAbstractListModel (parent) |
30 | { | 30 | { |
31 | //connect(this, &EgoListModel::addNewPeerSignal, this, &EgoListModel::addNewPeerSlot, Qt::BlockingQueuedConnection); | 31 | connect (this, &EgoListModel::addEgoSignal, |
32 | connect (this, &EgoListModel::addNewEgoSignal, this, | 32 | this, &EgoListModel::addEgoSlot, Qt::BlockingQueuedConnection); |
33 | &EgoListModel::addNewEgoSlot, Qt::BlockingQueuedConnection); | 33 | } |
34 | |||
35 | |||
36 | void | ||
37 | EgoListModel::setData (const QList<Ego *> &data) | ||
38 | { | ||
39 | m_data = data; | ||
34 | } | 40 | } |
35 | 41 | ||
36 | 42 | ||
@@ -38,7 +44,7 @@ int | |||
38 | EgoListModel::rowCount (const QModelIndex & parent) const | 44 | EgoListModel::rowCount (const QModelIndex & parent) const |
39 | { | 45 | { |
40 | Q_UNUSED (parent); | 46 | Q_UNUSED (parent); |
41 | return m_data.size () + 1; // PLus one is because the last one is a "<CREATE>" | 47 | return m_data.size (); |
42 | } | 48 | } |
43 | 49 | ||
44 | 50 | ||
@@ -52,10 +58,8 @@ EgoListModel::contains (QString pubKey) | |||
52 | QVariant | 58 | QVariant |
53 | EgoListModel::data (const QModelIndex &index, int role) const | 59 | EgoListModel::data (const QModelIndex &index, int role) const |
54 | { | 60 | { |
55 | if (index.row () < 0 || index.row () > m_data.count ()) | 61 | if (index.row () < 0 || m_data.count () <= index.row ()) |
56 | return QVariant (); | 62 | return QVariant (); |
57 | else if (index.row () == m_data.count ()) | ||
58 | return QString ("<Create>"); | ||
59 | 63 | ||
60 | Ego *ego = m_data[index.row ()]; | 64 | Ego *ego = m_data[index.row ()]; |
61 | 65 | ||
@@ -95,6 +99,7 @@ EgoListModel::modifiedSlot (int indexRow) | |||
95 | emit dataChanged (modelIndex, modelIndex); | 99 | emit dataChanged (modelIndex, modelIndex); |
96 | } | 100 | } |
97 | 101 | ||
102 | |||
98 | /** | 103 | /** |
99 | * @brief EgoListModel::add, add a new ego to the model. | 104 | * @brief EgoListModel::add, add a new ego to the model. |
100 | * @param key | 105 | * @param key |
@@ -104,17 +109,17 @@ EgoListModel::modifiedSlot (int indexRow) | |||
104 | void | 109 | void |
105 | EgoListModel::add (Ego *ego) | 110 | EgoListModel::add (Ego *ego) |
106 | { | 111 | { |
107 | emit addNewEgoSignal (ego, ego->pubKeyString ()); | 112 | emit addEgoSignal (ego, ego->pubKeyString ()); |
108 | } | 113 | } |
109 | 114 | ||
110 | 115 | ||
111 | /** | 116 | /** |
112 | * @brief EgoListModel::addNewEgoSlot | 117 | * @brief EgoListModel::addEgoSlot |
113 | * @param key, the ego key. | 118 | * @param key, the ego key. |
114 | * @return return the same place as item | 119 | * @return return the same place as item |
115 | */ | 120 | */ |
116 | Ego * | 121 | Ego * |
117 | EgoListModel::addNewEgoSlot (Ego *item, QString pubKey) | 122 | EgoListModel::addEgoSlot (Ego *item, QString pubKey) |
118 | { | 123 | { |
119 | 124 | ||
120 | //Search if already exists | 125 | //Search if already exists |
@@ -138,10 +143,9 @@ EgoListModel::addNewEgoSlot (Ego *item, QString pubKey) | |||
138 | endInsertRows (); | 143 | endInsertRows (); |
139 | return item; | 144 | return item; |
140 | } | 145 | } |
141 | |||
142 | |||
143 | } | 146 | } |
144 | 147 | ||
148 | |||
145 | Ego * | 149 | Ego * |
146 | EgoListModel::get (QString key) | 150 | EgoListModel::get (QString key) |
147 | { | 151 | { |
@@ -154,20 +158,21 @@ EgoListModel::get (QString key) | |||
154 | return NULL; | 158 | return NULL; |
155 | } | 159 | } |
156 | 160 | ||
161 | |||
157 | Ego * | 162 | Ego * |
158 | EgoListModel::get (QModelIndex index) | 163 | EgoListModel::get (QModelIndex index) |
159 | { | 164 | { |
160 | 165 | if (m_data.count () <= index.row ()) | |
161 | if (getCount () <= index.row ()) | ||
162 | return NULL; | 166 | return NULL; |
163 | 167 | ||
164 | return m_data[index.row ()]; | 168 | return m_data[index.row ()]; |
165 | } | 169 | } |
166 | 170 | ||
171 | |||
167 | Ego * | 172 | Ego * |
168 | EgoListModel::get (int index) | 173 | EgoListModel::get (int index) |
169 | { | 174 | { |
170 | if (index < 0 || getCount () <= index) | 175 | if (index < 0 || m_data.count () <= index) |
171 | return NULL; | 176 | return NULL; |
172 | 177 | ||
173 | Ego *ego = m_data[index]; | 178 | Ego *ego = m_data[index]; |
@@ -178,6 +183,7 @@ EgoListModel::get (int index) | |||
178 | return ego; | 183 | return ego; |
179 | } | 184 | } |
180 | 185 | ||
186 | |||
181 | int | 187 | int |
182 | EgoListModel::getCount () | 188 | EgoListModel::getCount () |
183 | { | 189 | { |
diff --git a/src/model/EgoListModel.h b/src/model/EgoListModel.h index 0ab2bcb..33a9cbe 100644 --- a/src/model/EgoListModel.h +++ b/src/model/EgoListModel.h | |||
@@ -44,6 +44,9 @@ public: | |||
44 | EgoListModel (QObject *parent = 0); | 44 | EgoListModel (QObject *parent = 0); |
45 | 45 | ||
46 | void | 46 | void |
47 | setData (const QList<Ego *> &data); | ||
48 | |||
49 | void | ||
47 | add (Ego *ego); | 50 | add (Ego *ego); |
48 | 51 | ||
49 | Q_INVOKABLE int | 52 | Q_INVOKABLE int |
@@ -62,7 +65,7 @@ public: | |||
62 | signals: | 65 | signals: |
63 | 66 | ||
64 | void | 67 | void |
65 | addNewEgoSignal (Ego *item, QString pubKey); | 68 | addEgoSignal (Ego *item, QString pubKey); |
66 | 69 | ||
67 | public slots: | 70 | public slots: |
68 | 71 | ||
@@ -72,7 +75,7 @@ public slots: | |||
72 | private slots: | 75 | private slots: |
73 | 76 | ||
74 | Ego * | 77 | Ego * |
75 | addNewEgoSlot (Ego * item, QString name); | 78 | addEgoSlot (Ego *item, QString name); |
76 | 79 | ||
77 | private: | 80 | private: |
78 | 81 | ||
diff --git a/src/model/PlaceListModel.cpp b/src/model/PlaceListModel.cpp index 54fede7..1116679 100644 --- a/src/model/PlaceListModel.cpp +++ b/src/model/PlaceListModel.cpp | |||
@@ -28,9 +28,8 @@ | |||
28 | PlaceListModel::PlaceListModel (QObject * parent) | 28 | PlaceListModel::PlaceListModel (QObject * parent) |
29 | : QAbstractListModel (parent) | 29 | : QAbstractListModel (parent) |
30 | { | 30 | { |
31 | //connect(this, &PlaceListModel::addNewPlaceSignal, this, &PlaceListModel::addNewPlaceSlot, Qt::BlockingQueuedConnection); | 31 | connect (this, &PlaceListModel::addPlaceSignal, |
32 | connect (this, &PlaceListModel::addNewPlaceSignal, this, | 32 | this, &PlaceListModel::addPlaceSlot); |
33 | &PlaceListModel::addNewPlaceSlot); | ||
34 | } | 33 | } |
35 | 34 | ||
36 | 35 | ||
@@ -116,17 +115,17 @@ PlaceListModel::modifiedSlot (int indexRow) | |||
116 | void | 115 | void |
117 | PlaceListModel::add (Place *place) | 116 | PlaceListModel::add (Place *place) |
118 | { | 117 | { |
119 | emit addNewPlaceSignal (place, place->pubKeyString ()); | 118 | emit addPlaceSignal (place, place->pubKeyString ()); |
120 | } | 119 | } |
121 | 120 | ||
122 | 121 | ||
123 | /** | 122 | /** |
124 | * @brief PlaceListModel::addNewPlaceSlot | 123 | * @brief PlaceListModel::addPlaceSlot |
125 | * @param key, the place ID. | 124 | * @param key, the place ID. |
126 | * @return return the same place as item | 125 | * @return return the same place as item |
127 | */ | 126 | */ |
128 | Place * | 127 | Place * |
129 | PlaceListModel::addNewPlaceSlot (Place *item, QString pubKey) | 128 | PlaceListModel::addPlaceSlot (Place *item, QString pubKey) |
130 | { | 129 | { |
131 | 130 | ||
132 | //Search if already exists | 131 | //Search if already exists |
diff --git a/src/model/PlaceListModel.h b/src/model/PlaceListModel.h index 03d1501..b66044d 100644 --- a/src/model/PlaceListModel.h +++ b/src/model/PlaceListModel.h | |||
@@ -67,7 +67,7 @@ class PlaceListModel : public QAbstractListModel | |||
67 | signals: | 67 | signals: |
68 | 68 | ||
69 | void | 69 | void |
70 | addNewPlaceSignal (Place *item, QString key); | 70 | addPlaceSignal (Place *item, QString key); |
71 | 71 | ||
72 | public slots: | 72 | public slots: |
73 | 73 | ||
@@ -77,7 +77,7 @@ class PlaceListModel : public QAbstractListModel | |||
77 | private slots: | 77 | private slots: |
78 | 78 | ||
79 | Place * | 79 | Place * |
80 | addNewPlaceSlot (Place *item, QString name); | 80 | addPlaceSlot (Place *item, QString name); |
81 | 81 | ||
82 | private: | 82 | private: |
83 | 83 | ||
diff --git a/src/model/models.cpp b/src/model/models.cpp index 0ff97b3..cdac395 100644 --- a/src/model/models.cpp +++ b/src/model/models.cpp | |||
@@ -22,7 +22,7 @@ | |||
22 | #include "models.h" | 22 | #include "models.h" |
23 | 23 | ||
24 | 24 | ||
25 | Models::Models (QObject * parent) | 25 | Models::Models (QObject *parent) |
26 | : QObject (parent) | 26 | : QObject (parent) |
27 | { | 27 | { |
28 | m_egos = new EgoListModel (this); | 28 | m_egos = new EgoListModel (this); |
diff --git a/src/nym/ego.cpp b/src/nym/ego.cpp index 75e1513..410bab8 100644 --- a/src/nym/ego.cpp +++ b/src/nym/ego.cpp | |||
@@ -1,6 +1,10 @@ | |||
1 | #include "ego.h" | 1 | #include "ego.h" |
2 | 2 | ||
3 | Ego::Ego (GNUNET_CRYPTO_EcdsaPublicKey pubKey, QObject *parent) | 3 | Ego::Ego (GNUNET_CRYPTO_EcdsaPublicKey pubKey, |
4 | : Nym (pubKey, parent) | 4 | QString name, |
5 | GNUNET_SOCIAL_Ego *ego, | ||
6 | QObject *parent) | ||
7 | : Nym (pubKey, name, 0, parent) | ||
5 | { | 8 | { |
9 | setEgo (ego); | ||
6 | } | 10 | } |
diff --git a/src/nym/ego.h b/src/nym/ego.h index d41ba4b..fbf6370 100644 --- a/src/nym/ego.h +++ b/src/nym/ego.h | |||
@@ -13,7 +13,10 @@ class Ego : public Nym | |||
13 | public: | 13 | public: |
14 | 14 | ||
15 | explicit | 15 | explicit |
16 | Ego (GNUNET_CRYPTO_EcdsaPublicKey pubKey, QObject *parent = 0); | 16 | Ego (GNUNET_CRYPTO_EcdsaPublicKey pubKey, |
17 | QString name = "", | ||
18 | GNUNET_SOCIAL_Ego *ego = 0, | ||
19 | QObject *parent = 0); | ||
17 | 20 | ||
18 | 21 | ||
19 | GNUNET_SOCIAL_Ego * | 22 | GNUNET_SOCIAL_Ego * |
diff --git a/src/nym/nym.cpp b/src/nym/nym.cpp index 17ced59..007b26c 100644 --- a/src/nym/nym.cpp +++ b/src/nym/nym.cpp | |||
@@ -1,7 +1,12 @@ | |||
1 | #include "ego.h" | 1 | #include "ego.h" |
2 | 2 | ||
3 | Nym::Nym (GNUNET_CRYPTO_EcdsaPublicKey pubKey, QObject *parent): | 3 | Nym::Nym (GNUNET_CRYPTO_EcdsaPublicKey pubKey, |
4 | QObject (parent) | 4 | QString name, |
5 | GNUNET_SOCIAL_Nym *nym, | ||
6 | QObject *parent) | ||
7 | : QObject (parent) | ||
5 | { | 8 | { |
6 | setPubKey (pubKey); | 9 | setPubKey (pubKey); |
10 | setName (name); | ||
11 | setNym (nym); | ||
7 | } | 12 | } |
diff --git a/src/nym/nym.h b/src/nym/nym.h index 350a21c..bddf91d 100644 --- a/src/nym/nym.h +++ b/src/nym/nym.h | |||
@@ -15,7 +15,10 @@ class Nym : public QObject | |||
15 | public: | 15 | public: |
16 | 16 | ||
17 | explicit | 17 | explicit |
18 | Nym (GNUNET_CRYPTO_EcdsaPublicKey pubKey, QObject *parent = 0); | 18 | Nym (GNUNET_CRYPTO_EcdsaPublicKey pubKey, |
19 | QString name = "", | ||
20 | GNUNET_SOCIAL_Nym *nym = 0, | ||
21 | QObject *parent = 0); | ||
19 | 22 | ||
20 | int | 23 | int |
21 | getIndex () const | 24 | getIndex () const |
diff --git a/src/social/socialapp.cpp b/src/social/socialapp.cpp index 353ce56..c789e7e 100644 --- a/src/social/socialapp.cpp +++ b/src/social/socialapp.cpp | |||
@@ -41,11 +41,23 @@ SocialApp::egoCallback (void *cls, | |||
41 | const char *name) | 41 | const char *name) |
42 | { | 42 | { |
43 | SocialApp *s = (SocialApp *) cls; | 43 | SocialApp *s = (SocialApp *) cls; |
44 | s->m_curEgo = ego; | 44 | s->addEgo (new Ego (*egoPubKey, QString::fromLatin1 (name), ego)); |
45 | Ego *e = new Ego (*egoPubKey); | 45 | } |
46 | e->setEgo (ego); | 46 | |
47 | e->setName (QString::fromLatin1 (name)); | 47 | |
48 | theApp->models ()->egos ()->add (e); | 48 | void |
49 | SocialApp::addEgo (Ego *ego) | ||
50 | { | ||
51 | m_egos += ego; | ||
52 | emit egoAddedSignal (ego); | ||
53 | theApp->models ()->egos ()->add (ego); // FIXME | ||
54 | } | ||
55 | |||
56 | void | ||
57 | SocialApp::addPlace (Place *place) | ||
58 | { | ||
59 | m_places += place; | ||
60 | emit placeAddedSignal (place); | ||
49 | } | 61 | } |
50 | 62 | ||
51 | void | 63 | void |
@@ -56,7 +68,7 @@ SocialApp::hostPlaceCallback (void *cls, | |||
56 | enum GNUNET_SOCIAL_AppPlaceState placeState) | 68 | enum GNUNET_SOCIAL_AppPlaceState placeState) |
57 | { | 69 | { |
58 | SocialApp *s = (SocialApp *) cls; | 70 | SocialApp *s = (SocialApp *) cls; |
59 | s->m_places += new Host (s->m_app, ego, hconn, s); | 71 | s->addPlace (new Host (s->m_app, ego, hconn, s)); |
60 | } | 72 | } |
61 | 73 | ||
62 | 74 | ||
@@ -68,64 +80,95 @@ SocialApp::guestPlaceCallback (void *cls, | |||
68 | enum GNUNET_SOCIAL_AppPlaceState placeState) | 80 | enum GNUNET_SOCIAL_AppPlaceState placeState) |
69 | { | 81 | { |
70 | SocialApp *s = (SocialApp *) cls; | 82 | SocialApp *s = (SocialApp *) cls; |
71 | s->m_places += new Guest (s->m_app, ego, gconn, s); | 83 | s->addPlace (new Guest (s->m_app, ego, gconn, s)); |
84 | } | ||
85 | |||
86 | |||
87 | Ego * | ||
88 | SocialApp::findEgo (const QString pubKeyStr) | ||
89 | { | ||
90 | QListIterator<Ego *> it (m_egos); | ||
91 | while (it.hasNext ()) | ||
92 | { | ||
93 | Ego *ego = it.next (); | ||
94 | if (ego->pubKeyString () == pubKeyStr) | ||
95 | return ego; | ||
96 | } | ||
97 | return 0; | ||
98 | } | ||
99 | |||
100 | |||
101 | void | ||
102 | SocialApp::placeCreate (GNUNET_SOCIAL_Ego *ego) | ||
103 | { | ||
104 | addPlace (new Host (m_app, ego, GNUNET_PSYC_CHANNEL_PRIVATE, this)); // FIXME: ego | ||
72 | } | 105 | } |
73 | 106 | ||
74 | 107 | ||
75 | void | 108 | void |
76 | SocialApp::placeCreate () | 109 | SocialApp::createPlaceSlot (QString egoPubKeyStr) |
77 | { | 110 | { |
78 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating a New Place.\n"); | 111 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating a New Place.\n"); |
79 | 112 | ||
80 | Host *host = new Host (m_app, m_curEgo, GNUNET_PSYC_CHANNEL_PRIVATE, this); // FIXME: ego | 113 | Ego *ego = findEgo (egoPubKeyStr); |
81 | m_places += host; | 114 | if (!ego) // FIXME: fall back to last added ego for now |
115 | { | ||
116 | Q_ASSERT (!m_egos.isEmpty ()); | ||
117 | ego = m_egos.last (); | ||
118 | } | ||
119 | |||
120 | placeCreate (ego->ego ()); | ||
82 | } | 121 | } |
83 | 122 | ||
84 | 123 | ||
85 | void | 124 | void |
86 | SocialApp::createPlaceSlot () | 125 | SocialApp::createPlace (QString egoPubKeyStr) |
87 | { | 126 | { |
88 | placeCreate (); | 127 | emit createPlaceSignal (egoPubKeyStr); |
89 | } | 128 | } |
90 | 129 | ||
91 | 130 | ||
92 | void | 131 | void |
93 | SocialApp::createPlace () | 132 | SocialApp::placeEnter (GNUNET_SOCIAL_Ego *ego, |
133 | GNUNET_CRYPTO_EddsaPublicKey *pubKey, | ||
134 | GNUNET_PeerIdentity *peerId) | ||
94 | { | 135 | { |
95 | emit createPlaceSignal (); | 136 | addPlace (new Guest (m_app, ego, pubKey, peerId, 0, NULL, NULL, this)); |
96 | } | 137 | } |
97 | 138 | ||
98 | 139 | ||
99 | void | 140 | void |
100 | SocialApp::placeEnter (QString pubKeyStr, QString peerIdStr) | 141 | SocialApp::enterPlaceSlot (QString egoPubKeyStr, QString pubKeyStr, QString peerIdStr) |
101 | { | 142 | { |
102 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering place %s as guest.\n", | 143 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Entering place %s as guest.\n", |
103 | pubKeyStr.toStdString ().c_str ()); | 144 | pubKeyStr.toStdString ().c_str ()); |
104 | 145 | ||
105 | GNUNET_CRYPTO_EddsaPublicKey *pubKey = new GNUNET_CRYPTO_EddsaPublicKey; | 146 | GNUNET_CRYPTO_EddsaPublicKey pubKey; |
106 | if (GNUNET_OK != | 147 | if (GNUNET_OK != |
107 | GNUNET_CRYPTO_eddsa_public_key_from_string (pubKeyStr.toStdString ().c_str (), | 148 | GNUNET_CRYPTO_eddsa_public_key_from_string (pubKeyStr.toStdString ().c_str (), |
108 | pubKeyStr.length (), | 149 | pubKeyStr.length (), |
109 | pubKey)) | 150 | &pubKey)) |
110 | return; // Failed conversion | 151 | return; // Failed conversion |
111 | 152 | ||
112 | GNUNET_PeerIdentity peerId; | 153 | GNUNET_PeerIdentity peerId; |
113 | GNUNET_CRYPTO_eddsa_public_key_from_string (peerIdStr.toStdString ().c_str (), | 154 | if (GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string (peerIdStr.toStdString ().c_str (), |
114 | peerIdStr.length (), | 155 | peerIdStr.length (), |
115 | &peerId.public_key); | 156 | &peerId.public_key)) |
116 | m_places += new Guest (m_app, m_curEgo, pubKey, &peerId, 0, NULL, NULL, this); | 157 | return; // Failed conversion |
117 | } | ||
118 | 158 | ||
159 | Ego *ego = findEgo (egoPubKeyStr); | ||
160 | if (!ego) // FIXME: fall back to last added ego for now | ||
161 | { | ||
162 | Q_ASSERT (!m_egos.isEmpty ()); | ||
163 | ego = m_egos.last (); | ||
164 | } | ||
119 | 165 | ||
120 | void | 166 | placeEnter (ego->ego (), &pubKey, &peerId); |
121 | SocialApp::enterPlaceSlot (QString pubKeyStr, QString peerIdStr) | ||
122 | { | ||
123 | placeEnter (pubKeyStr, peerIdStr); | ||
124 | } | 167 | } |
125 | 168 | ||
126 | 169 | ||
127 | void | 170 | void |
128 | SocialApp::enterPlace (QString pubKeyStr, QString peerIdStr) | 171 | SocialApp::enterPlace (QString egoPubKeyStr, QString pubKeyStr, QString peerIdStr) |
129 | { | 172 | { |
130 | emit enterPlaceSignal (pubKeyStr, peerIdStr); | 173 | emit enterPlaceSignal (egoPubKeyStr, pubKeyStr, peerIdStr); |
131 | } | 174 | } |
diff --git a/src/social/socialapp.h b/src/social/socialapp.h index 99ee0ab..4aaa2c3 100644 --- a/src/social/socialapp.h +++ b/src/social/socialapp.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <QObject> | 4 | #include <QObject> |
5 | #include <QDebug> | 5 | #include <QDebug> |
6 | 6 | ||
7 | #include "nym/ego.h" | ||
7 | #include "social/place.h" | 8 | #include "social/place.h" |
8 | #include "gnunet.h" | 9 | #include "gnunet.h" |
9 | 10 | ||
@@ -17,28 +18,63 @@ class SocialApp : public QObject | |||
17 | QObject *parent = 0); | 18 | QObject *parent = 0); |
18 | ~SocialApp (); | 19 | ~SocialApp (); |
19 | 20 | ||
20 | void placeCreate (); | 21 | Ego * |
21 | void placeEnter (QString pubKeyStr, QString peerIdStr); | 22 | findEgo (const QString pubKeyStr); |
22 | 23 | ||
23 | Q_INVOKABLE void createPlace (); | 24 | void |
24 | Q_INVOKABLE void enterPlace (QString pubKeyStr, QString peerIdStr); | 25 | placeCreate (GNUNET_SOCIAL_Ego *ego); |
26 | |||
27 | void | ||
28 | placeEnter (GNUNET_SOCIAL_Ego *ego, | ||
29 | GNUNET_CRYPTO_EddsaPublicKey *pubKey, | ||
30 | GNUNET_PeerIdentity *peerId); | ||
31 | |||
32 | Q_INVOKABLE void | ||
33 | createPlace (QString egoPubKeyStr); | ||
34 | |||
35 | Q_INVOKABLE void | ||
36 | enterPlace (QString egoPubKeyStr, QString pubKeyStr, QString peerIdStr); | ||
37 | |||
38 | const QList<Ego *> & | ||
39 | egos () | ||
40 | { | ||
41 | return m_egos; | ||
42 | } | ||
43 | |||
44 | const QList<Place *> & | ||
45 | places () | ||
46 | { | ||
47 | return m_places; | ||
48 | } | ||
25 | 49 | ||
26 | signals: | 50 | signals: |
27 | 51 | ||
28 | void createPlaceSignal (); | 52 | void |
29 | void enterPlaceSignal (QString pubKey, QString peerIdentity); | 53 | createPlaceSignal (QString egoPubKeyStr); |
54 | |||
55 | void | ||
56 | enterPlaceSignal (QString egoPubKeyStr, QString pubKey, QString peerId); | ||
57 | |||
58 | void | ||
59 | egoAddedSignal (Ego *ego); | ||
60 | |||
61 | void | ||
62 | placeAddedSignal (Place *place); | ||
30 | 63 | ||
31 | public slots: | 64 | public slots: |
32 | 65 | ||
33 | void createPlaceSlot (); | 66 | void |
34 | void enterPlaceSlot (QString pubKey, QString peerIdentity); | 67 | createPlaceSlot (QString egoPubKeyStr); |
68 | |||
69 | void | ||
70 | enterPlaceSlot (QString egoPubKeyStr, QString pubKey, QString peerId); | ||
35 | 71 | ||
36 | private: | 72 | private: |
37 | 73 | ||
38 | GNUNET_SOCIAL_App *m_app; | 74 | GNUNET_SOCIAL_App *m_app; |
39 | GNUNET_SOCIAL_Ego *m_curEgo; // FIXME | 75 | QList<Ego *> m_egos; |
76 | QList<Place *> m_places; | ||
40 | GNUNET_CONFIGURATION_Handle *m_config; | 77 | GNUNET_CONFIGURATION_Handle *m_config; |
41 | QList<Place*> m_places; | ||
42 | 78 | ||
43 | static void | 79 | static void |
44 | egoCallback (void *cls, | 80 | egoCallback (void *cls, |
@@ -46,6 +82,12 @@ class SocialApp : public QObject | |||
46 | const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key, | 82 | const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key, |
47 | const char *name); | 83 | const char *name); |
48 | 84 | ||
85 | void | ||
86 | addEgo (Ego *ego); | ||
87 | |||
88 | void | ||
89 | addPlace (Place *place); | ||
90 | |||
49 | static void | 91 | static void |
50 | hostPlaceCallback (void *cls, | 92 | hostPlaceCallback (void *cls, |
51 | struct GNUNET_SOCIAL_HostConnection *hconn, | 93 | struct GNUNET_SOCIAL_HostConnection *hconn, |