static void photos_preview_nav_buttons_delete (PhotosPreviewNavButtons *self) { GList *items = NULL; PhotosBaseItem *item; PhotosWindowMode mode; mode = photos_mode_controller_get_window_mode (self->mode_cntrlr); if (mode != PHOTOS_WINDOW_MODE_PREVIEW) return; item = PHOTOS_BASE_ITEM (photos_base_manager_get_active_object (self->item_mngr)); if (item == NULL) return; if (self->enable_next) g_action_activate (self->load_next, NULL); else if (self->enable_prev) g_action_activate (self->load_previous, NULL); else photos_mode_controller_go_back (self->mode_cntrlr); items = g_list_prepend (items, g_object_ref (item)); photos_base_manager_remove_object (self->item_mngr, G_OBJECT (item)); photos_delete_notification_new (items); g_list_free_full (items, g_object_unref); }
static void photos_selection_toolbar_delete (PhotosSelectionToolbar *self) { GList *items = NULL; GList *selection; GList *l; if (!photos_selection_controller_get_selection_mode (self->sel_cntrlr)) return; selection = photos_selection_controller_get_selection (self->sel_cntrlr); for (l = selection; l != NULL; l = l->next) { PhotosBaseItem *item; const gchar *urn = (gchar *) l->data; item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (self->item_mngr, urn)); items = g_list_prepend (items, g_object_ref (item)); } /* Removing an item from the item manager changes the selection, so * we can't use the selection while removing items. */ for (l = items; l != NULL; l = l->next) { PhotosBaseItem *item = PHOTOS_BASE_ITEM (l->data); photos_base_manager_remove_object (self->item_mngr, G_OBJECT (item)); } photos_delete_notification_new (items); photos_selection_controller_set_selection_mode (self->sel_cntrlr, FALSE); g_list_free_full (items, g_object_unref); }
static void photos_selection_toolbar_trash_clicked (GtkButton *button, gpointer user_data) { PhotosSelectionToolbar *self = PHOTOS_SELECTION_TOOLBAR (user_data); PhotosSelectionToolbarPrivate *priv = self->priv; GList *items = NULL; GList *selection; GList *l; selection = photos_selection_controller_get_selection (priv->sel_cntrlr); for (l = selection; l != NULL; l = l->next) { PhotosBaseItem *item; const gchar *urn = (gchar *) l->data; item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (priv->item_mngr, urn)); items = g_list_prepend (items, g_object_ref (item)); } /* Removing an item from the item manager changes the selection, so * we can't use the selection while removing items. */ for (l = items; l != NULL; l = l->next) { PhotosBaseItem *item = PHOTOS_BASE_ITEM (l->data); photos_base_manager_remove_object (priv->item_mngr, G_OBJECT (item)); } photos_delete_notification_new (items); photos_selection_controller_set_selection_mode (priv->sel_cntrlr, FALSE); g_list_free_full (items, g_object_unref); }