[gnome-notes] bjb-list-view: Update note title/content when needed
- From: Isaque Galdino de Araujo <igaldino src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-notes] bjb-list-view: Update note title/content when needed
- Date: Wed, 5 Jan 2022 13:02:41 +0000 (UTC)
commit 9c5b0a5c94dc9c03d89608ebe0f89d4555130d7d
Author: Jonathan Kang <jonathankang gnome org>
Date: Thu Aug 5 15:09:43 2021 +0800
bjb-list-view: Update note title/content when needed
Update the note title/content in the list row if a note's title or
content is amended.
https://gitlab.gnome.org/GNOME/gnome-notes/-/issues/154
src/bjb-list-view-row.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
---
diff --git a/src/bjb-list-view-row.c b/src/bjb-list-view-row.c
index af241ef8..77af156b 100644
--- a/src/bjb-list-view-row.c
+++ b/src/bjb-list-view-row.c
@@ -19,6 +19,7 @@
*/
#include <biji-string.h>
+#include "bjb-application.h"
#include "bjb-list-view.h"
#include "bjb-list-view-row.h"
#include "bjb-utils.h"
@@ -36,10 +37,50 @@ struct _BjbListViewRow
char *uuid;
char *model_iter;
+
+ gulong display_note_amended;
};
G_DEFINE_TYPE (BjbListViewRow, bjb_list_view_row, GTK_TYPE_LIST_BOX_ROW);
+static void
+on_manager_changed (BijiManager *manager,
+ BijiItemsGroup group,
+ BijiManagerChangeFlag flag,
+ gpointer *biji_item,
+ BjbListViewRow *self)
+{
+ BijiItem *item = BIJI_ITEM (biji_item);
+ BijiNoteObj *note_obj = BIJI_NOTE_OBJ (item);
+
+ /* Note title/content amended. */
+ if (flag == BIJI_MANAGER_NOTE_AMENDED)
+ {
+ if (g_strcmp0 (self->uuid, biji_item_get_uuid (item)) == 0)
+ {
+ if (biji_note_obj_get_title (note_obj) != NULL &&
+ g_strcmp0 (gtk_label_get_text (self->title),
+ biji_note_obj_get_title (note_obj)) != 0)
+ {
+ gtk_label_set_text (self->title, biji_note_obj_get_title (note_obj));
+ }
+ if (biji_note_obj_get_raw_text (note_obj) != NULL &&
+ g_strcmp0 (gtk_label_get_text (self->content),
+ biji_note_obj_get_raw_text (note_obj)) != 0)
+ {
+ g_auto(GStrv) lines = NULL;
+ g_autofree char *one_line = NULL;
+ g_autofree char *preview = NULL;
+
+ lines = g_strsplit (biji_note_obj_get_raw_text (note_obj), "\n", -1);
+ one_line = g_strjoinv (" ", lines);
+ preview = biji_str_clean (one_line);
+ gtk_label_set_text (self->content, preview);
+ }
+ }
+ }
+}
+
static void
on_toggled_cb (BjbListViewRow *self,
gpointer data)
@@ -76,6 +117,7 @@ bjb_list_view_row_setup (BjbListViewRow *self,
GdkRGBA rgba;
gboolean selected;
BjbController *controller;
+ BijiManager *manager;
GtkListBox *list_box;
g_auto (GStrv) lines = NULL;
g_autofree char *one_line = NULL;
@@ -138,6 +180,14 @@ bjb_list_view_row_setup (BjbListViewRow *self,
else
gtk_list_box_unselect_row (list_box, GTK_LIST_BOX_ROW (self));
+ if (self->display_note_amended != 0)
+ {
+ g_signal_handler_disconnect (controller, self->display_note_amended);
+ }
+
+ manager = bijiben_get_manager (BJB_APPLICATION (g_application_get_default ()));
+ self->display_note_amended = g_signal_connect (manager, "changed",
+ G_CALLBACK (on_manager_changed), self);
}
const char *
@@ -161,6 +211,14 @@ bjb_list_view_row_finalize (GObject *object)
g_free (self->uuid);
g_free (self->model_iter);
+ if (self->display_note_amended != 0)
+ {
+ BijiManager *manager;
+
+ manager = bijiben_get_manager (BJB_APPLICATION (g_application_get_default ()));
+ g_signal_handler_disconnect (manager, self->display_note_amended);
+ }
+
G_OBJECT_CLASS (bjb_list_view_row_parent_class)->finalize (object);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]