[easytag] Refactor track number to string formatting



commit 10705705a02cd1b7ded3a4ce6c370e8940766dac
Author: Mathias Reineke <saihtam gmx net>
Date:   Mon Jul 8 10:13:50 2013 +0200

    Refactor track number to string formatting
    
    Add et_track_number_to_string() to consistently handle track number
    formatting.

 src/ape_tag.c     |   24 ++++++++----------------
 src/cddb.c        |   28 ++++++++++++++++------------
 src/easytag.c     |   13 +++++--------
 src/et_core.c     |   26 +++++++-------------------
 src/flac_tag.c    |   31 ++++++++-----------------------
 src/id3v24_tag.c  |   20 +++++---------------
 src/misc.c        |   19 ++++++++++---------
 src/misc.h        |    1 +
 src/mp4_tag.c     |    2 +-
 src/ogg_tag.c     |   34 ++++++++++------------------------
 src/wavpack_tag.c |   11 +++++++----
 11 files changed, 78 insertions(+), 131 deletions(-)
---
diff --git a/src/ape_tag.c b/src/ape_tag.c
index d4faa65..602fa64 100644
--- a/src/ape_tag.c
+++ b/src/ape_tag.c
@@ -110,23 +110,15 @@ gboolean Ape_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
         string = Try_To_Validate_Utf8_String(string);
 
         string1 = g_utf8_strchr(string, -1, '/');    // strchr don't like NULL string
-        if (NUMBER_TRACK_FORMATED)
-        {
-            if (string1)
-            {
-                FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON, 
atoi(string1 + 1));
-                *string1 = '\0';
-            }
-            FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON, atoi(string));
-        } else
+
+        if (string1)
         {
-            if (string1)
-            {
-                FileTag->track_total = g_strdup(string1 + 1);
-                *string1 = '\0';
-            }
-            FileTag->track = g_strdup(string);
+            FileTag->track_total = et_track_number_to_string (atoi (string1
+                                                                    + 1));
+            *string1 = '\0';
         }
+        FileTag->track = et_track_number_to_string (atoi (string));
+
         g_free(string);
     } else
     {
@@ -260,7 +252,7 @@ gboolean Ape_Tag_Write_File_Tag (ET_File *ETFile)
             string = g_strconcat(FileTag->track,NULL);
         apefrm_add(ape_mem, 0, APE_TAG_FIELD_TRACK, string);
         g_free(string);
-    }else
+    } else
         apefrm_remove(ape_mem,APE_TAG_FIELD_TRACK);
 
     /*********
diff --git a/src/cddb.c b/src/cddb.c
index 5c0b813..dea29cf 100644
--- a/src/cddb.c
+++ b/src/cddb.c
@@ -3873,15 +3873,17 @@ Cddb_Set_Track_Infos_To_File_List (void)
 
                 if (cddbsettoallfields || cddbsettotrack)
                 {
-                    if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
-                    else                       snprintf(buffer,sizeof(buffer),"%d",  
cddbtrackalbum->track_number);
+                    snprintf (buffer, sizeof (buffer), "%s",
+                              et_track_number_to_string (cddbtrackalbum->track_number));
+
                     ET_Set_Field_File_Tag_Item(&FileTag->track,buffer);
                 }
 
                 if (cddbsettoallfields || cddbsettotracktotal)
                 {
-                    if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,list_length);
-                    else                       snprintf(buffer,sizeof(buffer),"%d",  list_length);
+                    snprintf (buffer, sizeof (buffer), "%s",
+                              et_track_number_to_string (list_length));
+
                     ET_Set_Field_File_Tag_Item(&FileTag->track_total,buffer);
                 }
 
@@ -3906,8 +3908,8 @@ Cddb_Set_Track_Infos_To_File_List (void)
                 FileName = ET_File_Name_Item_New();
 
                 // Build the filename with the path
-                if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
-                else                       snprintf(buffer,sizeof(buffer),"%d",  
cddbtrackalbum->track_number);
+                snprintf (buffer, sizeof (buffer), "%s",
+                          et_track_number_to_string (cddbtrackalbum->track_number));
 
                 filename_generated_utf8 = g_strconcat(buffer," - ",cddbtrackalbum->track_name,NULL);
                 ET_File_Name_Convert_Character(filename_generated_utf8); // Replace invalid characters
@@ -3959,15 +3961,17 @@ Cddb_Set_Track_Infos_To_File_List (void)
 
                 if (cddbsettoallfields || cddbsettotrack)
                 {
-                    if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
-                    else                       snprintf(buffer,sizeof(buffer),"%d",  
cddbtrackalbum->track_number);
+                    snprintf (buffer, sizeof (buffer), "%s",
+                              et_track_number_to_string (cddbtrackalbum->track_number));
+
                     ET_Set_Field_File_Tag_Item(&FileTag->track,buffer);
                 }
 
                 if (cddbsettoallfields || cddbsettotracktotal)
                 {
-                    if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,list_length);
-                    else                       snprintf(buffer,sizeof(buffer),"%d",  list_length);
+                    snprintf (buffer, sizeof (buffer), "%s",
+                              et_track_number_to_string (list_length));
+
                     ET_Set_Field_File_Tag_Item(&FileTag->track_total,buffer);
                 }
 
@@ -3992,8 +3996,8 @@ Cddb_Set_Track_Infos_To_File_List (void)
                 FileName = ET_File_Name_Item_New();
 
                 // Build the filename with the path
-                if (NUMBER_TRACK_FORMATED) 
snprintf(buffer,sizeof(buffer),"%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,cddbtrackalbum->track_number);
-                else                       snprintf(buffer,sizeof(buffer),"%d",  
cddbtrackalbum->track_number);
+                snprintf (buffer, sizeof (buffer), "%s",
+                          et_track_number_to_string (cddbtrackalbum->track_number));
 
                 filename_generated_utf8 = g_strconcat(buffer," - ",cddbtrackalbum->track_name,NULL);
                 ET_File_Name_Convert_Character(filename_generated_utf8); // Replace invalid characters
diff --git a/src/easytag.c b/src/easytag.c
index 51fa146..34ff580 100644
--- a/src/easytag.c
+++ b/src/easytag.c
@@ -1492,10 +1492,8 @@ Mini_Button_Clicked (GObject *object)
             path1 = g_path_get_dirname(FileNameCur->value);
             if ( path && path1 && strcmp(path,path1)!=0 )
                 i = 0;
-            if (NUMBER_TRACK_FORMATED)
-                string_to_set = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,++i);
-            else
-                string_to_set = g_strdup_printf("%d",++i);
+
+            string_to_set = et_track_number_to_string (++i);
 
             // The file is in the selection?
             if ( (ET_File *)etfilelistfull->data == etfile )
@@ -1530,10 +1528,9 @@ Mini_Button_Clicked (GObject *object)
             etfile        = (ET_File *)l->data;
             filename_utf8 = ((File_Name *)etfile->FileNameNew->data)->value_utf8;
             path_utf8     = g_path_get_dirname(filename_utf8);
-            if (NUMBER_TRACK_FORMATED)
-                string_to_set = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,ET_Get_Number_Of_Files_In_Directory(path_utf8));
-            else
-                string_to_set = g_strdup_printf("%d",ET_Get_Number_Of_Files_In_Directory(path_utf8));
+
+            string_to_set = et_track_number_to_string (ET_Get_Number_Of_Files_In_Directory (path_utf8));
+
             g_free(path_utf8);
             if (!string_to_set1)
                 string_to_set1 = g_strdup(string_to_set); // Just for the message below...
diff --git a/src/et_core.c b/src/et_core.c
index 9b9f4b5..c532298 100644
--- a/src/et_core.c
+++ b/src/et_core.c
@@ -3461,11 +3461,8 @@ ET_Save_File_Tag_From_UI (File_Tag *FileTag)
 
     if ( g_utf8_strlen(buffer, -1) > 0  )
     {
-        if (NUMBER_TRACK_FORMATED) {
-            FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(buffer));
-            g_free(buffer);
-        } else
-            FileTag->track = buffer;
+        FileTag->track = et_track_number_to_string (atoi (buffer));
+        g_free (buffer);
     } else
     {
         FileTag->track = NULL;
@@ -3478,12 +3475,8 @@ ET_Save_File_Tag_From_UI (File_Tag *FileTag)
 
     if ( g_utf8_strlen(buffer, -1) > 0  )
     {
-        if (NUMBER_TRACK_FORMATED)
-        {
-            FileTag->track_total = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(buffer));
-            g_free(buffer);
-        } else
-            FileTag->track_total = buffer;
+        FileTag->track_total = et_track_number_to_string (atoi (buffer));
+        g_free (buffer);
     } else
     {
         FileTag->track_total = NULL;
@@ -3692,10 +3685,8 @@ ET_Save_File_Tag_Internal (ET_File *ETFile, File_Tag *FileTag)
     {
         gchar *tmp_str;
 
-        if (NUMBER_TRACK_FORMATED)
-            FileTag->track = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(FileTagCur->track));
-        else
-            FileTag->track = g_strdup(FileTagCur->track);
+        FileTag->track = et_track_number_to_string (atoi (FileTagCur->track));
+
         // This field must contain only digits
         tmp_str = FileTag->track;
         while (isdigit((guchar)*tmp_str)) tmp_str++;
@@ -3710,10 +3701,7 @@ ET_Save_File_Tag_Internal (ET_File *ETFile, File_Tag *FileTag)
     /* Track Total */
     if ( FileTagCur->track_total && g_utf8_strlen(FileTagCur->track_total, -1)>0 )
     {
-        if (NUMBER_TRACK_FORMATED)
-            FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(FileTagCur->track_total));
-        else
-            FileTag->track_total = g_strdup(FileTagCur->track_total);
+        FileTag->track_total = et_track_number_to_string (atoi (FileTagCur->track_total));
         Strip_String(FileTag->track_total);
     } else
     {
diff --git a/src/flac_tag.c b/src/flac_tag.c
index 41b13c1..ff9b150 100644
--- a/src/flac_tag.c
+++ b/src/flac_tag.c
@@ -338,13 +338,8 @@ gboolean Flac_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
                             field_value_tmp = g_strndup(field_value, field_len);
                             field_value = Try_To_Validate_Utf8_String(field_value_tmp);
                             g_free(field_value_tmp);
-                            if (NUMBER_TRACK_FORMATED)
-                            {
-                                FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(field_value));
-                            }else
-                            {
-                                FileTag->track_total = g_strdup(field_value);
-                            }
+
+                            FileTag->track_total = et_track_number_to_string (atoi (field_value));
                             g_free(field_value);
                         }
                     }
@@ -367,24 +362,14 @@ gboolean Flac_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
                             field_value = Try_To_Validate_Utf8_String(field_value_tmp);
                             g_free(field_value_tmp);
                             string = g_utf8_strchr(field_value, -1, '/');
-                            if (NUMBER_TRACK_FORMATED)
-                            {
-                                // If track_total not filled before, try now...
-                                if (string && !FileTag->track_total)
-                                {
-                                    FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string+1));
-                                    *string = '\0';
-                                }
-                                FileTag->track = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(field_value));
-                            }else
+
+                            if (string && !FileTag->track_total)
                             {
-                                if (string && !FileTag->track_total)
-                                {
-                                    FileTag->track_total = g_strdup(string+1);
-                                    *string = '\0';
-                                }
-                                FileTag->track = g_strdup(field_value);
+                                FileTag->track_total = et_track_number_to_string (atoi (string + 1));
+                                *string = '\0';
                             }
+                            FileTag->track = et_track_number_to_string (atoi (field_value));
+
                             g_free(field_value);
                         }
                     }
diff --git a/src/id3v24_tag.c b/src/id3v24_tag.c
index 4b7d6bf..3b8f849 100644
--- a/src/id3v24_tag.c
+++ b/src/id3v24_tag.c
@@ -258,23 +258,13 @@ gboolean Id3tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
         {
             string2 = g_utf8_strchr(string1,-1,'/');
 
-            if (NUMBER_TRACK_FORMATED)
+            if (string2)
             {
-                if (string2)
-                {
-                    FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string2+1)); // Just to have numbers like this 
: '01', '05', '12', ...
-                    *string2 = '\0'; // To cut string1
-                }
-                FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1)); // 
Just to have numbers like this : '01', '05', '12', ...
-            }else
-            {
-                if (string2)
-                {
-                    FileTag->track_total = g_strdup(string2+1);
-                    *string2 = '\0'; // To cut string1
-                }
-                FileTag->track = g_strdup(string1);
+                FileTag->track_total = et_track_number_to_string (atoi (string2 + 1));
+                *string2 = '\0'; // To cut string1
             }
+            FileTag->track = et_track_number_to_string (atoi (string1));
+
             g_free(string1);
 
         }
diff --git a/src/misc.c b/src/misc.c
index af7d153..284ea4e 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -506,15 +506,7 @@ void Load_Track_List_To_UI (void)
     /* Create list of tracks. */
     for (i = 1; i <= len; i++)
     {
-
-        if (NUMBER_TRACK_FORMATED)
-        {
-            text = g_strdup_printf ("%.*" G_GSIZE_FORMAT,
-                                    NUMBER_TRACK_FORMATED_SPIN_BUTTON, i);
-        } else
-        {
-            text = g_strdup_printf ("%.2" G_GSIZE_FORMAT, i);
-        }
+        text = et_track_number_to_string (i);
 
         gtk_list_store_insert_with_values (GTK_LIST_STORE (TrackEntryComboModel),
                                            NULL, G_MAXINT, MISC_COMBO_TEXT,
@@ -3718,3 +3710,12 @@ et_playlist_on_response (GtkDialog *dialog, gint response_id,
             g_assert_not_reached ();
     }
 }
+
+gchar *
+et_track_number_to_string (const guint track_number)
+{
+    return NUMBER_TRACK_FORMATED ? g_strdup_printf ("%.*d",
+                                                    NUMBER_TRACK_FORMATED_SPIN_BUTTON,
+                                                    track_number)
+                                 : g_strdup_printf ("%d", track_number);
+}
diff --git a/src/misc.h b/src/misc.h
index 10ae339..afc6016 100644
--- a/src/misc.h
+++ b/src/misc.h
@@ -109,5 +109,6 @@ void Search_File_Window_Apply_Changes (void);
 void Open_Load_Filename_Window          (void);
 void Load_Filename_Window_Apply_Changes (void);
 
+gchar * et_track_number_to_string (const guint track_number);
 
 #endif /* __MISC_H__ */
diff --git a/src/mp4_tag.c b/src/mp4_tag.c
index 48f55f3..843a6ea 100644
--- a/src/mp4_tag.c
+++ b/src/mp4_tag.c
@@ -120,7 +120,7 @@ gboolean Mp4tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
     track = taglib_tag_track(tag);
 
     if (track != 0)
-        FileTag->track = NUMBER_TRACK_FORMATED ? 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,(gint)track) : g_strdup_printf("%d",(gint)track);
+        FileTag->track = et_track_number_to_string (track);
     /* TODO: No total track support in the TagLib C API! */
 
     /*********
diff --git a/src/ogg_tag.c b/src/ogg_tag.c
index 39511e7..a206683 100644
--- a/src/ogg_tag.c
+++ b/src/ogg_tag.c
@@ -332,33 +332,19 @@ ogg_tag_read_file_tag (gchar *filename, File_Tag *FileTag, GError **error)
      *************************/
     if ( (string = vorbis_comment_query(vc,"TRACKNUMBER",0)) != NULL && g_utf8_strlen(string, -1) > 0 )
     {
-        if (NUMBER_TRACK_FORMATED)
+        /* Check if TRACKTOTAL used, else takes it in TRACKNUMBER. */
+        if ((string1 = vorbis_comment_query (vc, "TRACKTOTAL", 0)) != NULL
+            && g_utf8_strlen (string1, -1) > 0)
         {
-            // Ckeck if TRACKTOTAL used, else takes it in TRACKNUMBER
-            if ( (string1 = vorbis_comment_query(vc,"TRACKTOTAL",0)) != NULL && g_utf8_strlen(string1, -1) > 
0 )
-            {
-                FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1));
-            }else
-            if ( (string1 = g_utf8_strchr(string, -1, '/')) )
-            {
-                FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1+1));
-                *string1 = '\0';
-            }
-            FileTag->track = g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string));
-        }else
+            FileTag->track_total = et_track_number_to_string (atoi (string1));
+        }
+        else if ((string1 = g_utf8_strchr (string, -1, '/')))
         {
-            // Ckeck if TRACKTOTAL used, else takes it in TRACKNUMBER
-            if ( (string1 = vorbis_comment_query(vc,"TRACKTOTAL",0)) != NULL && g_utf8_strlen(string1, -1) > 
0 )
-            {
-                FileTag->track_total = 
g_strdup_printf("%.*d",NUMBER_TRACK_FORMATED_SPIN_BUTTON,atoi(string1));
-            }else
-            if ( (string1 = g_utf8_strchr(string, -1, '/')) )
-            {
-                FileTag->track_total = g_strdup(string1+1);
-                *string1 = '\0';
-            }
-            FileTag->track = g_strdup(string);
+            FileTag->track_total = et_track_number_to_string (atoi (string1
+                                                                    + 1));
+            *string1 = '\0';
         }
+        FileTag->track = g_strdup (string);
     }
 
     /*********
diff --git a/src/wavpack_tag.c b/src/wavpack_tag.c
index 230e6cd..977e14f 100644
--- a/src/wavpack_tag.c
+++ b/src/wavpack_tag.c
@@ -37,6 +37,7 @@
 #include "picture.h"
 //#include "setting.h"
 #include "charset.h"
+#include "misc.h"
 #include "wavpack_tag.h"
 
 
@@ -169,11 +170,13 @@ gboolean Wavpack_Tag_Read_File_Tag (gchar *filename, File_Tag *FileTag)
         field2++;
     }
 
-    if ( field2 && FileTag->track_total == NULL ) {
-        FileTag->track_total = Try_To_Validate_Utf8_String(field2);
+    if (field2 && FileTag->track_total == NULL)
+    {
+        FileTag->track_total = et_track_number_to_string (atoi (Try_To_Validate_Utf8_String (field2)));
     }
-    if ( length > 0 && FileTag->track == NULL ) {
-        FileTag->track = Try_To_Validate_Utf8_String(field);
+    if (length > 0 && FileTag->track == NULL)
+    {
+        FileTag->track = et_track_number_to_string (atoi (Try_To_Validate_Utf8_String (field)));
     }
 
     g_free (field);


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