[bijiben] Trash: load trash bin at startup. Use biji_manager_get_items



commit 3cc5e10df159614282a1105a98d4754bdac9d501
Author: Pierre-Yves Luyten <py luyten fr>
Date:   Sun Mar 2 22:15:17 2014 +0100

    Trash: load trash bin at startup. Use biji_manager_get_items
    
    We should not parse Trash folder everytime trash bin is visited. Load at startup and follow-up note 
beeing trashed. Some work needed on this.

 src/bjb-controller.c                       |    6 ++++--
 src/libbiji/biji-manager.c                 |   15 +++++++++++++--
 src/libbiji/provider/biji-local-provider.c |    6 ++++++
 3 files changed, 23 insertions(+), 4 deletions(-)
---
diff --git a/src/bjb-controller.c b/src/bjb-controller.c
index 625efb9..0dabb63 100644
--- a/src/bjb-controller.c
+++ b/src/bjb-controller.c
@@ -857,8 +857,10 @@ bjb_controller_set_group (BjbController   *self,
   }
 
 
-  /* Archives : ping the manager */
-  biji_manager_load_archives (self->priv->manager);
+  else /* Archives */
+  {
+    bjb_controller_apply_needle (self);
+  }
 }
 
 
diff --git a/src/libbiji/biji-manager.c b/src/libbiji/biji-manager.c
index 3262657..8b18c4e 100644
--- a/src/libbiji/biji-manager.c
+++ b/src/libbiji/biji-manager.c
@@ -96,7 +96,7 @@ biji_manager_init (BijiManager *self)
   priv->items = g_hash_table_new_full (g_str_hash,
                                        g_str_equal,
                                        NULL,
-                                       g_object_unref);
+                                       NULL);
 
   priv->archives = g_hash_table_new_full (g_str_hash,
                                           g_str_equal,
@@ -298,6 +298,12 @@ on_item_deleted_cb (BijiItem *item, BijiManager *manager)
 }
 
 
+static void
+on_item_restored_cb (BijiItem *item, BijiManager *manager)
+{
+}
+
+
 void
 manager_on_note_changed_cb (BijiNoteObj *note, BijiManager *manager)
 {
@@ -360,7 +366,10 @@ biji_manager_add_item (BijiManager *manager,
                            (gpointer) biji_item_get_uuid (item), item);
 
     /* Connect */
-    g_signal_connect (item, "deleted", G_CALLBACK (on_item_deleted_cb), manager);
+    g_signal_connect (item, "deleted",
+                      G_CALLBACK (on_item_deleted_cb), manager);
+    g_signal_connect (item, "restored",
+                      G_CALLBACK (on_item_restored_cb), manager);
 
     if (BIJI_IS_NOTE_OBJ (item))
     {
@@ -591,6 +600,8 @@ biji_manager_remove_item (BijiManager *manager, BijiItem *item)
      * fully available for signal receiver. */
     biji_manager_notify_changed (manager, BIJI_LIVING_ITEMS, BIJI_MANAGER_ITEM_TRASHED, to_delete);
     biji_item_trash (item);
+    g_hash_table_insert (manager->priv->archives,
+                         (gpointer) biji_item_get_uuid (item), item);
     g_hash_table_remove (manager->priv->items, path);
 
     retval = TRUE;
diff --git a/src/libbiji/provider/biji-local-provider.c b/src/libbiji/provider/biji-local-provider.c
index b725396..6d8ad1c 100644
--- a/src/libbiji/provider/biji-local-provider.c
+++ b/src/libbiji/provider/biji-local-provider.c
@@ -68,6 +68,8 @@ static GParamSpec *properties[BIJI_LOCAL_PROP] = { NULL, };
 #define ATTRIBUTES_FOR_LOCATION "standard::content-type,standard::name"
 
 
+static void local_prov_load_archives (BijiProvider *prov);
+
 static void
 load_location_error (GFile *location,
                      GError *error)
@@ -152,6 +154,10 @@ local_provider_finish (GHashTable *notebooks,
 
   BIJI_PROVIDER_GET_CLASS (self)->notify_loaded (BIJI_PROVIDER (self), list, helper->group);
   g_list_free (list);
+
+  /* Now if we just loaded items, load the trash */
+  if (helper->group == BIJI_LIVING_ITEMS)
+    local_prov_load_archives (BIJI_PROVIDER (self));
 }
 
 


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