summaryrefslogtreecommitdiff
path: root/src/gnunet/social/place.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gnunet/social/place.h')
-rw-r--r--src/gnunet/social/place.h251
1 files changed, 251 insertions, 0 deletions
diff --git a/src/gnunet/social/place.h b/src/gnunet/social/place.h
new file mode 100644
index 0000000..c5445be
--- /dev/null
+++ b/src/gnunet/social/place.h
@@ -0,0 +1,251 @@
1#ifndef PLACE_H
2#define PLACE_H
3
4#include <QObject>
5#include "message.h"
6#include "gnunet.h"
7
8
9class Place : public QObject
10{
11
12 Q_OBJECT;
13 Q_PROPERTY (QString pubkey READ pubKeyString NOTIFY pubKeyStringChanged);
14 Q_PROPERTY (QString name READ name WRITE setName NOTIFY nameChanged);
15 Q_PROPERTY (QString desc READ desc WRITE setDesc NOTIFY descChanged);
16
17 public:
18
19 explicit Place (QObject *parent = 0);
20
21 //Index
22 int index () const
23 {
24 return m_index;
25 }
26 void setIndex (int index)
27 {
28 m_index = index;
29 }
30
31 //Name
32 QString name () const
33 {
34 return m_name;
35 }
36 void setName (QString name)
37 {
38 m_name = name;
39 emit nameChanged (name);
40 emit modified (this);
41 }
42
43 // Desc
44 QString desc () const
45 {
46 return m_desc;
47 }
48 void setDesc (QString desc)
49 {
50 m_desc = desc;
51 emit descChanged (desc);
52 emit modified (this);
53 }
54
55 //Type
56 QString type () const
57 {
58 return m_type;
59 }
60 void setType (QString type)
61 {
62 m_type = type;
63 emit typeChanged (type);
64 emit modified (this);
65 }
66
67 //Is Host ?
68 bool isHost () const
69 {
70 return m_isHost;
71 }
72
73 //Public Key
74 GNUNET_CRYPTO_EddsaPublicKey pubKey () const
75 {
76 return m_pubKey;
77 }
78
79 QString pubKeyString () const
80 {
81 return m_pubKeyStr;
82 }
83
84 void setPubKey (GNUNET_CRYPTO_EddsaPublicKey pubKey)
85 {
86 m_pubKey = pubKey;
87 char *pubKeyChr = GNUNET_CRYPTO_eddsa_public_key_to_string (&pubKey);
88 m_pubKeyStr = QString::fromLatin1 (pubKeyChr);
89 GNUNET_free (pubKeyChr);
90 emit pubKeyStringChanged (m_pubKeyStr);
91 emit modified (this);
92 }
93
94 const QList<Message *> &
95 threads ()
96 {
97 return m_threads;
98 }
99
100 Q_INVOKABLE void
101 copyToClipboard ();
102
103 Q_INVOKABLE void
104 talk (QString text);
105
106 protected:
107
108 int m_index;
109
110 QString m_name;
111
112 QString m_desc;
113
114 QString m_type; // FIXME
115
116 /// Message currently being received.
117 Message *m_msg;
118
119 /// Modifier currently being received.
120 Modifier *m_mod;
121
122 /// List of top-level, thread-starting messages.
123 QList<Message *> m_threads;
124
125 /// _thread_id -> thread starter Message
126 QHash<uint64_t, Message *> m_threadHash;
127
128 /// _message_id -> Message
129 QHash<uint64_t, Message *> m_msgHash;
130
131 QString m_pubKeyStr;
132
133 GNUNET_CRYPTO_EddsaPublicKey m_pubKey;
134
135 bool m_isHost;
136
137 GNUNET_SOCIAL_App *m_app;
138 GNUNET_SOCIAL_Ego *m_ego;
139 GNUNET_SOCIAL_Place *m_plc;
140 GNUNET_PSYC_Slicer *m_slicer;
141
142 bool m_inTransmit;
143 std::string m_tmitData;
144 size_t m_tmitSent;
145
146 void
147 init (GNUNET_CRYPTO_EddsaPublicKey pubKey);
148
149 GNUNET_PSYC_Slicer *
150 createSlicer ();
151
152 static int
153 notifyDataCallback (void *cls, uint16_t *data_size, void *data);
154
155 int
156 notifyData (uint16_t *data_size, void *data);
157
158 void
159 insertMessage (Message *msg);
160
161 static void
162 recvMethodCallback (void *cls,
163 const struct GNUNET_PSYC_MessageHeader *msg,
164 const struct GNUNET_PSYC_MessageMethod *meth,
165 uint64_t message_id,
166 const char *method_name);
167
168 void
169 recvMethod (const struct GNUNET_PSYC_MessageHeader *msg,
170 const struct GNUNET_PSYC_MessageMethod *meth,
171 uint64_t message_id,
172 const char *method_name);
173
174 static void
175 recvModifierCallback (void *cls,
176 const struct GNUNET_PSYC_MessageHeader *msg,
177 const struct GNUNET_MessageHeader *pmsg,
178 uint64_t message_id,
179 enum GNUNET_PSYC_Operator oper,
180 const char *name, const void *value,
181 uint16_t value_size,
182 uint16_t full_value_size);
183
184 void
185 recvModifier (const struct GNUNET_PSYC_MessageHeader *msg,
186 const struct GNUNET_MessageHeader *pmsg,
187 uint64_t message_id,
188 enum GNUNET_PSYC_Operator oper,
189 const char *name,
190 const void *value,
191 uint16_t value_size,
192 uint16_t full_value_size);
193
194
195 static void
196 recvDataCallback (void *cls,
197 const struct GNUNET_PSYC_MessageHeader *msg,
198 const struct GNUNET_MessageHeader *pmsg,
199 uint64_t message_id,
200 const void *data,
201 uint16_t data_size);
202
203 void
204 recvData (const struct GNUNET_PSYC_MessageHeader *msg,
205 const struct GNUNET_MessageHeader *pmsg,
206 uint64_t message_id,
207 const void *data,
208 uint16_t data_size);
209
210 static void
211 recvEomCallback (void *cls,
212 const struct GNUNET_PSYC_MessageHeader *msg,
213 const struct GNUNET_MessageHeader *pmsg,
214 uint64_t message_id,
215 uint8_t is_cancelled);
216
217 void
218 recvEom (const struct GNUNET_PSYC_MessageHeader *msg,
219 const struct GNUNET_MessageHeader *pmsg,
220 uint64_t message_id,
221 uint8_t is_cancelled);
222
223 signals:
224
225 void modified (Place *place);
226
227 void pubKeyStringChanged (QString pubKeyString);
228
229 void nameChanged (QString name);
230
231 void descChanged (QString desc);
232
233 void typeChanged (QString type);
234
235 void dataSent ();
236
237 void messageReceived (Message *msg, Message *parent, Message *thread);
238
239 void threadAdded (Message *msg);
240
241#if FIXME
242 void talkSignal (QString text);
243
244 void setTrayMessage (QString place, QString text);
245#endif
246
247public slots:
248
249};
250
251#endif