Author: akv
Date: 2009-12-20 20:38:56 +0100 (Sun, 20 Dec 2009)
New Revision: 2816

Modified:
   trunk/src/rs-library.c
Log:
Rewrote rs_library_photo_default_tags() to collect tags in a GList before 
adding them.

Modified: trunk/src/rs-library.c
===================================================================
--- trunk/src/rs-library.c      2009-12-20 18:53:59 UTC (rev 2815)
+++ trunk/src/rs-library.c      2009-12-20 19:38:56 UTC (rev 2816)
@@ -471,16 +471,18 @@
 void
 rs_library_photo_default_tags(RS_LIBRARY *library, gchar *photo, RSMetadata 
*metadata)
 {
+       GList *tags = NULL;
+
        rs_library_add_photo(library, photo);
        if (metadata->make_ascii)
        {
-               rs_library_add_tag(library, metadata->make_ascii);
-               rs_library_photo_add_tag(library, photo, metadata->make_ascii, 
TRUE);
+               GList *temp = rs_split_string(metadata->make_ascii, " ");
+               tags = g_list_concat(tags, temp);
        }
        if (metadata->model_ascii)
        {
-               rs_library_add_tag(library, metadata->model_ascii);
-               rs_library_photo_add_tag(library, photo, metadata->model_ascii, 
TRUE);
+               GList *temp = rs_split_string(metadata->model_ascii, " ");
+               tags = g_list_concat(tags, temp);
        }
        if (metadata->lens_min_focal != -1 && metadata->lens_max_focal != -1)
        {
@@ -489,10 +491,8 @@
                        lens = g_strdup_printf("%dmm",(gint) 
metadata->lens_min_focal);
                else
                        lens = g_strdup_printf("%d-%dmm",(gint) 
metadata->lens_min_focal, (gint) metadata->lens_max_focal);
-               rs_library_add_tag(library, lens);
-               rs_library_photo_add_tag(library, photo, lens, TRUE);
+               tags = g_list_append(tags, g_strdup(lens));
                g_free(lens);
-
        }
        if (metadata->focallength > 0)
        {
@@ -501,8 +501,7 @@
                        text = g_strdup("wideangle");
                else
                        text = g_strdup("telephoto");
-               rs_library_add_tag(library, text);
-               rs_library_photo_add_tag(library, photo, text, TRUE);
+               tags = g_list_append(tags, g_strdup(text));
                g_free(text);
        }
        if (metadata->timestamp != -1)
@@ -554,16 +553,23 @@
                        break;
                }
 
-               rs_library_add_tag(library, year);
-               rs_library_photo_add_tag(library, photo, year, TRUE);
-               rs_library_add_tag(library, month);
-               rs_library_photo_add_tag(library, photo, month, TRUE);
+               tags = g_list_append(tags, g_strdup(year));
+               tags = g_list_append(tags, g_strdup(month));
 
                g_date_free(date);
                g_free(year);
                g_free(month);
        }
 
+       gint i;
+       for(i = 0; i < g_list_length(tags); i++)
+       {
+               gchar *tag = (gchar *) g_list_nth_data(tags, i);
+               rs_library_add_tag(library, tag);
+               rs_library_photo_add_tag(library, photo, tag, TRUE);
+               g_free(tag);
+       }
+       g_list_free(tags);
 }
 
 GList *


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to