[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r29945 - in gnunet-gtk: contrib src/peerinfo src/setup
From: |
gnunet |
Subject: |
[GNUnet-SVN] r29945 - in gnunet-gtk: contrib src/peerinfo src/setup |
Date: |
Mon, 7 Oct 2013 21:28:26 +0200 |
Author: grothoff
Date: 2013-10-07 21:28:26 +0200 (Mon, 07 Oct 2013)
New Revision: 29945
Modified:
gnunet-gtk/contrib/gnunet_peerinfo_gtk_main_window.glade
gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c
gnunet-gtk/src/setup/gnunet-setup-hostlist-editing.c
Log:
-enable friends editing
Modified: gnunet-gtk/contrib/gnunet_peerinfo_gtk_main_window.glade
===================================================================
--- gnunet-gtk/contrib/gnunet_peerinfo_gtk_main_window.glade 2013-10-07
19:28:15 UTC (rev 29944)
+++ gnunet-gtk/contrib/gnunet_peerinfo_gtk_main_window.glade 2013-10-07
19:28:26 UTC (rev 29945)
@@ -24,6 +24,8 @@
<column type="gboolean"/>
<!-- column-name is_friend -->
<column type="gboolean"/>
+ <!-- column-name peerinfo -->
+ <column type="gpointer"/>
</columns>
</object>
<object class="GtkWindow" id="GNUNET_PEERINFO_GTK_main_window">
Modified: gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c
===================================================================
--- gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c 2013-10-07 19:28:15 UTC
(rev 29944)
+++ gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c 2013-10-07 19:28:26 UTC
(rev 29945)
@@ -88,7 +88,12 @@
/**
* A gboolean
*/
- PEERINFO_MC_IS_FRIEND = 9
+ PEERINFO_MC_IS_FRIEND = 9,
+
+ /**
+ * A `struct PeerInfo *`
+ */
+ PEERINFO_MC_PEERINFO = 10
};
@@ -113,6 +118,11 @@
struct GNUNET_TRANSPORT_AddressToStringContext *tos;
/**
+ * Identity of the peer for this entry.
+ */
+ struct GNUNET_PeerIdentity pid;
+
+ /**
* Did we get any address?
*/
int got_address;
@@ -379,6 +389,8 @@
info = GNUNET_CONTAINER_multipeermap_get (peer2info, peer);
if (NULL == info)
{
+ info = GNUNET_new (struct PeerInfo);
+ info->pid = *peer;
gtk_list_store_append (ls, &iter);
gtk_list_store_set (ls, &iter,
PEERINFO_MC_PEER_IDENTITY_STRING, GNUNET_i2s (peer),
@@ -392,9 +404,9 @@
PEERINFO_MC_CONNECTED_STATUS, FALSE,
PEERINFO_MC_IS_FRIEND,
GNUNET_CONTAINER_multipeermap_contains (friends,
peer),
+ PEERINFO_MC_PEERINFO, info,
-1);
path = gtk_tree_model_get_path (GTK_TREE_MODEL (ls), &iter);
- info = GNUNET_malloc (sizeof (struct PeerInfo));
info->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (ls), path);
GNUNET_assert (NULL != info->rr);
gtk_tree_path_free (path);
@@ -454,6 +466,51 @@
/**
+ * Write a friend to the friends file.
+ *
+ * @param cls the `struct GNUNET_FRIENDS_Writer`
+ * @param friend friend to write to file
+ * @param value unused
+ * @return #GNUNET_OK if the writing succeeded
+ */
+static int
+write_friend (void *cls,
+ const struct GNUNET_PeerIdentity *friend,
+ void *value)
+{
+ struct GNUNET_FRIENDS_Writer *w = cls;
+
+ return GNUNET_FRIENDS_write (w, friend);
+}
+
+
+/**
+ * Write an updated friends file out to disk.
+ */
+static void
+write_friends ()
+{
+ struct GNUNET_FRIENDS_Writer *w;
+
+ w = GNUNET_FRIENDS_write_start (get_configuration ());
+ if (NULL == w)
+ {
+ GNUNET_break (0);
+ return;
+ }
+ GNUNET_CONTAINER_multipeermap_iterate (friends,
+ &write_friend,
+ w);
+ if (GNUNET_OK !=
+ GNUNET_FRIENDS_write_stop (w))
+ {
+ GNUNET_break (0);
+ return;
+ }
+}
+
+
+/**
* The user has toggled the 'is friend' column for one of the peers.
* Update everything.
*
@@ -466,7 +523,46 @@
gchar
*path,
gpointer user_data)
{
- GNUNET_break (0); // not implemented
+ GtkListStore *ls;
+ GtkTreeIter old;
+ struct PeerInfo *info;
+ gboolean oldvalue;
+
+ ls = GTK_LIST_STORE (get_object ("GNUNET_PEERINFO_GTK_list_store"));
+ if (NULL == ls)
+ {
+ GNUNET_break (0);
+ return;
+ }
+ if (TRUE !=
+ gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (ls), &old, path))
+ {
+ GNUNET_break (0);
+ return;
+ }
+ gtk_tree_model_get (GTK_TREE_MODEL (ls), &old,
+ PEERINFO_MC_PEERINFO, &info,
+ PEERINFO_MC_IS_FRIEND, &oldvalue,
+ -1);
+ gtk_list_store_set (ls, &old,
+ PEERINFO_MC_IS_FRIEND, ! oldvalue,
+ -1);
+ if (oldvalue)
+ {
+ GNUNET_break (1 ==
+ GNUNET_CONTAINER_multipeermap_remove_all (friends,
+ &info->pid));
+ }
+ else
+ {
+ GNUNET_break (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_put (friends,
+ &info->pid,
+ "true",
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+
+ }
+ write_friends ();
}
Modified: gnunet-gtk/src/setup/gnunet-setup-hostlist-editing.c
===================================================================
--- gnunet-gtk/src/setup/gnunet-setup-hostlist-editing.c 2013-10-07
19:28:15 UTC (rev 29944)
+++ gnunet-gtk/src/setup/gnunet-setup-hostlist-editing.c 2013-10-07
19:28:26 UTC (rev 29945)
@@ -36,8 +36,8 @@
* @param user_data not used
*/
void
-GNUNET_setup_hostlist_url_cellrenderertext_edited_cb (GtkCellRendererText *
- renderer, gchar * path,
+GNUNET_setup_hostlist_url_cellrenderertext_edited_cb (GtkCellRendererText
*renderer,
+ gchar * path,
gchar * new_text,
gpointer user_data)
{
@@ -48,20 +48,20 @@
ls = GTK_LIST_STORE (GNUNET_SETUP_get_object
("GNUNET_setup_hostlist_url_liststore"));
- if (ls == NULL)
+ if (NULL == ls)
{
GNUNET_break (0);
return;
}
- if (TRUE !=
- gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (ls), &old, path))
+ if (! gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (ls), &old, path))
{
GNUNET_break (0);
return;
}
- gtk_tree_model_get (GTK_TREE_MODEL (ls), &old, 0, &oldtext, -1);
- fprintf (stderr, "Edited to `%s'\n", new_text);
- if (strlen (oldtext) == 0)
+ gtk_tree_model_get (GTK_TREE_MODEL (ls), &old,
+ GNUNET_GTK_SETUP_HOSTLIST_URL_MC_URL, &oldtext,
+ -1);
+ if (0 == strlen (oldtext))
{
gtk_list_store_insert_before (ls, &iter, &old);
gtk_list_store_set (ls, &iter,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r29945 - in gnunet-gtk: contrib src/peerinfo src/setup,
gnunet <=