static void photos_item_manager_add_object (PhotosBaseManager *mngr, GObject *object) { PhotosItemManager *self = PHOTOS_ITEM_MANAGER (mngr); PhotosBaseItem *item; const gchar *id; gpointer *old_collection; g_return_if_fail (PHOTOS_IS_BASE_ITEM (object)); item = PHOTOS_BASE_ITEM (object); if (!photos_base_item_is_collection (item)) goto end; id = photos_filterable_get_id (PHOTOS_FILTERABLE (item)); if (id == NULL) goto end; old_collection = g_hash_table_lookup (self->collections, id); if (old_collection != NULL) goto end; g_hash_table_insert (self->collections, g_strdup (id), g_object_ref (item)); end: PHOTOS_BASE_MANAGER_CLASS (photos_item_manager_parent_class)->add_object (mngr, object); }
static void photos_preview_nav_buttons_previous (PhotosPreviewNavButtons *self) { PhotosBaseItem *item; PhotosBaseItem *previous_item; if (!self->enable_prev) return; item = PHOTOS_BASE_ITEM (photos_base_manager_get_active_object (self->item_mngr)); g_return_if_fail (PHOTOS_IS_BASE_ITEM (item)); previous_item = photos_preview_nav_buttons_get_previous_item (self); g_return_if_fail (PHOTOS_IS_BASE_ITEM (previous_item)); g_signal_emit (self, signals[LOAD_PREVIOUS], 0); photos_base_manager_set_active_object (self->item_mngr, G_OBJECT (previous_item)); photos_preview_nav_buttons_update_visibility (self); }
void photos_share_point_share_async (PhotosSharePoint *self, PhotosBaseItem *item, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (PHOTOS_IS_SHARE_POINT (self)); g_return_if_fail (PHOTOS_IS_BASE_ITEM (item)); PHOTOS_SHARE_POINT_GET_CLASS (self)->share_async (self, item, cancellable, callback, user_data); }
static gint photos_import_dialog_sort_func (gconstpointer a, gconstpointer b, gpointer user_data) { PhotosImportDialog *self; PhotosBaseItem *collection_a; PhotosBaseItem *collection_b; gint ret_val; gint64 mtime_a; gint64 mtime_b; g_return_val_if_fail (PHOTOS_IS_BASE_ITEM ((gpointer) a), 0); g_return_val_if_fail (PHOTOS_IS_BASE_ITEM ((gpointer) b), 0); g_return_val_if_fail (PHOTOS_IS_IMPORT_DIALOG (user_data), 0); self = PHOTOS_IMPORT_DIALOG (user_data); collection_a = PHOTOS_BASE_ITEM ((gpointer) a); if (collection_a == self->default_collection) mtime_a = G_MAXINT64; else mtime_a = photos_base_item_get_mtime (collection_a); collection_b = PHOTOS_BASE_ITEM ((gpointer) b); if (collection_b == self->default_collection) mtime_b = G_MAXINT64; else mtime_b = photos_base_item_get_mtime (collection_b); if (mtime_a > mtime_b) ret_val = -1; else if (mtime_a == mtime_b) ret_val = 0; else ret_val = 1; return ret_val; }
static PhotosQuery * photos_offset_collection_view_controller_get_query (PhotosOffsetController *offset_cntrlr) { PhotosOffsetCollectionViewController *self = PHOTOS_OFFSET_COLLECTION_VIEW_CONTROLLER (offset_cntrlr); GApplication *app; PhotosBaseItem *collection; PhotosSearchContextState *state; g_return_val_if_fail (self->item_mngr != NULL, NULL); collection = photos_item_manager_get_active_collection (PHOTOS_ITEM_MANAGER (self->item_mngr)); g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (collection), NULL); app = g_application_get_default (); state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app)); return photos_query_builder_count_query (state, PHOTOS_QUERY_FLAGS_NONE); }
static void photos_import_dialog_add_existing_notify_state (PhotosImportDialog *self) { g_autoptr (GVariant) state = NULL; PhotosBaseItem *collection; const gchar *id; const gchar *name; g_return_if_fail (PHOTOS_IS_IMPORT_DIALOG (self)); state = g_action_get_state (G_ACTION (self->add_existing_action)); g_return_if_fail (state != NULL); id = g_variant_get_string (state, NULL); collection = g_hash_table_lookup (self->collections, id); g_return_if_fail (PHOTOS_IS_BASE_ITEM (collection)); name = photos_base_item_get_name (collection); gtk_label_set_label (GTK_LABEL (self->add_existing_collection_name_label), name); }
static gboolean photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *object) { PhotosItemManager *self = PHOTOS_ITEM_MANAGER (manager); PhotosItemManagerPrivate *priv = self->priv; GtkRecentManager *recent; gboolean ret_val; const gchar *uri; g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (object) || object == NULL, FALSE); ret_val = PHOTOS_BASE_MANAGER_CLASS (photos_item_manager_parent_class)->set_active_object (manager, object); if (!ret_val) goto out; if (object == NULL) goto out; if (photos_base_item_is_collection (PHOTOS_BASE_ITEM (object))) { GObject *collection; collection = photos_base_manager_get_active_object (priv->col_mngr); g_queue_push_head (priv->collection_path, (collection != NULL) ? g_object_ref (collection) : NULL); photos_base_manager_set_active_object (priv->col_mngr, object); goto out; } recent = gtk_recent_manager_get_default (); uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (object)); gtk_recent_manager_add_item (recent, uri); out: return ret_val; }
static gboolean photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *object) { PhotosItemManager *self = PHOTOS_ITEM_MANAGER (manager); GObject *active_item; PhotosWindowMode old_mode; gboolean active_collection_changed = FALSE; gboolean ret_val = FALSE; gboolean start_loading = FALSE; gboolean window_mode_changed = FALSE; g_return_val_if_fail (object != NULL, FALSE); g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (object), FALSE); active_item = photos_base_manager_get_active_object (manager); if (object == active_item) goto out; photos_item_manager_clear_active_item_load (self); if (photos_base_item_is_collection (PHOTOS_BASE_ITEM (object))) { g_queue_push_head (self->collection_path, (self->active_collection != NULL) ? g_object_ref (self->active_collection) : NULL); g_clear_object (&self->active_collection); self->active_collection = g_object_ref (object); self->load_state = PHOTOS_LOAD_STATE_NONE; active_collection_changed = TRUE; } else { window_mode_changed = photos_item_manager_set_window_mode_internal (self, PHOTOS_WINDOW_MODE_PREVIEW, &old_mode); photos_item_manager_update_fullscreen (self); self->load_state = PHOTOS_LOAD_STATE_STARTED; start_loading = TRUE; } ret_val = PHOTOS_BASE_MANAGER_CLASS (photos_item_manager_parent_class)->set_active_object (manager, object); /* We have already eliminated the possibility of failure. */ g_assert (ret_val == TRUE); active_item = photos_base_manager_get_active_object (manager); g_assert (active_item == object); if (active_collection_changed) { g_signal_emit (self, signals[ACTIVE_COLLECTION_CHANGED], 0, self->active_collection); g_assert (active_item == (GObject *) self->active_collection); } if (start_loading) { GtkRecentManager *recent; const gchar *uri; recent = gtk_recent_manager_get_default (); uri = photos_base_item_get_uri (PHOTOS_BASE_ITEM (object)); gtk_recent_manager_add_item (recent, uri); self->loader_cancellable = g_cancellable_new (); photos_base_item_load_async (PHOTOS_BASE_ITEM (object), self->loader_cancellable, photos_item_manager_item_load, g_object_ref (self)); g_signal_emit (self, signals[LOAD_STARTED], 0, PHOTOS_BASE_ITEM (object)); if (window_mode_changed) g_signal_emit (self, signals[WINDOW_MODE_CHANGED], 0, PHOTOS_WINDOW_MODE_PREVIEW, old_mode); g_assert (active_item != (GObject *) self->active_collection); } out: return ret_val; }