static gboolean photos_main_window_handle_key_preview (PhotosMainWindow *self, GdkEventKey *event) { PhotosMainWindowPrivate *priv = self->priv; PhotosPreviewView *preview; gboolean fullscreen; gboolean handled = FALSE; preview = photos_embed_get_preview (PHOTOS_EMBED (priv->embed)); fullscreen = photos_mode_controller_get_fullscreen (priv->mode_cntrlr); switch (event->keyval) { case GDK_KEY_Escape: if (fullscreen) { photos_base_manager_set_active_object (priv->item_mngr, NULL); photos_mode_controller_go_back (priv->mode_cntrlr); } break; case GDK_KEY_Left: photos_preview_view_load_previous (preview); handled = TRUE; break; case GDK_KEY_Right: photos_preview_view_load_next (preview); handled = TRUE; break; } return handled; }
static gboolean photos_main_window_go_back (PhotosMainWindow *self) { PhotosMainWindowPrivate *priv = self->priv; PhotosBaseItem *active_collection; PhotosWindowMode mode; gboolean handled = TRUE; mode = photos_mode_controller_get_window_mode (priv->mode_cntrlr); active_collection = photos_item_manager_get_active_collection (PHOTOS_ITEM_MANAGER (priv->item_mngr)); switch (mode) { case PHOTOS_WINDOW_MODE_PREVIEW: photos_base_manager_set_active_object (priv->item_mngr, NULL); photos_mode_controller_go_back (priv->mode_cntrlr); break; case PHOTOS_WINDOW_MODE_COLLECTIONS: case PHOTOS_WINDOW_MODE_FAVORITES: case PHOTOS_WINDOW_MODE_SEARCH: if (active_collection != NULL) photos_item_manager_activate_previous_collection (PHOTOS_ITEM_MANAGER (self->priv->item_mngr)); break; case PHOTOS_WINDOW_MODE_NONE: case PHOTOS_WINDOW_MODE_OVERVIEW: default: handled = FALSE; break; } return handled; }
static void photos_application_activate_item (PhotosApplication *self, GObject *item) { PhotosApplicationPrivate *priv = self->priv; photos_application_create_window (self); photos_base_manager_set_active_object (priv->item_mngr, item); g_application_activate (G_APPLICATION (self)); /* TODO: Forward the search terms when we exit the preview */ }
static void photos_view_container_item_activated (PhotosViewContainer *self, const gchar * id, const GtkTreePath *path) { PhotosViewContainerPrivate *priv = self->priv; GObject *object; priv->current_path = gtk_tree_path_copy (path); object = photos_base_manager_get_object_by_id (priv->item_mngr, id); if (!photos_base_item_is_collection (PHOTOS_BASE_ITEM (object)) && photos_remote_display_manager_is_active (priv->remote_mngr)) photos_remote_display_manager_render (priv->remote_mngr, PHOTOS_BASE_ITEM (object)); else photos_base_manager_set_active_object (priv->item_mngr, object); }
static void photos_preview_nav_buttons_set_active_path (PhotosPreviewNavButtons *self) { PhotosPreviewNavButtonsPrivate *priv = self->priv; GtkTreeIter child_iter; GtkTreeIter iter; GtkTreeModel *child_model; PhotosBaseItem *item; gchar *id; gtk_tree_model_get_iter (priv->model, &iter, priv->current_path); gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (priv->model), &child_iter, &iter); child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (priv->model)); gtk_tree_model_get (child_model, &child_iter, PHOTOS_VIEW_MODEL_URN, &id, -1); item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (priv->item_mngr, id)); photos_base_manager_set_active_object (priv->item_mngr, G_OBJECT (item)); g_free (id); }
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); }
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 void photos_preview_nav_buttons_set_active_path (PhotosPreviewNavButtons *self, GtkTreePath *current_path) { GtkTreeIter child_iter; GtkTreeIter iter; GtkTreeModel *child_model; PhotosBaseItem *item; gchar *id; if (!gtk_tree_model_get_iter (self->model, &iter, current_path)) return; g_clear_pointer (&self->current_row, (GDestroyNotify) gtk_tree_row_reference_free); self->current_row = gtk_tree_row_reference_new (self->model, current_path); gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (self->model), &child_iter, &iter); child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (self->model)); gtk_tree_model_get (child_model, &child_iter, PHOTOS_VIEW_MODEL_URN, &id, -1); item = PHOTOS_BASE_ITEM (photos_base_manager_get_object_by_id (self->item_mngr, id)); photos_base_manager_set_active_object (self->item_mngr, G_OBJECT (item)); g_free (id); }