diff options
Diffstat (limited to 'src/gnunet/social/place.h')
-rw-r--r-- | src/gnunet/social/place.h | 251 |
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 | |||
9 | class 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 | |||
247 | public slots: | ||
248 | |||
249 | }; | ||
250 | |||
251 | #endif | ||