gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r20655 - gnunet-gtk/src/gns


From: gnunet
Subject: [GNUnet-SVN] r20655 - gnunet-gtk/src/gns
Date: Wed, 21 Mar 2012 16:15:46 +0100

Author: wachs
Date: 2012-03-21 16:15:46 +0100 (Wed, 21 Mar 2012)
New Revision: 20655

Modified:
   gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
Log:
- validity check


Modified: gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c
===================================================================
--- gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-21 14:58:41 UTC (rev 
20654)
+++ gnunet-gtk/src/gns/gnunet-gns-gtk_zone.c    2012-03-21 15:15:46 UTC (rev 
20655)
@@ -54,9 +54,101 @@
 
 
 void
-check_record_validity ()
+check_name_validity_and_commit (struct GNUNET_GNS_Context *gns, gchar *path)
 {
-  GNUNET_break (0);
+  GtkTreeIter it;
+  GtkTreeIter parent;
+  int children;
+  int c;
+  int valid = GNUNET_YES;
+
+  char          *n_name;
+  int           n_type;
+  gboolean      n_public;
+  char          *n_exp_color;
+  guint64       n_exp_time;
+  char          *n_exp_str;
+  gboolean      n_is_relative;
+  char          *n_value;
+  char          *n_value_color;
+
+
+  gtk_tree_model_get_iter_from_string(gns->tm, &it, path);
+
+  if (TRUE == gtk_tree_model_iter_parent (gns->tm, &parent, &it))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Has parent\n");
+  }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "No parent\n");
+    parent = it;
+  }
+
+  children = gtk_tree_model_iter_n_children (gns->tm, &parent);
+  if (children < 1)
+  {
+    GNUNET_break (0);
+    return;
+  }
+
+  struct GNUNET_NAMESTORE_RecordData rd[children];
+
+  if (FALSE == gtk_tree_model_iter_children (gns->tm, &it, &parent))
+  {
+    GNUNET_break (0);
+    return;
+  }
+  for (c = 0; c < children; c++)
+  {
+    gtk_tree_model_get(gns->tm, &it,
+                       TREE_COL_NAME, &n_name,
+                       TREE_COL_RECORD_TYPE, &n_type,
+                       TREE_COL_IS_PUBLIC, &n_public,
+                       TREE_COL_EXP_TIME_COLOR, &n_exp_color,
+                       TREE_COL_EXP_TIME, &n_exp_time,
+                       TREE_COL_EXP_TIME_IS_REL, &n_is_relative,
+                       TREE_COL_EXP_TIME_AS_STR, &n_exp_str,
+                       TREE_COL_VAL_AS_STR, &n_value,
+                       TREE_COL_VAL_COLOR, &n_value_color,
+                       -1);
+
+    /* valid name */
+    if (NULL == n_name)
+        valid = GNUNET_NO;
+
+    /* valid record type */
+    if (0 == n_type)
+      valid = GNUNET_NO;
+
+    /* valid expiration */
+    if ((n_exp_color != NULL) || (NULL == n_exp_str) || (0 == n_exp_time))
+        valid = GNUNET_NO;
+
+    /* valid value */
+    if ((n_value_color != NULL) || (NULL == n_value))
+        valid = GNUNET_NO;
+
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Child [%u] is %s\n", c, (GNUNET_NO 
== valid) ? "INVALID" : "VALID");
+
+    g_free (n_name);
+    g_free (n_exp_color);
+    g_free (n_exp_str);
+    g_free (n_value);
+    g_free (n_value_color);
+
+    if ((GNUNET_NO == valid) || (FALSE == gtk_tree_model_iter_next (gns->tm, 
&it)))
+      break;
+  }
+
+  if (GNUNET_NO == valid)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Not valid\n");
+  }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Valid\n");
+  }
 }
 
 
@@ -147,8 +239,7 @@
       gtk_tree_store_set (gns->ts, &child, TREE_COL_VAL_COLOR, "red", -1);
   }
 
-  check_record_validity ();
-
+  check_name_validity_and_commit (gns, path);
 }
 
 
@@ -168,13 +259,13 @@
   struct GNUNET_GNS_Context *gns = user_data;
   GtkTreeIter it;
   GtkTreeModel *tm = GTK_TREE_MODEL(gns->ts);
-  int value;
+  gboolean value;
 
   gtk_tree_model_get_iter_from_string(tm, &it, path);
   gtk_tree_model_get(tm, &it, TREE_COL_IS_PUBLIC, &value, -1);
   gtk_tree_store_set(gns->ts, &it, TREE_COL_IS_PUBLIC, !value, -1);
 
-  GNUNET_break (0); // FIXME, not implemented
+  check_name_validity_and_commit (gns, path);
 }
 
 
@@ -243,8 +334,8 @@
                         TREE_COL_EXP_TIME, abstime.abs_value,
                         TREE_COL_EXP_TIME_COLOR, NULL,
                         -1);
+    check_name_validity_and_commit (gns, path);
   }
-  check_record_validity ();
 }
 
 
@@ -282,14 +373,13 @@
     {
       gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, NULL, -1);
       gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1);
+      check_name_validity_and_commit (gns, path);
     }
     else
     {
       gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_COLOR, "red", -1);
       gtk_tree_store_set (gns->ts, &it, TREE_COL_VAL_AS_STR, new_text, -1);
     }
-
-    check_record_validity ();
   }
 }
 
@@ -317,22 +407,25 @@
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "New text for `%s' is `%s'\n", path, 
new_text);
   if ((0 == strcmp (new_text, NEW_NAME_STR)) || (0 == strcmp (new_text, "")))
     return;
+
   gtk_tree_model_get_iter_from_string(tm, &it, path);
   gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
 
   if (not_dummy == GNUNET_NO)
   {
     /* update name */
-    gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
-    gtk_tree_store_set (gns->ts, &it, TREE_COL_RECORD_TYPE_AS_STR, 
_(NEW_RECORD_STR), -1);
-    gtk_tree_store_set (gns->ts, &it, TREE_COL_NOT_DUMMY_ROW, GNUNET_YES, -1);
+    gtk_tree_store_set (gns->ts, &it,
+                        TREE_COL_NAME, new_text,
+                        TREE_COL_RECORD_TYPE, 0,
+                        TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
+                        TREE_COL_NOT_DUMMY_ROW, GNUNET_YES,
+                        -1);
 
     /* add a new dummy line */
     gtk_tree_store_insert_with_values (gns->ts, &it,NULL, 0,
         TREE_COL_NAME, _(NEW_NAME_STR),
         TREE_COL_NAME_IS_VISIBLE, TRUE,
         TREE_COL_RECORD_TYPE, 1,
-        TREE_COL_NAME_IS_VISIBLE, 1,
         TREE_COL_NOT_DUMMY_ROW, GNUNET_NO,
         TREE_COL_IS_RECORD_ROW, GNUNET_NO,
         -1);
@@ -342,6 +435,7 @@
     /* update name */
     gtk_tree_store_set (gns->ts, &it, TREE_COL_NAME, new_text, -1);
   }
+  check_name_validity_and_commit (gns, path);
 }
 
 /**
@@ -600,9 +694,10 @@
   GtkTreeSelection * ts = gtk_tree_view_get_selection(tv);
 
   gtk_tree_selection_get_selected (ts, &tm, &it);
+
   gtk_tree_model_get(tm, &it, TREE_COL_NOT_DUMMY_ROW, &not_dummy, -1);
   if (GNUNET_NO == not_dummy)
-    return;
+    return; /* do not delete the dummy line */
 
   /* Has parent? */
   has_parent = gtk_tree_model_iter_parent (tm, &parent, &it);
@@ -712,6 +807,7 @@
   gtk_tree_store_set(zc_ctx->gns->ts, &iter_name,
                      TREE_COL_NAME, name,
                      TREE_COL_NAME_IS_VISIBLE, TRUE,
+                     TREE_COL_RECORD_TYPE, 0,
                      TREE_COL_RECORD_TYPE_AS_STR, _(NEW_RECORD_STR),
                      TREE_COL_IS_RECORD_ROW, GNUNET_NO,
                      TREE_COL_NOT_DUMMY_ROW, GNUNET_YES,




reply via email to

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