[frogr] Make all locally created photosets show up in "Add to Sets" dialog



commit c86576e21a9bebbbac34adec53a27c3fcbcc9a55
Author: Mario Sanchez Prada <msanchez gnome org>
Date:   Tue Dec 29 17:03:41 2015 +0000

    Make all locally created photosets show up in "Add to Sets" dialog
    
    I forgot to check the temporary ID created for every local photoset, and
    I was checking the normal ID instead, which was NULL for all of them,
    causing the dialog to only pick one and ignore the rest.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=759960

 src/frogr-model.c    |   14 +-------------
 src/frogr-photoset.c |   21 +++++++++++++++++++++
 src/frogr-photoset.h |    2 ++
 src/frogr-picture.c  |   33 +--------------------------------
 4 files changed, 25 insertions(+), 45 deletions(-)
---
diff --git a/src/frogr-model.c b/src/frogr-model.c
index eefb0e0..1239d76 100644
--- a/src/frogr-model.c
+++ b/src/frogr-model.c
@@ -63,18 +63,6 @@ static guint signals[N_SIGNALS] = { 0 };
 
 /* Private API */
 
-static gint
-_compare_photosets (FrogrPhotoSet *photoset1, FrogrPhotoSet *photoset2)
-{
-  g_return_val_if_fail (FROGR_IS_PHOTOSET (photoset1), 1);
-  g_return_val_if_fail (FROGR_IS_PHOTOSET (photoset2), -1);
-
-  if (photoset1 == photoset2)
-    return 0;
-
-  return g_strcmp0 (frogr_photoset_get_id (photoset1), frogr_photoset_get_id (photoset2));
-}
-
 static void
 _remove_remote_photosets (FrogrModel *self)
 {
@@ -497,7 +485,7 @@ frogr_model_get_photosets (FrogrModel *self)
   list = g_slist_copy (self->remote_sets);
   for (current = self->local_sets; current; current = g_slist_next (current))
     {
-      if (!g_slist_find_custom (list, current->data, (GCompareFunc)_compare_photosets))
+      if (!g_slist_find_custom (list, current->data, (GCompareFunc)frogr_photoset_compare))
         list = g_slist_prepend (list, current->data);
     }
 
diff --git a/src/frogr-photoset.c b/src/frogr-photoset.c
index cb43ac2..18d400e 100644
--- a/src/frogr-photoset.c
+++ b/src/frogr-photoset.c
@@ -412,3 +412,24 @@ frogr_photoset_is_local (FrogrPhotoSet *self)
   g_return_val_if_fail(FROGR_IS_PHOTOSET(self), FALSE);
   return self->id == NULL && self->local_id != NULL;
 }
+
+gint
+frogr_photoset_compare (FrogrPhotoSet *self, FrogrPhotoSet *other)
+{
+  g_return_val_if_fail (FROGR_IS_PHOTOSET (self), 1);
+  g_return_val_if_fail (FROGR_IS_PHOTOSET (other), -1);
+
+  if (self == other)
+    return 0;
+
+  if (self->id != NULL && other->id != NULL)
+    return g_strcmp0 (self->id, other->id);
+
+  if (self->local_id != NULL && other->local_id != NULL)
+    return g_strcmp0 (self->local_id, other->local_id);
+
+  if (self->id != NULL)
+    return 1;
+  else
+    return -1;
+}
diff --git a/src/frogr-photoset.h b/src/frogr-photoset.h
index a620476..00380f9 100644
--- a/src/frogr-photoset.h
+++ b/src/frogr-photoset.h
@@ -66,6 +66,8 @@ void frogr_photoset_set_n_photos (FrogrPhotoSet *self,
 
 gboolean frogr_photoset_is_local (FrogrPhotoSet *self);
 
+gint frogr_photoset_compare (FrogrPhotoSet *self, FrogrPhotoSet *other);
+
 G_END_DECLS
 
 #endif
diff --git a/src/frogr-picture.c b/src/frogr-picture.c
index 75421c3..38cf39e 100644
--- a/src/frogr-picture.c
+++ b/src/frogr-picture.c
@@ -101,7 +101,6 @@ static void _add_tags_to_tags_list (FrogrPicture *self,
                                     const gchar *tags_string);
 static void _update_tags_string (FrogrPicture *self);
 
-static gint _compare_photosets (FrogrPhotoSet *photoset1, FrogrPhotoSet *photoset2);
 static gint _compare_groups (FrogrGroup *group1, FrogrGroup *group2);
 
 static JsonNode *_serialize_list (GSList *objects_list, GType g_type);
@@ -205,36 +204,6 @@ _update_tags_string (FrogrPicture *self)
 }
 
 static gint
-_compare_photosets (FrogrPhotoSet *photoset1, FrogrPhotoSet *photoset2)
-{
-  const gchar *id1 = NULL;
-  const gchar *id2 = NULL;
-  const gchar *local_id1 = NULL;
-  const gchar *local_id2 = NULL;
-
-  g_return_val_if_fail (FROGR_IS_PHOTOSET (photoset1), 1);
-  g_return_val_if_fail (FROGR_IS_PHOTOSET (photoset2), -1);
-
-  if (photoset1 == photoset2)
-    return 0;
-
-  id1 = frogr_photoset_get_id (photoset1);
-  id2 = frogr_photoset_get_id (photoset2);
-  if (id1 != NULL && id2 != NULL)
-    return g_strcmp0 (id1, id2);
-
-  local_id1 = frogr_photoset_get_local_id (photoset1);
-  local_id2 = frogr_photoset_get_local_id (photoset2);
-  if (local_id1 != NULL && local_id2 != NULL)
-    return g_strcmp0 (local_id1, local_id2);
-
-  if (id1 != NULL)
-    return 1;
-  else
-    return -1;
-}
-
-static gint
 _compare_groups (FrogrGroup *group1, FrogrGroup *group2)
 {
   const gchar *id1 = NULL;
@@ -1180,7 +1149,7 @@ frogr_picture_in_photoset (FrogrPicture *self, FrogrPhotoSet *photoset)
   g_return_val_if_fail(FROGR_IS_PICTURE(self), FALSE);
 
   if (g_slist_find_custom (self->photosets, photoset,
-                           (GCompareFunc)_compare_photosets))
+                           (GCompareFunc)frogr_photoset_compare))
     return TRUE;
 
   return FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]