[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdeextragear-1/amarok/src
From:       Stefan Siegel <kde () sdas ! de>
Date:       2005-02-28 23:00:59
Message-ID: 20050228230059.1656316F7D () office ! kde ! org
[Download RAW message or body]

CVS commit by siegel: 

verboseTimeSince() again, this version doesn't return "... months ago" but the month \
                and the year, so you don't need to do the maths ;-)
CCMAIL: amarok-devel@lists.sf.net


  M +25 -41    contextbrowser.cpp   1.392


--- kdeextragear-1/amarok/src/contextbrowser.cpp  #1.391:1.392
@@ -27,4 +27,5 @@
 
 #include <kapplication.h> //kapp
+#include <kcalendarsystem.h>  // for verboseTimeSince()
 #include <kfiledialog.h>
 #include <kglobal.h>
@@ -530,49 +531,32 @@ static QString
 verboseTimeSince( const QDateTime &datetime )
 {
-    const QDate date = datetime.date();
-    const QDate now  = QDate::currentDate();
-    if( date > now )
-        return i18n( "The future" );
+    const QDateTime now = QDateTime::currentDateTime();
+    const int datediff = datetime.daysTo( now );
 
-    if( date.year() == now.year() ) {
-        if( date.month() == now.month() ) {
-            if( date.day() == now.day() ) {
-                //the date is today, let's get more resolution
-                const QTime time = datetime.time();
-                const QTime now  = QTime::currentTime();
-                if( time > now )
-                    return i18n( "The future" );
+    if( datediff >= 6*7 /*six weeks*/ ) {  // return absolute month/year
+        const KCalendarSystem *cal = KGlobal::locale()->calendar();
+        const QDate date = datetime.date();
+        return i18n( "monthname year", "%1 %2" ).arg( cal->monthName(date), \
cal->yearString(date, false) ); +    }
 
-                int
-                minutes  = now.hour() - time.hour();
-                minutes *= 60;
-                minutes += QABS(now.minute() - time.minute());
+    if( datediff >= 7 )  // return difference in weeks
+        return i18n( "One week ago", "%n weeks ago", (datediff+3)/7 );
 
-                if( minutes < 90 )
-                    return i18n( "Within the last minute", "%n minutes ago", minutes \
                == 0 ? 1 : minutes );
-                else
-                    return i18n( "Within the last hour", "%n hours ago", now.hour() \
                - time.hour() );
-            }
-            else
-                /*continue to days calculation section*/;
-        }
+    const int timediff = datetime.secsTo( now );
 
-        const int days = date.daysTo( now );
+    if( timediff >= 24*60*60 /*24 hours*/ )  // return difference in days
+        return datediff == 1 ?
+                i18n( "Yesterday" ) :
+                i18n( "One day ago", "%n days ago", (timediff+12*60*60)/(24*60*60) \
);  
-        if ( days > 28 )
-            return i18n( "Last month", "%n months ago", now.month() - date.month() \
                );
-        else if( days < 7 )
-            return i18n( "Yesterday", "%n days ago", days );
-        else
-            return i18n( "Last week", "%n weeks ago", days / 7 );
-    }
+    if( timediff >= 90*60 /*90 minutes*/ )  // return difference in hours
+        return i18n( "One hour ago", "%n hours ago", (timediff+30*60)/(60*60) );
 
-    // it was played last year, but that could still be yesterday
-    //TODO it could still be yesterday, this whole function needs adaption
+    if( timediff >= 0 )  // return difference in minutes
+        return timediff/60 ?
+                i18n( "One minute ago", "%n minutes ago", (timediff+30)/60 ) :
+                i18n( "Within the last minute" );
 
-    if( now.year() - date.year() == 1 && QABS(now.month() - date.month()) < 7 )
-        return i18n( "Last month", "%n months ago", now.month() - date.month() );
-    else
-        return i18n( "Last year", "%n years ago", now.year() - date.year() );
+    return i18n( "The future" );
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic