[gnome-photos/wip/rishi/collection: 24/24] Add a new mode for importing items from an attached device
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/rishi/collection: 24/24] Add a new mode for importing items from an attached device
- Date: Wed, 17 Jan 2018 13:34:48 +0000 (UTC)
commit ba30bc5753718238f2ea48d991ab13582ee79efd
Author: Debarshi Ray <debarshir gnome org>
Date: Tue Jan 16 20:43:35 2018 +0100
Add a new mode for importing items from an attached device
https://bugzilla.gnome.org/show_bug.cgi?id=751212
src/photos-application.c | 34 +++++++++++++++++--------------
src/photos-embed.c | 25 +++++++++++++++++++++++
src/photos-empty-results-box.c | 2 ++
src/photos-item-manager.c | 10 ++++++++++
src/photos-item-manager.h | 1 +
src/photos-main-toolbar.c | 45 +++++++++++++++++++++++++++++++++++++-----
src/photos-main-window.c | 2 ++
src/photos-preview-view.c | 4 ++++
src/photos-utils.c | 8 ++++++++
src/photos-view-container.c | 4 ++++
10 files changed, 115 insertions(+), 20 deletions(-)
---
diff --git a/src/photos-application.c b/src/photos-application.c
index 3bbcc58c..1df0ef71 100644
--- a/src/photos-application.c
+++ b/src/photos-application.c
@@ -328,12 +328,14 @@ photos_application_actions_update (PhotosApplication *self)
PhotosBaseItem *item;
GList *l;
GList *selection;
+ PhotosBaseManager *item_mngr_chld;
PhotosLoadState load_state;
PhotosWindowMode mode;
gboolean can_open;
gboolean can_trash;
gboolean enable;
gboolean selection_mode;
+ guint n_items;
item = photos_application_get_selection_or_active_item (self);
load_state = photos_item_manager_get_load_state (self->state->item_mngr);
@@ -341,6 +343,9 @@ photos_application_actions_update (PhotosApplication *self)
selection = photos_selection_controller_get_selection (self->sel_cntrlr);
selection_mode = photos_utils_get_selection_mode ();
+ item_mngr_chld = photos_item_manager_get_for_mode (PHOTOS_ITEM_MANAGER (self->state->item_mngr), mode);
+ n_items = g_list_model_get_n_items (G_LIST_MODEL (item_mngr_chld));
+
g_simple_action_set_enabled (self->zoom_best_fit_action, FALSE);
g_simple_action_set_enabled (self->zoom_end_action, FALSE);
g_simple_action_set_enabled (self->zoom_out_action, FALSE);
@@ -357,25 +362,24 @@ photos_application_actions_update (PhotosApplication *self)
g_simple_action_set_enabled (self->shadows_highlights_action, enable);
g_simple_action_set_enabled (self->sharpen_action, enable);
- enable = FALSE;
- if (mode == PHOTOS_WINDOW_MODE_COLLECTION_VIEW
- || mode == PHOTOS_WINDOW_MODE_COLLECTIONS
- || mode == PHOTOS_WINDOW_MODE_FAVORITES
- || mode == PHOTOS_WINDOW_MODE_OVERVIEW
- || mode == PHOTOS_WINDOW_MODE_SEARCH)
- {
- PhotosBaseManager *item_mngr_chld;
- guint n_items;
-
- item_mngr_chld = photos_item_manager_get_for_mode (PHOTOS_ITEM_MANAGER (self->state->item_mngr), mode);
- n_items = g_list_model_get_n_items (G_LIST_MODEL (item_mngr_chld));
- enable = n_items > 0;
- }
-
+ enable = ((mode == PHOTOS_WINDOW_MODE_COLLECTION_VIEW
+ || mode == PHOTOS_WINDOW_MODE_COLLECTIONS
+ || mode == PHOTOS_WINDOW_MODE_FAVORITES
+ || mode == PHOTOS_WINDOW_MODE_OVERVIEW
+ || mode == PHOTOS_WINDOW_MODE_SEARCH)
+ && n_items > 0);
g_simple_action_set_enabled (self->search_action, enable);
g_simple_action_set_enabled (self->search_match_action, enable);
g_simple_action_set_enabled (self->search_source_action, enable);
g_simple_action_set_enabled (self->search_type_action, enable);
+
+ enable = ((mode == PHOTOS_WINDOW_MODE_COLLECTION_VIEW
+ || mode == PHOTOS_WINDOW_MODE_COLLECTIONS
+ || mode == PHOTOS_WINDOW_MODE_FAVORITES
+ || mode == PHOTOS_WINDOW_MODE_IMPORT
+ || mode == PHOTOS_WINDOW_MODE_OVERVIEW
+ || mode == PHOTOS_WINDOW_MODE_SEARCH)
+ && n_items > 0);
g_simple_action_set_enabled (self->sel_all_action, enable);
g_simple_action_set_enabled (self->sel_none_action, enable);
g_simple_action_set_enabled (self->selection_mode_action, enable);
diff --git a/src/photos-embed.c b/src/photos-embed.c
index f2ac01be..ff4824e1 100644
--- a/src/photos-embed.c
+++ b/src/photos-embed.c
@@ -73,6 +73,7 @@ struct _PhotosEmbed
GtkWidget *collection_view;
GtkWidget *collections;
GtkWidget *favorites;
+ GtkWidget *import;
GtkWidget *no_results;
GtkWidget *ntfctn_mngr;
GtkWidget *overview;
@@ -160,6 +161,10 @@ photos_embed_get_view_container_from_mode (PhotosEmbed *self, PhotosWindowMode m
view_container = self->favorites;
break;
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ view_container = self->import;
+ break;
+
case PHOTOS_WINDOW_MODE_OVERVIEW:
view_container = self->overview;
break;
@@ -415,6 +420,7 @@ photos_embed_prepare_for_collection_view (PhotosEmbed *self, PhotosWindowMode ol
case PHOTOS_WINDOW_MODE_COLLECTION_VIEW:
case PHOTOS_WINDOW_MODE_EDIT:
case PHOTOS_WINDOW_MODE_FAVORITES:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_OVERVIEW:
default:
g_assert_not_reached ();
@@ -448,6 +454,17 @@ photos_embed_prepare_for_favorites (PhotosEmbed *self, PhotosWindowMode old_mode
}
+static void
+photos_embed_prepare_for_import (PhotosEmbed *self, PhotosWindowMode old_mode)
+{
+ if (old_mode == PHOTOS_WINDOW_MODE_PREVIEW)
+ photos_embed_tracker_controllers_set_frozen (self, FALSE);
+
+ photos_spinner_box_stop (PHOTOS_SPINNER_BOX (self->spinner_box));
+ gtk_stack_set_visible_child_name (GTK_STACK (self->stack), "import");
+}
+
+
static void
photos_embed_prepare_for_overview (PhotosEmbed *self, PhotosWindowMode old_mode)
{
@@ -631,6 +648,7 @@ photos_embed_window_mode_changed (PhotosModeController *mode_cntrlr,
case PHOTOS_WINDOW_MODE_COLLECTION_VIEW:
case PHOTOS_WINDOW_MODE_EDIT:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_PREVIEW:
case PHOTOS_WINDOW_MODE_SEARCH:
break;
@@ -660,6 +678,10 @@ photos_embed_window_mode_changed (PhotosModeController *mode_cntrlr,
photos_embed_prepare_for_favorites (self, old_mode);
break;
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ photos_embed_prepare_for_import (self, old_mode);
+ break;
+
case PHOTOS_WINDOW_MODE_OVERVIEW:
photos_embed_prepare_for_overview (self, old_mode);
break;
@@ -751,6 +773,9 @@ photos_embed_init (PhotosEmbed *self)
name = photos_view_container_get_name (PHOTOS_VIEW_CONTAINER (self->favorites));
gtk_stack_add_titled (GTK_STACK (self->stack), self->favorites, "favorites", name);
+ self->import = photos_view_container_new (PHOTOS_WINDOW_MODE_IMPORT, _("Import"));
+ gtk_stack_add_named (GTK_STACK (self->stack), self->import, "import");
+
self->search = photos_view_container_new (PHOTOS_WINDOW_MODE_SEARCH, _("Search"));
gtk_stack_add_named (GTK_STACK (self->stack), self->search, "search");
diff --git a/src/photos-empty-results-box.c b/src/photos-empty-results-box.c
index 99656b74..8d1cf4e5 100644
--- a/src/photos-empty-results-box.c
+++ b/src/photos-empty-results-box.c
@@ -197,6 +197,7 @@ photos_empty_results_box_constructed (GObject *object)
case PHOTOS_WINDOW_MODE_NONE:
case PHOTOS_WINDOW_MODE_EDIT:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_PREVIEW:
default:
g_assert_not_reached ();
@@ -245,6 +246,7 @@ photos_empty_results_box_constructed (GObject *object)
case PHOTOS_WINDOW_MODE_NONE:
case PHOTOS_WINDOW_MODE_EDIT:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_PREVIEW:
default:
g_assert_not_reached ();
diff --git a/src/photos-item-manager.c b/src/photos-item-manager.c
index 9ed0e10a..68a7ba65 100644
--- a/src/photos-item-manager.c
+++ b/src/photos-item-manager.c
@@ -693,6 +693,7 @@ photos_item_manager_set_active_object (PhotosBaseManager *manager, GObject *obje
g_return_val_if_fail (object != NULL, FALSE);
g_return_val_if_fail (PHOTOS_IS_BASE_ITEM (object), FALSE);
+ g_return_val_if_fail (self->mode == PHOTOS_WINDOW_MODE_IMPORT, FALSE);
is_collection = photos_base_item_is_collection (PHOTOS_BASE_ITEM (object));
if (is_collection)
@@ -1359,6 +1360,10 @@ photos_mode_controller_go_back (PhotosModeController *self)
g_return_if_fail (old_mode != PHOTOS_WINDOW_MODE_PREVIEW);
break;
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ g_return_if_fail (old_mode == PHOTOS_WINDOW_MODE_COLLECTIONS || old_mode ==
PHOTOS_WINDOW_MODE_OVERVIEW);
+ break;
+
case PHOTOS_WINDOW_MODE_PREVIEW:
g_return_if_fail (PHOTOS_IS_BASE_ITEM (self->active_object));
g_return_if_fail (self->active_object != (GObject *) self->active_collection);
@@ -1393,6 +1398,7 @@ photos_mode_controller_go_back (PhotosModeController *self)
break;
case PHOTOS_WINDOW_MODE_EDIT:
+ case PHOTOS_WINDOW_MODE_IMPORT:
break;
case PHOTOS_WINDOW_MODE_PREVIEW:
@@ -1470,6 +1476,10 @@ photos_mode_controller_set_window_mode (PhotosModeController *self, PhotosWindow
g_return_if_fail (self->load_state == PHOTOS_LOAD_STATE_FINISHED);
g_return_if_fail (self->mode == PHOTOS_WINDOW_MODE_PREVIEW);
}
+ else if (mode == PHOTOS_WINDOW_MODE_IMPORT)
+ {
+ g_return_if_fail (self->mode == PHOTOS_WINDOW_MODE_COLLECTIONS || self->mode ==
PHOTOS_WINDOW_MODE_OVERVIEW);
+ }
else
{
g_return_if_fail (self->mode != PHOTOS_WINDOW_MODE_PREVIEW);
diff --git a/src/photos-item-manager.h b/src/photos-item-manager.h
index 22fa3426..8383cc87 100644
--- a/src/photos-item-manager.h
+++ b/src/photos-item-manager.h
@@ -62,6 +62,7 @@ typedef enum
PHOTOS_WINDOW_MODE_COLLECTIONS,
PHOTOS_WINDOW_MODE_EDIT,
PHOTOS_WINDOW_MODE_FAVORITES,
+ PHOTOS_WINDOW_MODE_IMPORT,
PHOTOS_WINDOW_MODE_OVERVIEW,
PHOTOS_WINDOW_MODE_PREVIEW,
PHOTOS_WINDOW_MODE_SEARCH
diff --git a/src/photos-main-toolbar.c b/src/photos-main-toolbar.c
index 377b1b21..de828d3b 100644
--- a/src/photos-main-toolbar.c
+++ b/src/photos-main-toolbar.c
@@ -30,6 +30,7 @@
#include <gtk/gtk.h>
#include <glib/gi18n.h>
+#include "photos-base-manager.h"
#include "photos-dlna-renderers-manager.h"
#include "photos-dropdown.h"
#include "photos-header-bar.h"
@@ -55,6 +56,7 @@ struct _PhotosMainToolbar
GtkWidget *searchbar;
GtkWidget *selection_menu;
PhotosBaseManager *item_mngr;
+ PhotosBaseManager *src_mngr;
PhotosModeController *mode_cntrlr;
PhotosRemoteDisplayManager *remote_mngr;
PhotosSelectionController *sel_cntrlr;
@@ -68,7 +70,9 @@ static void photos_main_toolbar_favorite_button_update (PhotosMainToolbar *self,
static gchar *
-photos_main_toolbar_create_selection_mode_label (PhotosMainToolbar *self, PhotosBaseItem *active_collection)
+photos_main_toolbar_create_selection_mode_label (PhotosMainToolbar *self,
+ PhotosBaseItem *active_collection,
+ PhotosSource *source)
{
GList *selection;
g_autofree gchar *label = NULL;
@@ -83,9 +87,20 @@ photos_main_toolbar_create_selection_mode_label (PhotosMainToolbar *self, Photos
label = g_strdup_printf (ngettext ("%d selected", "%d selected", length), length);
if (active_collection != NULL)
- ret_val = g_markup_printf_escaped ("<b>%s</b> (%s)", photos_base_item_get_name (active_collection),
label);
+ {
+ ret_val = g_markup_printf_escaped ("<b>%s</b> (%s)", photos_base_item_get_name (active_collection),
label);
+ }
+ else if (source != NULL)
+ {
+ const gchar *name;
+
+ name = photos_source_get_name (source);
+ ret_val = g_markup_printf_escaped ("<b>%s</b> (%s)", name, label);
+ }
else
- ret_val = g_steal_pointer (&label);
+ {
+ ret_val = g_steal_pointer (&label);
+ }
return ret_val;
}
@@ -95,6 +110,7 @@ static void
photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
{
PhotosBaseItem *active_collection;
+ PhotosSource *source;
PhotosWindowMode window_mode;
gboolean selection_mode;
g_autofree gchar *primary = NULL;
@@ -107,6 +123,7 @@ photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
g_return_if_fail (window_mode == PHOTOS_WINDOW_MODE_COLLECTION_VIEW
|| window_mode == PHOTOS_WINDOW_MODE_COLLECTIONS
|| window_mode == PHOTOS_WINDOW_MODE_FAVORITES
+ || window_mode == PHOTOS_WINDOW_MODE_IMPORT
|| window_mode == PHOTOS_WINDOW_MODE_OVERVIEW
|| window_mode == PHOTOS_WINDOW_MODE_SEARCH);
}
@@ -115,12 +132,24 @@ photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
g_return_if_fail (!selection_mode);
active_collection = photos_item_manager_get_active_collection (PHOTOS_ITEM_MANAGER (self->item_mngr));
+ source = PHOTOS_SOURCE (photos_base_manager_get_active_object (self->src_mngr));
+
+ if (window_mode == PHOTOS_WINDOW_MODE_IMPORT)
+ {
+ GMount *mount;
+
+ g_return_if_fail (active_collection == NULL);
+ g_return_if_fail (PHOTOS_IS_SOURCE (source));
+
+ mount = photos_source_get_mount (source);
+ g_return_if_fail (G_IS_MOUNT (mount));
+ }
switch (window_mode)
{
case PHOTOS_WINDOW_MODE_COLLECTION_VIEW:
if (selection_mode)
- primary = photos_main_toolbar_create_selection_mode_label (self, active_collection);
+ primary = photos_main_toolbar_create_selection_mode_label (self, active_collection, NULL);
else
primary = g_strdup (photos_base_item_get_name (active_collection));
break;
@@ -130,7 +159,7 @@ photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
case PHOTOS_WINDOW_MODE_OVERVIEW:
case PHOTOS_WINDOW_MODE_SEARCH:
if (selection_mode)
- primary = photos_main_toolbar_create_selection_mode_label (self, NULL);
+ primary = photos_main_toolbar_create_selection_mode_label (self, NULL, NULL);
break;
case PHOTOS_WINDOW_MODE_EDIT:
@@ -145,6 +174,10 @@ photos_main_toolbar_set_toolbar_title (PhotosMainToolbar *self)
break;
}
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ primary = photos_main_toolbar_create_selection_mode_label (self, NULL, source);
+ break;
+
case PHOTOS_WINDOW_MODE_NONE:
default:
break;
@@ -573,6 +606,7 @@ photos_main_toolbar_dispose (GObject *object)
g_clear_object (&self->mode_cntrlr);
g_clear_object (&self->remote_mngr);
g_clear_object (&self->sel_cntrlr);
+ g_clear_object (&self->src_mngr);
G_OBJECT_CLASS (photos_main_toolbar_parent_class)->dispose (object);
}
@@ -636,6 +670,7 @@ photos_main_toolbar_init (PhotosMainToolbar *self)
self->item_mngr = g_object_ref (state->item_mngr);
self->mode_cntrlr = g_object_ref (state->mode_cntrlr);
self->sel_cntrlr = photos_selection_controller_dup_singleton ();
+ self->src_mngr = g_object_ref (state->src_mngr);
self->remote_mngr = photos_remote_display_manager_dup_singleton ();
g_signal_connect_object (self->remote_mngr,
diff --git a/src/photos-main-window.c b/src/photos-main-window.c
index 10b0f9c2..fb7f99e9 100644
--- a/src/photos-main-window.c
+++ b/src/photos-main-window.c
@@ -160,6 +160,7 @@ photos_main_window_go_back (PhotosMainWindow *self)
switch (mode)
{
case PHOTOS_WINDOW_MODE_COLLECTION_VIEW:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_PREVIEW:
photos_mode_controller_go_back (self->mode_cntrlr);
break;
@@ -278,6 +279,7 @@ photos_main_window_key_press_event (GtkWidget *widget, GdkEventKey *event)
case PHOTOS_WINDOW_MODE_COLLECTION_VIEW:
case PHOTOS_WINDOW_MODE_COLLECTIONS:
case PHOTOS_WINDOW_MODE_FAVORITES:
+ case PHOTOS_WINDOW_MODE_IMPORT:
case PHOTOS_WINDOW_MODE_OVERVIEW:
case PHOTOS_WINDOW_MODE_SEARCH:
handled = GDK_EVENT_PROPAGATE;
diff --git a/src/photos-preview-view.c b/src/photos-preview-view.c
index 3d7ef35e..089d0d3c 100644
--- a/src/photos-preview-view.c
+++ b/src/photos-preview-view.c
@@ -910,6 +910,9 @@ photos_preview_view_window_mode_changed (PhotosPreviewView *self, PhotosWindowMo
photos_preview_nav_buttons_hide (self->nav_buttons);
break;
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ break;
+
case PHOTOS_WINDOW_MODE_PREVIEW:
gtk_revealer_set_reveal_child (GTK_REVEALER (self->revealer), FALSE);
photos_edit_palette_hide_details (PHOTOS_EDIT_PALETTE (self->palette));
@@ -1429,6 +1432,7 @@ photos_preview_view_set_mode (PhotosPreviewView *self, PhotosWindowMode old_mode
g_return_if_fail (PHOTOS_IS_PREVIEW_VIEW (self));
g_return_if_fail (old_mode != PHOTOS_WINDOW_MODE_NONE);
g_return_if_fail (old_mode != PHOTOS_WINDOW_MODE_EDIT);
+ g_return_if_fail (old_mode != PHOTOS_WINDOW_MODE_IMPORT);
g_return_if_fail (old_mode != PHOTOS_WINDOW_MODE_PREVIEW);
photos_preview_nav_buttons_set_auto_hide (self->nav_buttons, TRUE);
diff --git a/src/photos-utils.c b/src/photos-utils.c
index e4609bec..d581a458 100644
--- a/src/photos-utils.c
+++ b/src/photos-utils.c
@@ -46,6 +46,7 @@
#include "photos-offset-collection-view-controller.h"
#include "photos-offset-collections-controller.h"
#include "photos-offset-favorites-controller.h"
+#include "photos-offset-import-controller.h"
#include "photos-offset-overview-controller.h"
#include "photos-offset-search-controller.h"
#include "photos-query.h"
@@ -63,6 +64,7 @@
#include "photos-tracker-collection-view-controller.h"
#include "photos-tracker-collections-controller.h"
#include "photos-tracker-favorites-controller.h"
+#include "photos-tracker-import-controller.h"
#include "photos-tracker-overview-controller.h"
#include "photos-tracker-queue.h"
#include "photos-tracker-search-controller.h"
@@ -722,6 +724,7 @@ photos_utils_ensure_builtins (void)
g_type_ensure (PHOTOS_TYPE_TRACKER_COLLECTION_VIEW_CONTROLLER);
g_type_ensure (PHOTOS_TYPE_TRACKER_COLLECTIONS_CONTROLLER);
g_type_ensure (PHOTOS_TYPE_TRACKER_FAVORITES_CONTROLLER);
+ g_type_ensure (PHOTOS_TYPE_TRACKER_IMPORT_CONTROLLER);
g_type_ensure (PHOTOS_TYPE_TRACKER_OVERVIEW_CONTROLLER);
g_type_ensure (PHOTOS_TYPE_TRACKER_SEARCH_CONTROLLER);
@@ -1018,6 +1021,11 @@ photos_utils_get_controller (PhotosWindowMode mode,
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 ();
diff --git a/src/photos-view-container.c b/src/photos-view-container.c
index 7fda7686..68a73b55 100644
--- a/src/photos-view-container.c
+++ b/src/photos-view-container.c
@@ -122,6 +122,10 @@ photos_view_container_get_show_primary_text (PhotosViewContainer *self)
ret_val = FALSE;
break;
+ case PHOTOS_WINDOW_MODE_IMPORT:
+ ret_val = FALSE;
+ break;
+
case PHOTOS_WINDOW_MODE_OVERVIEW:
ret_val = FALSE;
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]