gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r33392 - gnunet-gtk/src/conversation


From: gnunet
Subject: [GNUnet-SVN] r33392 - gnunet-gtk/src/conversation
Date: Mon, 26 May 2014 15:46:09 +0200

Author: grothoff
Date: 2014-05-26 15:46:08 +0200 (Mon, 26 May 2014)
New Revision: 33392

Modified:
   gnunet-gtk/src/conversation/gnunet-conversation-gtk_contacts.c
Log:
-finish update logic

Modified: gnunet-gtk/src/conversation/gnunet-conversation-gtk_contacts.c
===================================================================
--- gnunet-gtk/src/conversation/gnunet-conversation-gtk_contacts.c      
2014-05-26 10:03:02 UTC (rev 33391)
+++ gnunet-gtk/src/conversation/gnunet-conversation-gtk_contacts.c      
2014-05-26 13:46:08 UTC (rev 33392)
@@ -365,6 +365,8 @@
   GtkTreeIter iter;
   gboolean do_display;
   const char *type;
+  gchar *lname;
+  gboolean update;
 
   if (NULL == zone_key)
   {
@@ -390,14 +392,45 @@
       break;
     }
   }
-  /* FIXME: check if exists, if so, update or delete */
 
+  /* check if exists, if so, update or remove */
+  update = FALSE;
+  if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (contacts_liststore),
+                                     &iter))
+  {
+    do
+    {
+      gtk_tree_model_get (GTK_TREE_MODEL(contacts_liststore),
+                          &iter,
+                          CONTACTS_LS_NAME, &lname,
+                          -1);
+      if (0 == strcmp (lname,
+                       rname))
+      {
+        if (! do_display)
+        {
+          /* remove */
+          gtk_list_store_remove (contacts_liststore,
+                                 &iter);
+          g_free (lname);
+          return;
+        }
+        /* update */
+        update = TRUE;
+        break;
+      }
+      g_free (lname);
+    }
+    while (gtk_tree_model_iter_next (GTK_TREE_MODEL(contacts_liststore),
+                                     &iter));
+  }
 
   /* insert new record */
   if (! do_display)
     return;
-  gtk_list_store_append (contacts_liststore,
-                         &iter);
+  if (! update)
+    gtk_list_store_append (contacts_liststore,
+                           &iter);
   gtk_list_store_set (contacts_liststore,
                       &iter,
                       CONTACTS_LS_NAME, rname,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]