[frogr] Make the ID and the local ID two different concepts for sets
- From: Mario Sanchez Prada <msanchez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [frogr] Make the ID and the local ID two different concepts for sets
- Date: Sun, 11 Nov 2012 00:07:13 +0000 (UTC)
commit 20a8d1dfce9d2e3ba3155b59cf4c12aee5b365c5
Author: Mario Sanchez Prada <msanchez2 gnome org>
Date: Thu Nov 8 13:25:05 2012 +0100
Make the ID and the local ID two different concepts for sets
src/frogr-controller.c | 8 ++--
src/frogr-create-new-set-dialog.c | 2 +-
src/frogr-photoset.c | 91 ++++++++++++++++++++++++++-----------
src/frogr-photoset.h | 15 ++++--
4 files changed, 80 insertions(+), 36 deletions(-)
---
diff --git a/src/frogr-controller.c b/src/frogr-controller.c
index 561dd62..87bb970 100644
--- a/src/frogr-controller.c
+++ b/src/frogr-controller.c
@@ -1010,7 +1010,7 @@ _add_picture_to_photosets_or_create (FrogrController *self, UploadOnePictureData
uop_data->after_upload_attempts[AFTER_UPLOAD_OP_ADDING_TO_SET] = 0;
set = FROGR_PHOTOSET (uop_data->photosets->data);
- if (frogr_photoset_is_local_only (set))
+ if (frogr_photoset_is_local (set))
_create_photoset_for_picture (self, uop_data);
else
_add_picture_to_photoset (self, uop_data);
@@ -1427,9 +1427,9 @@ _fetch_photosets_cb (GObject *object, GAsyncResult *res, gpointer data)
for (item = data_sets_list; item; item = g_slist_next (item))
{
current_data_set = FSP_DATA_PHOTO_SET (item->data);
- current_set = frogr_photoset_new_with_id (current_data_set->id,
- current_data_set->title,
- current_data_set->description);
+ current_set = frogr_photoset_new (current_data_set->id,
+ current_data_set->title,
+ current_data_set->description);
frogr_photoset_set_primary_photo_id (current_set, current_data_set->primary_photo_id);
frogr_photoset_set_n_photos (current_set, current_data_set->n_photos);
diff --git a/src/frogr-create-new-set-dialog.c b/src/frogr-create-new-set-dialog.c
index 7b189e9..a6f6fad 100644
--- a/src/frogr-create-new-set-dialog.c
+++ b/src/frogr-create-new-set-dialog.c
@@ -183,7 +183,7 @@ _update_model (FrogrCreateNewSetDialog *self,
mainview_model = frogr_main_view_get_model (mainview);
/* Add the set to the model */
- new_set = frogr_photoset_new (title, description);
+ new_set = frogr_photoset_new_local (title, description);
frogr_main_view_model_add_local_photoset (mainview_model, new_set);
/* Add the set to the list of sets for each picture */
diff --git a/src/frogr-photoset.c b/src/frogr-photoset.c
index b0cea8c..122a36a 100644
--- a/src/frogr-photoset.c
+++ b/src/frogr-photoset.c
@@ -25,8 +25,6 @@
#include <sys/types.h>
#include <unistd.h>
-#define TEMPORARY_ID_PREFIX "localset_"
-
#define FROGR_PHOTOSET_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
FROGR_TYPE_PHOTOSET, \
@@ -41,6 +39,7 @@ struct _FrogrPhotoSetPrivate
gchar *title;
gchar *description;
gchar *id;
+ gchar *local_id; /* For locally created sets only */
gchar *primary_photo_id;
gint n_photos;
};
@@ -51,6 +50,7 @@ enum {
PROP_TITLE,
PROP_DESCRIPTION,
PROP_ID,
+ PROP_LOCAL_ID,
PROP_PRIMARY_PHOTO_ID,
PROP_N_PHOTOS
};
@@ -91,8 +91,7 @@ _create_temporary_id_for_photoset (void)
/* The letters may increase uniqueness by preventing "melds"
i.e. 01t01k01 and 0101t0k1 are not the same */
- key = g_strdup_printf("%s%ut%uut%uu%up%ur%uk%u",
- TEMPORARY_ID_PREFIX,
+ key = g_strdup_printf("%ut%uut%uu%up%ur%uk%u",
/* Duplicate keys must be generated
by two different program instances */
serial,
@@ -137,6 +136,9 @@ _frogr_photoset_set_property (GObject *object,
case PROP_ID:
frogr_photoset_set_id (self, g_value_get_string (value));
break;
+ case PROP_LOCAL_ID:
+ frogr_photoset_set_local_id (self, g_value_get_string (value));
+ break;
case PROP_PRIMARY_PHOTO_ID:
frogr_photoset_set_primary_photo_id (self, g_value_get_string (value));
break;
@@ -168,6 +170,9 @@ _frogr_photoset_get_property (GObject *object,
case PROP_ID:
g_value_set_string (value, frogr_photoset_get_id (self));
break;
+ case PROP_LOCAL_ID:
+ g_value_set_string (value, frogr_photoset_get_local_id (self));
+ break;
case PROP_PRIMARY_PHOTO_ID:
g_value_set_string (value, frogr_photoset_get_primary_photo_id (self));
break;
@@ -189,6 +194,7 @@ _frogr_photoset_finalize (GObject* object)
g_free (priv->title);
g_free (priv->description);
g_free (priv->id);
+ g_free (priv->local_id);
g_free (priv->primary_photo_id);
/* call super class */
@@ -227,7 +233,14 @@ frogr_photoset_class_init(FrogrPhotoSetClass *klass)
"Photoset ID from flickr",
NULL,
G_PARAM_READWRITE));
-
+ g_object_class_install_property (obj_class,
+ PROP_LOCAL_ID,
+ g_param_spec_string ("local-id",
+ "local-id",
+ "Photoset ID locally generated"
+ "(for new sets only)",
+ NULL,
+ G_PARAM_READWRITE));
g_object_class_install_property (obj_class,
PROP_PRIMARY_PHOTO_ID,
g_param_spec_string ("primary-photo-id",
@@ -259,6 +272,7 @@ frogr_photoset_init (FrogrPhotoSet *self)
priv->title = NULL;
priv->description = NULL;
priv->id = NULL;
+ priv->local_id = NULL;
priv->primary_photo_id = NULL;
priv->n_photos = 0;
}
@@ -267,37 +281,38 @@ frogr_photoset_init (FrogrPhotoSet *self)
/* Public API */
FrogrPhotoSet *
-frogr_photoset_new (const gchar *title,
+frogr_photoset_new (const gchar *id,
+ const gchar *title,
const gchar *description)
{
- FrogrPhotoSet *new_set;
- gchar *id;
-
g_return_val_if_fail (title, NULL);
g_return_val_if_fail (description, NULL);
- /* We always need to have an id (locally created photosets) */
- id = _create_temporary_id_for_photoset ();
- new_set = frogr_photoset_new_with_id (id, title, description);
- g_free (id);
-
- return new_set;
+ return FROGR_PHOTOSET (g_object_new(FROGR_TYPE_PHOTOSET,
+ "id", id,
+ "title", title,
+ "description", description,
+ NULL));
}
FrogrPhotoSet *
-frogr_photoset_new_with_id (const gchar *id,
- const gchar *title,
- const gchar *description)
+frogr_photoset_new_local (const gchar *title,
+ const gchar *description)
{
- g_return_val_if_fail (id, NULL);
+ FrogrPhotoSet *new_set;
+ gchar *id;
+
g_return_val_if_fail (title, NULL);
g_return_val_if_fail (description, NULL);
- return FROGR_PHOTOSET (g_object_new(FROGR_TYPE_PHOTOSET,
- "id", id,
- "title", title,
- "description", description,
- NULL));
+ new_set = frogr_photoset_new (NULL, title, description);
+
+ /* We always need to have an id in locally created photosets */
+ id = _create_temporary_id_for_photoset ();
+ frogr_photoset_set_local_id (new_set, id);
+ g_free (id);
+
+ return new_set;
}
/* Data Managing functions */
@@ -376,6 +391,30 @@ frogr_photoset_set_id (FrogrPhotoSet *self,
}
const gchar *
+frogr_photoset_get_local_id (FrogrPhotoSet *self)
+{
+ FrogrPhotoSetPrivate *priv = NULL;
+
+ g_return_val_if_fail(FROGR_IS_PHOTOSET(self), NULL);
+
+ priv = FROGR_PHOTOSET_GET_PRIVATE (self);
+ return (const gchar *)priv->local_id;
+}
+
+void
+frogr_photoset_set_local_id (FrogrPhotoSet *self,
+ const gchar *id)
+{
+ FrogrPhotoSetPrivate *priv = NULL;
+
+ g_return_if_fail(FROGR_IS_PHOTOSET(self));
+
+ priv = FROGR_PHOTOSET_GET_PRIVATE (self);
+ g_free (priv->local_id);
+ priv->local_id = g_strdup (id);
+}
+
+const gchar *
frogr_photoset_get_primary_photo_id (FrogrPhotoSet *self)
{
FrogrPhotoSetPrivate *priv = NULL;
@@ -423,12 +462,12 @@ frogr_photoset_set_n_photos (FrogrPhotoSet *self,
}
gboolean
-frogr_photoset_is_local_only (FrogrPhotoSet *self)
+frogr_photoset_is_local (FrogrPhotoSet *self)
{
FrogrPhotoSetPrivate *priv = NULL;
g_return_val_if_fail(FROGR_IS_PHOTOSET(self), FALSE);
priv = FROGR_PHOTOSET_GET_PRIVATE (self);
- return g_str_has_prefix (priv->id, TEMPORARY_ID_PREFIX);
+ return priv->id == NULL && priv->local_id != NULL;
}
diff --git a/src/frogr-photoset.h b/src/frogr-photoset.h
index f67f96a..dc3dd14 100644
--- a/src/frogr-photoset.h
+++ b/src/frogr-photoset.h
@@ -50,18 +50,23 @@ struct _FrogrPhotoSetClass
GType frogr_photoset_get_type(void) G_GNUC_CONST;
/* Constructors */
-FrogrPhotoSet *frogr_photoset_new (const gchar *title,
+
+FrogrPhotoSet *frogr_photoset_new (const gchar *id,
+ const gchar *title,
const gchar *description);
-FrogrPhotoSet *frogr_photoset_new_with_id (const gchar *id,
- const gchar *title,
- const gchar *description);
+FrogrPhotoSet *frogr_photoset_new_local (const gchar *title,
+ const gchar *description);
/* Data managing methods */
const gchar *frogr_photoset_get_id (FrogrPhotoSet *self);
void frogr_photoset_set_id (FrogrPhotoSet *self,
const gchar *id);
+const gchar *frogr_photoset_get_local_id (FrogrPhotoSet *self);
+void frogr_photoset_set_local_id (FrogrPhotoSet *self,
+ const gchar *id);
+
const gchar *frogr_photoset_get_title (FrogrPhotoSet *self);
void frogr_photoset_set_title (FrogrPhotoSet *self,
const gchar *title);
@@ -78,7 +83,7 @@ gint frogr_photoset_get_n_photos (FrogrPhotoSet *self);
void frogr_photoset_set_n_photos (FrogrPhotoSet *self,
gint n);
-gboolean frogr_photoset_is_local_only (FrogrPhotoSet *self);
+gboolean frogr_photoset_is_local (FrogrPhotoSet *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]