diff options
Diffstat (limited to 'src/plugins/peers/peers.c')
-rw-r--r-- | src/plugins/peers/peers.c | 114 |
1 files changed, 63 insertions, 51 deletions
diff --git a/src/plugins/peers/peers.c b/src/plugins/peers/peers.c index 0b7b5a20..e25072b0 100644 --- a/src/plugins/peers/peers.c +++ b/src/plugins/peers/peers.c | |||
@@ -48,20 +48,22 @@ static GdkPixbuf *red; | |||
48 | 48 | ||
49 | static GdkPixbuf *black; | 49 | static GdkPixbuf *black; |
50 | 50 | ||
51 | struct Flags { | 51 | struct Flags |
52 | struct Flags * next; | 52 | { |
53 | char * cc; | 53 | struct Flags *next; |
54 | GdkPixbuf * flag; | 54 | char *cc; |
55 | GdkPixbuf *flag; | ||
55 | }; | 56 | }; |
56 | 57 | ||
57 | static struct Flags * flags; | 58 | static struct Flags *flags; |
58 | 59 | ||
59 | static int | 60 | static int |
60 | collector (void *data, | 61 | collector (void *data, |
61 | const GNUNET_PeerIdentity * identity, | 62 | const GNUNET_PeerIdentity * identity, |
62 | const void *address, | 63 | const void *address, |
63 | unsigned int addr_len, | 64 | unsigned int addr_len, |
64 | GNUNET_CronTime last_message, unsigned int trust, unsigned int bpmFromPeer) | 65 | GNUNET_CronTime last_message, unsigned int trust, |
66 | unsigned int bpmFromPeer) | ||
65 | { | 67 | { |
66 | GtkListStore *model = data; | 68 | GtkListStore *model = data; |
67 | GtkTreeIter iter; | 69 | GtkTreeIter iter; |
@@ -78,7 +80,7 @@ collector (void *data, | |||
78 | GNUNET_CronTime now; | 80 | GNUNET_CronTime now; |
79 | int i; | 81 | int i; |
80 | int found; | 82 | int found; |
81 | struct Flags * pos; | 83 | struct Flags *pos; |
82 | 84 | ||
83 | GNUNET_hash_to_enc (&identity->hashPubKey, &enc); | 85 | GNUNET_hash_to_enc (&identity->hashPubKey, &enc); |
84 | /* check if same peer is already in model! */ | 86 | /* check if same peer is already in model! */ |
@@ -138,35 +140,38 @@ collector (void *data, | |||
138 | if (cc != NULL) | 140 | if (cc != NULL) |
139 | { | 141 | { |
140 | pos = flags; | 142 | pos = flags; |
141 | while (pos != NULL) { | 143 | while (pos != NULL) |
142 | if (0 == strcmp(pos->cc, cc)) { | 144 | { |
143 | flagBuf = pos->flag; | 145 | if (0 == strcmp (pos->cc, cc)) |
144 | break; | 146 | { |
145 | } | 147 | flagBuf = pos->flag; |
146 | pos = pos->next; | 148 | break; |
147 | } | 149 | } |
148 | if (pos == NULL) { | 150 | pos = pos->next; |
149 | cc = GNUNET_strdup (cc); | 151 | } |
150 | for (i = 0; i < strlen (cc); i++) | 152 | if (pos == NULL) |
151 | cc[i] = tolower (cc[i]); | 153 | { |
152 | dir = GNUNET_get_installation_path (GNUNET_IPK_DATADIR); | 154 | cc = GNUNET_strdup (cc); |
153 | fn = GNUNET_malloc (strlen (dir) + 32); | 155 | for (i = 0; i < strlen (cc); i++) |
154 | strcpy (fn, dir); | 156 | cc[i] = tolower (cc[i]); |
155 | strcat (fn, | 157 | dir = GNUNET_get_installation_path (GNUNET_IPK_DATADIR); |
156 | DIR_SEPARATOR_STR ".." | 158 | fn = GNUNET_malloc (strlen (dir) + 32); |
157 | DIR_SEPARATOR_STR "gnunet-gtk" | 159 | strcpy (fn, dir); |
158 | DIR_SEPARATOR_STR "flags" DIR_SEPARATOR_STR); | 160 | strcat (fn, |
159 | strcat (fn, cc); | 161 | DIR_SEPARATOR_STR ".." |
160 | strcat (fn, ".png"); | 162 | DIR_SEPARATOR_STR "gnunet-gtk" |
161 | GNUNET_free (dir); | 163 | DIR_SEPARATOR_STR "flags" DIR_SEPARATOR_STR); |
162 | flagBuf = gdk_pixbuf_new_from_file (fn, NULL); | 164 | strcat (fn, cc); |
163 | GNUNET_free (fn); | 165 | strcat (fn, ".png"); |
164 | pos = GNUNET_malloc(sizeof(struct Flags)); | 166 | GNUNET_free (dir); |
165 | pos->cc = cc; | 167 | flagBuf = gdk_pixbuf_new_from_file (fn, NULL); |
166 | pos->flag = flagBuf; | 168 | GNUNET_free (fn); |
167 | pos->next = flags; | 169 | pos = GNUNET_malloc (sizeof (struct Flags)); |
168 | flags = pos; | 170 | pos->cc = cc; |
169 | } | 171 | pos->flag = flagBuf; |
172 | pos->next = flags; | ||
173 | flags = pos; | ||
174 | } | ||
170 | } | 175 | } |
171 | 176 | ||
172 | /* get LED */ | 177 | /* get LED */ |
@@ -236,7 +241,8 @@ updatePeerInfoSafe (void *m) | |||
236 | GtkSortType order; | 241 | GtkSortType order; |
237 | gint sort_column; | 242 | gint sort_column; |
238 | 243 | ||
239 | w = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | 244 | w = |
245 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | ||
240 | old_model = gtk_tree_view_get_model (GTK_TREE_VIEW (w)); | 246 | old_model = gtk_tree_view_get_model (GTK_TREE_VIEW (w)); |
241 | if (old_model != NULL) | 247 | if (old_model != NULL) |
242 | { | 248 | { |
@@ -259,7 +265,7 @@ updatePeerInfo (void *dummy) | |||
259 | 265 | ||
260 | model = getPeerModel (); | 266 | model = getPeerModel (); |
261 | GNUNET_GTK_save_call (&updatePeerInfoSafe, model); | 267 | GNUNET_GTK_save_call (&updatePeerInfoSafe, model); |
262 | g_object_unref(G_OBJECT(model)); | 268 | g_object_unref (G_OBJECT (model)); |
263 | } | 269 | } |
264 | 270 | ||
265 | 271 | ||
@@ -276,7 +282,8 @@ init_peers (struct GNUNET_GEContext *e, struct GNUNET_GC_Configuration *c) | |||
276 | 282 | ||
277 | ectx = e; | 283 | ectx = e; |
278 | cfg = c; | 284 | cfg = c; |
279 | peers = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | 285 | peers = |
286 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | ||
280 | renderer = gtk_cell_renderer_text_new (); | 287 | renderer = gtk_cell_renderer_text_new (); |
281 | col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (peers), | 288 | col = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (peers), |
282 | -1, | 289 | -1, |
@@ -379,17 +386,20 @@ init_peers (struct GNUNET_GEContext *e, struct GNUNET_GC_Configuration *c) | |||
379 | GNUNET_free (fn); | 386 | GNUNET_free (fn); |
380 | GNUNET_free (dir); | 387 | GNUNET_free (dir); |
381 | 388 | ||
382 | tab = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersScrolledWindow"); | 389 | tab = |
390 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), | ||
391 | "peersScrolledWindow"); | ||
383 | gtk_widget_show (tab); | 392 | gtk_widget_show (tab); |
384 | cron = GNUNET_GTK_get_cron_manager (); | 393 | cron = GNUNET_GTK_get_cron_manager (); |
385 | GNUNET_cron_add_job (cron, &updatePeerInfo, REFRESH_RATE, REFRESH_RATE, NULL); | 394 | GNUNET_cron_add_job (cron, &updatePeerInfo, REFRESH_RATE, REFRESH_RATE, |
395 | NULL); | ||
386 | } | 396 | } |
387 | 397 | ||
388 | void | 398 | void |
389 | done_peers () | 399 | done_peers () |
390 | { | 400 | { |
391 | GtkWidget *w; | 401 | GtkWidget *w; |
392 | struct Flags * pos; | 402 | struct Flags *pos; |
393 | 403 | ||
394 | GNUNET_cron_del_job (cron, &updatePeerInfo, REFRESH_RATE, NULL); | 404 | GNUNET_cron_del_job (cron, &updatePeerInfo, REFRESH_RATE, NULL); |
395 | if (red != NULL) | 405 | if (red != NULL) |
@@ -400,17 +410,19 @@ done_peers () | |||
400 | g_object_unref (black); | 410 | g_object_unref (black); |
401 | if (yellow != NULL) | 411 | if (yellow != NULL) |
402 | g_object_unref (yellow); | 412 | g_object_unref (yellow); |
403 | w = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | 413 | w = |
414 | glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "peersTreeView"); | ||
404 | gtk_tree_view_set_model (GTK_TREE_VIEW (w), NULL); | 415 | gtk_tree_view_set_model (GTK_TREE_VIEW (w), NULL); |
405 | 416 | ||
406 | while (flags != NULL) { | 417 | while (flags != NULL) |
407 | pos = flags->next; | 418 | { |
408 | if (flags->flag != NULL) | 419 | pos = flags->next; |
409 | g_object_unref(flags->flag); | 420 | if (flags->flag != NULL) |
410 | GNUNET_free (flags->cc); | 421 | g_object_unref (flags->flag); |
411 | GNUNET_free(flags); | 422 | GNUNET_free (flags->cc); |
412 | flags = pos; | 423 | GNUNET_free (flags); |
413 | } | 424 | flags = pos; |
425 | } | ||
414 | } | 426 | } |
415 | 427 | ||
416 | 428 | ||