Matthias Vogelgesang пре 7 година
родитељ
комит
92568ddf60
2 измењених фајлова са 31 додато и 5 уклоњено
  1. 16 2
      src/iridium-note.c
  2. 15 3
      src/iridium-window.c

+ 16 - 2
src/iridium-note.c

@@ -32,6 +32,7 @@ typedef struct _IridiumNotePrivate
 enum {
   PROP_0,
   PROP_TITLE,
+  PROP_CONTENT,
   NUM_PROPERTIES,
 };
 
@@ -135,6 +136,10 @@ iridium_note_set_property (GObject *object,
       g_free (priv->title);
       priv->title = g_value_dup_string (value);
       break;
+    case PROP_CONTENT:
+      g_free (priv->content);
+      priv->content = g_value_dup_string (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
   }
@@ -154,6 +159,9 @@ iridium_note_get_property (GObject *object,
     case PROP_TITLE:
       g_value_set_string (value, priv->title);
       break;
+    case PROP_CONTENT:
+      g_value_set_string (value, priv->content);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
   }
@@ -193,6 +201,12 @@ iridium_note_class_init (IridiumNoteClass *klass)
       "Title of the note",
       "", G_PARAM_READWRITE);
 
+  properties[PROP_CONTENT] =
+    g_param_spec_string ("content",
+      "Content of the note",
+      "Content of the note",
+      "", G_PARAM_READWRITE);
+
   g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
 
   signals[TAGS_CHANGED] = g_signal_new ("tags-changed",
@@ -210,7 +224,7 @@ iridium_note_init (IridiumNote *self)
   IridiumNotePrivate *priv;
 
   priv = IRIDIUM_NOTE_GET_PRIVATE (self);
-  priv->title = NULL;
-  priv->content = NULL;
+  priv->title = g_strdup ("");
+  priv->content = g_strdup ("");
   priv->tags = NULL;
 }

+ 15 - 3
src/iridium-window.c

@@ -38,6 +38,7 @@ struct _IridiumWindow
   GtkSearchEntry    *search_entry;
 
   GBinding          *title_binding;
+  GBinding          *content_binding;
 };
 
 G_DEFINE_TYPE (IridiumWindow, iridium_window, GTK_TYPE_APPLICATION_WINDOW)
@@ -58,17 +59,23 @@ static void
 iridium_window_note_selected (GtkListBox *box, IridiumNoteRow *row, IridiumWindow *self)
 {
   IridiumNote *note;
+  GtkTextBuffer *buffer;
   GBindingFlags flags;
 
   if (self->title_binding != NULL)
     g_clear_object (&self->title_binding);
 
+  if (self->content_binding != NULL)
+    g_clear_object (&self->content_binding);
+
   if (row == NULL)
     return;
 
   note = iridium_note_row_get_note (row);
   flags = G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE;
+  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->source_view));
   self->title_binding = g_object_bind_property (note, "title", self->title_entry, "text", flags);
+  self->content_binding = g_object_bind_property (note, "content", buffer, "text", flags);
 }
 
 static void
@@ -109,6 +116,7 @@ iridium_window_dispose (GObject *object)
 
   self = IRIDIUM_WINDOW (object);
   g_clear_object (&self->title_binding);
+  g_clear_object (&self->content_binding);
   G_OBJECT_CLASS (iridium_window_parent_class)->dispose (object);
 }
 
@@ -147,6 +155,7 @@ iridium_window_init (IridiumWindow *self)
   gtk_widget_init_template (GTK_WIDGET (self));
 
   self->title_binding = NULL;
+  self->content_binding = NULL;
 
   action = g_simple_action_new ("search", NULL);
   g_action_map_add_action (G_ACTION_MAP (self), G_ACTION (action));
@@ -180,9 +189,12 @@ iridium_window_init (IridiumWindow *self)
   gtk_list_box_insert (self->tag_list, iridium_tag_row_new (tags[0]), -1);
   gtk_list_box_insert (self->tag_list, iridium_tag_row_new (tags[1]), -1);
 
-  g_signal_connect (self->tag_list, "row-selected", G_CALLBACK (iridium_window_tag_selected), self);
-  g_signal_connect (self->note_list, "row-selected", G_CALLBACK (iridium_window_note_selected), self);
-  g_signal_connect (self->search_entry, "search-changed", G_CALLBACK (iridium_window_search_changed), self);
+  g_signal_connect (self->tag_list, "row-selected",
+      G_CALLBACK (iridium_window_tag_selected), self);
+  g_signal_connect (self->note_list, "row-selected",
+      G_CALLBACK (iridium_window_note_selected), self);
+  g_signal_connect (self->search_entry, "search-changed",
+      G_CALLBACK (iridium_window_search_changed), self);
 
   gtk_list_box_set_filter_func (self->note_list, (GtkListBoxFilterFunc) iridium_window_note_visible, self, NULL);