GList * bjb_main_view_get_selected_items (BjbMainView *view) { GList *l, *paths, *result = NULL; gchar *url; BijiItem *item; /* GtkTreePath */ paths = get_selected_paths (view); for (l=paths; l!= NULL; l=l->next) { url = get_note_url_from_tree_path (l->data, view); item = biji_manager_get_item_at_path ( bjb_window_base_get_manager (view->priv->window), url); if (BIJI_IS_ITEM (item)) result = g_list_prepend (result, item); g_free (url); } g_list_free_full (paths, (GDestroyNotify) gtk_tree_path_free); return result; }
gboolean biji_note_book_add_item (BijiNoteBook *book, BijiItem *item, gboolean notify) { g_return_val_if_fail (BIJI_IS_NOTE_BOOK (book), FALSE); g_return_val_if_fail (BIJI_IS_ITEM (item), FALSE); const gchar *uid; gboolean retval = TRUE; uid = biji_item_get_uuid (item); if (g_hash_table_lookup (book->priv->items, uid)) retval = FALSE; else if (BIJI_IS_NOTE_OBJ (item)) _biji_note_book_add_one_item (book, item); else if (BIJI_IS_COLLECTION (item)) { g_hash_table_insert (book->priv->items, (gpointer) biji_item_get_uuid (item), item); g_signal_connect (item, "deleted", G_CALLBACK (on_item_deleted_cb), book); } if (retval && notify) biji_note_book_notify_changed (book, BIJI_BOOK_ITEM_ADDED, item); return retval; }
static void on_provider_loaded_cb (BijiProvider *provider, GList *items, BijiNoteBook *book) { BijiItem *item = NULL; BijiNoteBookChangeFlag flag = BIJI_BOOK_CHANGE_FLAG; GList *l; gint i = 0; for (l=items; l!=NULL; l=l->next) { if (BIJI_IS_ITEM (l->data)) { _biji_note_book_add_one_item (book, l->data); i++; } } if (i==1) flag = BIJI_BOOK_ITEM_ADDED; else if (i>1) flag = BIJI_BOOK_MASS_CHANGE; if (flag > BIJI_BOOK_CHANGE_FLAG) biji_note_book_notify_changed (book, flag, item); }
gboolean biji_note_book_remove_item (BijiNoteBook *book, BijiItem *item) { g_return_val_if_fail (BIJI_IS_NOTE_BOOK (book), FALSE); g_return_val_if_fail (BIJI_IS_ITEM (item), FALSE); BijiItem *to_delete = NULL; const gchar *path; gboolean retval = FALSE; path = biji_item_get_uuid (item); to_delete = g_hash_table_lookup (book->priv->items, path); if (to_delete) { /* Signal before doing anything here. So the note is still * fully available for signal receiver. */ biji_note_book_notify_changed (book, BIJI_BOOK_ITEM_TRASHED, to_delete); biji_item_trash (item); g_hash_table_remove (book->priv->items, path); retval = TRUE; } return retval; }
static void _biji_note_book_add_one_item (BijiNoteBook *book, BijiItem *item) { g_return_if_fail (BIJI_IS_ITEM (item)); /* Add it to the list */ g_hash_table_insert (book->priv->items, (gpointer) biji_item_get_uuid (item), item); /* Notify */ if (BIJI_IS_NOTE_OBJ (item)) { g_signal_connect (item, "changed", G_CALLBACK (book_on_note_changed_cb), book); g_signal_connect (item, "renamed", G_CALLBACK (book_on_note_changed_cb), book); g_signal_connect (item, "color-changed", G_CALLBACK (book_on_item_icon_changed_cb), book); } else if (BIJI_IS_COLLECTION (item)) { g_signal_connect (item, "deleted", G_CALLBACK (on_item_deleted_cb), book); g_signal_connect (item , "icon-changed", G_CALLBACK (book_on_item_icon_changed_cb), book); } }