[gnome-notes] manager: Use GListModel to save notebooks
- From: Isaque Galdino de Araujo <igaldino src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-notes] manager: Use GListModel to save notebooks
- Date: Mon, 21 Jun 2021 12:41:53 +0000 (UTC)
commit 7759d3e72b31461843959261e92d2c3dac71b522
Author: Mohammed Sadiq <sadiq sadiqpk org>
Date: Thu Jun 17 13:07:04 2021 +0530
manager: Use GListModel to save notebooks
And bump glib requirement for g_list_store_find()
meson.build | 2 +-
src/libbiji/biji-manager.c | 30 ++++++++++++++++++++++++++++++
src/libbiji/biji-manager.h | 1 +
3 files changed, 32 insertions(+), 1 deletion(-)
---
diff --git a/meson.build b/meson.build
index 025ae5ba..409cffe5 100644
--- a/meson.build
+++ b/meson.build
@@ -116,7 +116,7 @@ config_h.set('TRACKER_PRIVATE_STORE', private_store)
bijiben_deps = [
tracker_sparql_dep,
dependency('gio-unix-2.0'),
- dependency('glib-2.0', version: '>= 2.53.4'),
+ dependency('glib-2.0', version: '>= 2.64'),
dependency('goa-1.0'),
dependency('gtk+-3.0', version: '>= 3.19.3'),
dependency('json-glib-1.0'),
diff --git a/src/libbiji/biji-manager.c b/src/libbiji/biji-manager.c
index c8793942..68e7f7e2 100644
--- a/src/libbiji/biji-manager.c
+++ b/src/libbiji/biji-manager.c
@@ -41,6 +41,7 @@ struct _BijiManager
* rather than one big central db here
*/
+ GListStore *notebooks;
GHashTable *items;
GHashTable *archives;
GHashTable *providers;
@@ -228,6 +229,8 @@ load_eds_provider (BijiManager *self,
static void
biji_manager_init (BijiManager *self)
{
+ self->notebooks = g_list_store_new (BIJI_TYPE_NOTEBOOK);
+
/* Item path is key for table */
self->items = g_hash_table_new_full (g_str_hash,
g_str_equal,
@@ -294,6 +297,7 @@ biji_manager_finalize (GObject *object)
{
BijiManager *self = BIJI_MANAGER (object);
+ g_clear_object (&self->notebooks);
g_clear_object (&self->location);
g_hash_table_destroy (self->items);
g_hash_table_destroy (self->archives);
@@ -523,6 +527,21 @@ manager_on_item_icon_changed_cb (BijiNoteObj *note, BijiManager *manager)
BIJI_ITEM (note));
}
+static int
+compare_notebook (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data)
+{
+ g_autofree char *up_a = NULL;
+ g_autofree char *up_b = NULL;
+ BijiItem *item_a = (BijiItem *) a;
+ BijiItem *item_b = (BijiItem *) b;
+
+ up_a = g_utf8_casefold (biji_item_get_title (item_a), -1);
+ up_b = g_utf8_casefold (biji_item_get_title (item_b), -1);
+
+ return g_strcmp0 (up_a, up_b);
+}
gboolean
biji_manager_add_item (BijiManager *manager,
@@ -583,6 +602,9 @@ biji_manager_add_item (BijiManager *manager,
else if (BIJI_IS_NOTEBOOK (item))
{
+ if (!g_list_store_find (manager->notebooks, item, NULL))
+ g_list_store_insert_sorted (manager->notebooks, item,
+ compare_notebook, NULL);
g_signal_connect (item , "icon-changed", G_CALLBACK (manager_on_item_icon_changed_cb), manager);
}
}
@@ -684,6 +706,14 @@ biji_manager_get_items (BijiManager *self,
return list;
}
+GListModel *
+biji_manager_get_notebooks (BijiManager *self)
+{
+ g_return_val_if_fail (BIJI_IS_MANAGER (self), NULL);
+
+ return G_LIST_MODEL (self->notebooks);
+}
+
BijiItem *
biji_manager_get_item_at_path (BijiManager *self, const gchar *path)
{
diff --git a/src/libbiji/biji-manager.h b/src/libbiji/biji-manager.h
index bff1891c..7ef784bb 100644
--- a/src/libbiji/biji-manager.h
+++ b/src/libbiji/biji-manager.h
@@ -91,6 +91,7 @@ BijiItem *biji_manager_get_item_at_path (BijiManager *manager,
GList *biji_manager_get_items (BijiManager *manager,
BijiItemsGroup group);
+GListModel *biji_manager_get_notebooks (BijiManager *self);
BijiNoteObj *biji_manager_note_new (BijiManager *manager,
const gchar *str,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]