Blob Blame History Raw
Index: src/display_spl.c
===================================================================
--- src/display_spl.c	(revision 1797)
+++ src/display_spl.c	(revision 1798)
@@ -91,7 +91,7 @@
     { ITDB_SPLFIELD_DATE_MODIFIED,  N_("Date modified") },
     { ITDB_SPLFIELD_TRACKNUMBER,    N_("Track number") },
     { ITDB_SPLFIELD_SIZE,           N_("Size") },
-    { ITDB_SPLFIELD_TIME,           N_("Time") },
+    { ITDB_SPLFIELD_TIME,           N_("Play time") },
     { ITDB_SPLFIELD_COMMENT,        N_("Comment") },
     { ITDB_SPLFIELD_DATE_ADDED,     N_("Date added") },
     { ITDB_SPLFIELD_COMPOSER,       N_("Composer") },
@@ -635,10 +635,17 @@
     switch (type)
     {
     case spl_ET_FROMVALUE:
-	splr->fromvalue = atol (str);
-	if (splr->field == ITDB_SPLFIELD_RATING)
+	switch (splr->field)
 	{
-	    splr->fromvalue *= ITDB_RATING_STEP;
+	case ITDB_SPLFIELD_RATING:
+	    splr->fromvalue = ITDB_RATING_STEP * atol (str);
+	    break;
+	case ITDB_SPLFIELD_TIME:
+	    splr->fromvalue = 1000 * strtod (str, NULL);
+	    break;
+	default:
+	    splr->fromvalue = atol (str);
+	    break;
 	}
 	break;
     case spl_ET_FROMVALUE_DATE:
@@ -650,10 +657,17 @@
 	splr->fromdate = atol (str);
 	break;
     case spl_ET_TOVALUE:
-	splr->tovalue = atol (str);
-	if (splr->field == ITDB_SPLFIELD_RATING)
+	switch (splr->field)
 	{
-	    splr->tovalue *= ITDB_RATING_STEP;
+	case ITDB_SPLFIELD_RATING:
+	    splr->tovalue = ITDB_RATING_STEP * atol (str);
+	    break;
+	case ITDB_SPLFIELD_TIME:
+	    splr->tovalue = 1000 * strtod (str, NULL);
+	    break;
+	default:
+	    splr->tovalue = atol (str);
+	    break;
 	}
 	break;
     case spl_ET_TOVALUE_DATE:
@@ -1004,22 +1018,27 @@
 			       enum entrytype et)
 {
     gchar *strp = str;
-    gint stepsize = 1; /* for FROMVALUE/TOVALUE (20 for rating) */
 
     g_return_val_if_fail (str, NULL);
     g_return_val_if_fail (splr, NULL);
 
-    if (splr->field == ITDB_SPLFIELD_RATING)
-    {
-	stepsize = ITDB_RATING_STEP;
-    }
-
     switch (et)
     {
     case spl_ET_FROMVALUE:
 	if (splr->fromvalue == ITDB_SPL_DATE_IDENTIFIER)
 	    splr->fromvalue = 0;
-	snprintf (str, WNLEN, "%lld", (long long int)(splr->fromvalue / stepsize));
+	switch (splr->field)
+	{
+	case ITDB_SPLFIELD_RATING:
+	    snprintf (str, WNLEN, "%lld", (long long int)(splr->fromvalue / ITDB_RATING_STEP));
+	    break;
+	case ITDB_SPLFIELD_TIME:
+	    snprintf (str, WNLEN, "%.10g", ((gdouble)splr->fromvalue/1000));
+	    break;
+	default:
+	    snprintf (str, WNLEN, "%lld", (long long int)(splr->fromvalue));
+	    break;
+	}
 	break;
     case spl_ET_FROMVALUE_DATE:
 	if (splr->fromvalue == ITDB_SPL_DATE_IDENTIFIER)
@@ -1032,7 +1051,18 @@
     case spl_ET_TOVALUE:
 	if (splr->tovalue == ITDB_SPL_DATE_IDENTIFIER)
 	    splr->tovalue = 0;
-	snprintf (str, WNLEN, "%lld",  (long long int)(splr->tovalue / stepsize));
+	switch (splr->field )
+	{
+	case ITDB_SPLFIELD_RATING:
+	    snprintf (str, WNLEN, "%lld",  (long long int)(splr->tovalue / ITDB_RATING_STEP));
+	    break;
+	case ITDB_SPLFIELD_TIME:
+	    snprintf (str, WNLEN, "%.10g", ((gdouble)splr->tovalue/1000));
+	    break;
+	default:
+	    snprintf (str, WNLEN, "%lld", (long long int)(splr->tovalue));
+	    break;
+	}
 	break;
     case spl_ET_TOVALUE_DATE:
 	if (splr->tovalue == ITDB_SPL_DATE_IDENTIFIER)