void photos_utils_get_controller (PhotosWindowMode mode, PhotosOffsetController **out_offset_cntrlr, PhotosTrackerController **out_trk_cntrlr) { g_autoptr (PhotosOffsetController) offset_cntrlr = NULL; g_autoptr (PhotosTrackerController) trk_cntrlr = NULL; g_return_if_fail (mode != PHOTOS_WINDOW_MODE_NONE); g_return_if_fail (mode != PHOTOS_WINDOW_MODE_EDIT); g_return_if_fail (mode != PHOTOS_WINDOW_MODE_PREVIEW); switch (mode) { case PHOTOS_WINDOW_MODE_COLLECTION_VIEW: offset_cntrlr = photos_offset_collection_view_controller_dup_singleton (); trk_cntrlr = photos_tracker_collection_view_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_COLLECTIONS: offset_cntrlr = photos_offset_collections_controller_dup_singleton (); trk_cntrlr = photos_tracker_collections_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_FAVORITES: offset_cntrlr = photos_offset_favorites_controller_dup_singleton (); trk_cntrlr = photos_tracker_favorites_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_IMPORT: offset_cntrlr = photos_offset_import_controller_dup_singleton (); trk_cntrlr = photos_tracker_import_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_OVERVIEW: offset_cntrlr = photos_offset_overview_controller_dup_singleton (); trk_cntrlr = photos_tracker_overview_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_SEARCH: offset_cntrlr = photos_offset_search_controller_dup_singleton (); trk_cntrlr = photos_tracker_search_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_NONE: case PHOTOS_WINDOW_MODE_EDIT: case PHOTOS_WINDOW_MODE_PREVIEW: default: g_assert_not_reached (); break; } if (out_offset_cntrlr != NULL) g_set_object (out_offset_cntrlr, offset_cntrlr); if (out_trk_cntrlr != NULL) g_set_object (out_trk_cntrlr, trk_cntrlr); }
static void photos_view_container_constructed (GObject *object) { PhotosViewContainer *self = PHOTOS_VIEW_CONTAINER (object); PhotosViewContainerPrivate *priv = self->priv; AtkObject *accessible; GAction *action; GApplication *app; GtkWidget *generic_view; GtkWidget *grid; PhotosSearchContextState *state; gboolean status; gint size; G_OBJECT_CLASS (photos_view_container_parent_class)->constructed (object); app = g_application_get_default (); state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app)); accessible = gtk_widget_get_accessible (GTK_WIDGET (self)); if (accessible != NULL) atk_object_set_name (accessible, priv->name); priv->model = photos_view_model_new (priv->mode); grid = gtk_grid_new (); gtk_orientable_set_orientation (GTK_ORIENTABLE (grid), GTK_ORIENTATION_VERTICAL); gtk_stack_add_named (GTK_STACK (self), grid, "view"); priv->no_results = photos_empty_results_box_new (priv->mode); gtk_stack_add_named (GTK_STACK (self), priv->no_results, "no-results"); priv->error_box = photos_error_box_new (); gtk_stack_add_named (GTK_STACK (self), priv->error_box, "error"); priv->view = gd_main_view_new (GD_MAIN_VIEW_ICON); generic_view = gd_main_view_get_generic_view (priv->view); size = photos_utils_get_icon_size_unscaled (); gtk_icon_view_set_item_width (GTK_ICON_VIEW (generic_view), size + 24); gtk_container_add (GTK_CONTAINER (grid), GTK_WIDGET (priv->view)); gtk_widget_show_all (GTK_WIDGET (self)); gtk_stack_set_visible_child_full (GTK_STACK (self), "view", GTK_STACK_TRANSITION_TYPE_NONE); g_signal_connect_swapped (priv->view, "item-activated", G_CALLBACK (photos_view_container_item_activated), self); g_signal_connect_swapped (priv->view, "selection-mode-request", G_CALLBACK (photos_view_container_selection_mode_request), self); g_signal_connect_swapped (priv->view, "view-selection-changed", G_CALLBACK (photos_view_container_view_selection_changed), self); priv->item_mngr = g_object_ref (state->item_mngr); priv->sel_cntrlr = photos_selection_controller_dup_singleton (); g_signal_connect_object (priv->sel_cntrlr, "selection-mode-changed", G_CALLBACK (photos_view_container_selection_mode_changed), self, G_CONNECT_SWAPPED); photos_view_container_selection_mode_changed (self, photos_selection_controller_get_selection_mode (priv->sel_cntrlr)); priv->mode_cntrlr = g_object_ref (state->mode_cntrlr); g_signal_connect_object (priv->mode_cntrlr, "window-mode-changed", G_CALLBACK (photos_view_container_window_mode_changed), self, G_CONNECT_SWAPPED); priv->remote_mngr = photos_remote_display_manager_dup_singleton (); switch (priv->mode) { case PHOTOS_WINDOW_MODE_COLLECTIONS: priv->trk_cntrlr = photos_tracker_collections_controller_dup_singleton (); priv->offset_cntrlr = photos_offset_collections_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_FAVORITES: priv->trk_cntrlr = photos_tracker_favorites_controller_dup_singleton (); priv->offset_cntrlr = photos_offset_favorites_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_OVERVIEW: priv->trk_cntrlr = photos_tracker_overview_controller_dup_singleton (); priv->offset_cntrlr = photos_offset_overview_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_SEARCH: priv->trk_cntrlr = photos_tracker_search_controller_dup_singleton (); priv->offset_cntrlr = photos_offset_search_controller_dup_singleton (); break; case PHOTOS_WINDOW_MODE_NONE: case PHOTOS_WINDOW_MODE_EDIT: case PHOTOS_WINDOW_MODE_PREVIEW: default: g_assert_not_reached (); break; } action = g_action_map_lookup_action (G_ACTION_MAP (app), "select-all"); g_signal_connect_object (action, "activate", G_CALLBACK (photos_view_container_select_all), self, G_CONNECT_SWAPPED); action = g_action_map_lookup_action (G_ACTION_MAP (app), "select-none"); g_signal_connect_object (action, "activate", G_CALLBACK (gd_main_view_unselect_all), priv->view, G_CONNECT_SWAPPED); g_signal_connect_object (priv->offset_cntrlr, "count-changed", G_CALLBACK (photos_view_container_count_changed), self, G_CONNECT_SWAPPED); g_signal_connect_object (priv->trk_cntrlr, "query-error", G_CALLBACK (photos_view_container_query_error), self, G_CONNECT_SWAPPED); g_signal_connect_object (priv->trk_cntrlr, "query-status-changed", G_CALLBACK (photos_view_container_query_status_changed), self, G_CONNECT_SWAPPED); photos_tracker_controller_start (priv->trk_cntrlr); status = photos_tracker_controller_get_query_status (priv->trk_cntrlr); photos_view_container_query_status_changed (self, status); }