diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2011-05-10 23:36:00 +0800 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2011-05-12 18:34:24 +0800 |
commit | e98c7a31f74356590b5093d2108f100a661cfda1 (patch) | |
tree | 907a589292c4dffb292d0ac185fdbc13b3e0a785 | |
parent | a89cddec3e5faee08f61c1fc9ee67ccf243a0e1c (diff) | |
download | gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar.gz gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar.bz2 gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar.lz gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar.xz gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.tar.zst gsoc2013-empathy-e98c7a31f74356590b5093d2108f100a661cfda1.zip |
Add empathy_duration_to_string()
This is based on the body of empathy_time_to_string_relative(); it takes
a duration in seconds, rather than a timestamp.
-rw-r--r-- | libempathy/empathy-time.c | 64 | ||||
-rw-r--r-- | libempathy/empathy-time.h | 1 |
2 files changed, 36 insertions, 29 deletions
diff --git a/libempathy/empathy-time.c b/libempathy/empathy-time.c index f33152d97..5144fa4d8 100644 --- a/libempathy/empathy-time.c +++ b/libempathy/empathy-time.c @@ -81,6 +81,40 @@ empathy_time_to_string_local (gint64 t, return result; } +gchar * +empathy_duration_to_string (guint seconds) +{ + if (seconds < 60) { + return g_strdup_printf (ngettext ("%d second ago", + "%d seconds ago", seconds), seconds); + } + else if (seconds < (60 * 60)) { + seconds /= 60; + return g_strdup_printf (ngettext ("%d minute ago", + "%d minutes ago", seconds), seconds); + } + else if (seconds < (60 * 60 * 24)) { + seconds /= 60 * 60; + return g_strdup_printf (ngettext ("%d hour ago", + "%d hours ago", seconds), seconds); + } + else if (seconds < (60 * 60 * 24 * 7)) { + seconds /= 60 * 60 * 24; + return g_strdup_printf (ngettext ("%d day ago", + "%d days ago", seconds), seconds); + } + else if (seconds < (60 * 60 * 24 * 30)) { + seconds /= 60 * 60 * 24 * 7; + return g_strdup_printf (ngettext ("%d week ago", + "%d weeks ago", seconds), seconds); + } + else { + seconds /= 60 * 60 * 24 * 30; + return g_strdup_printf (ngettext ("%d month ago", + "%d months ago", seconds), seconds); + } +} + gchar * empathy_time_to_string_relative (gint64 t) { @@ -96,35 +130,7 @@ empathy_time_to_string_relative (gint64 t) seconds = delta / G_TIME_SPAN_SECOND; if (seconds > 0) { - if (seconds < 60) { - result = g_strdup_printf (ngettext ("%d second ago", - "%d seconds ago", seconds), seconds); - } - else if (seconds < (60 * 60)) { - seconds /= 60; - result = g_strdup_printf (ngettext ("%d minute ago", - "%d minutes ago", seconds), seconds); - } - else if (seconds < (60 * 60 * 24)) { - seconds /= 60 * 60; - result = g_strdup_printf (ngettext ("%d hour ago", - "%d hours ago", seconds), seconds); - } - else if (seconds < (60 * 60 * 24 * 7)) { - seconds /= 60 * 60 * 24; - result = g_strdup_printf (ngettext ("%d day ago", - "%d days ago", seconds), seconds); - } - else if (seconds < (60 * 60 * 24 * 30)) { - seconds /= 60 * 60 * 24 * 7; - result = g_strdup_printf (ngettext ("%d week ago", - "%d weeks ago", seconds), seconds); - } - else { - seconds /= 60 * 60 * 24 * 30; - result = g_strdup_printf (ngettext ("%d month ago", - "%d months ago", seconds), seconds); - } + result = empathy_duration_to_string (seconds); } else { result = g_strdup (_("in the future")); diff --git a/libempathy/empathy-time.h b/libempathy/empathy-time.h index 7fac48221..3a22adeee 100644 --- a/libempathy/empathy-time.h +++ b/libempathy/empathy-time.h @@ -45,6 +45,7 @@ gchar *empathy_time_to_string_utc (gint64 t, gchar *empathy_time_to_string_local (gint64 t, const gchar *format); gchar *empathy_time_to_string_relative (gint64 t); +gchar *empathy_duration_to_string (guint seconds); G_END_DECLS |