diff options
author | Pierre-Luc Beaudoin <pierre-luc@pierlux.com> | 2009-05-27 03:38:32 +0800 |
---|---|---|
committer | Pierre-Luc Beaudoin <pierre-luc@pierlux.com> | 2009-05-28 00:52:09 +0800 |
commit | c40737394bff5c27daea7e4ee08f240224475904 (patch) | |
tree | 23b00052be64cd0601148b67c41a59e96e44648b /libempathy/empathy-time.c | |
parent | c734c5e2451582a52596e44f96e617ee346b6598 (diff) | |
download | gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar.gz gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar.bz2 gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar.lz gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar.xz gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.tar.zst gsoc2013-empathy-c40737394bff5c27daea7e4ee08f240224475904.zip |
Display relative time to user
The time of the geolocation update is displayed relatively to
current time (1 min ago, 3 hours ago).
The function just prints ("in the future") for debugging purpuses
for time in the future.
Diffstat (limited to 'libempathy/empathy-time.c')
-rw-r--r-- | libempathy/empathy-time.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libempathy/empathy-time.c b/libempathy/empathy-time.c index 15b5c30a4..a482f4dc3 100644 --- a/libempathy/empathy-time.c +++ b/libempathy/empathy-time.c @@ -25,6 +25,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <glib/gi18n.h> #include "empathy-time.h" @@ -122,3 +123,43 @@ empathy_time_to_string_local (time_t t, return g_strdup (stamp); } +gchar * +empathy_time_to_string_relative (time_t then) +{ + time_t now; + gint seconds; + + now = time (NULL); + seconds = now - then; + + if (seconds > 0) { + if (seconds < 60) { + 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 { + seconds /= 60 * 60 * 24 * 30; + return g_strdup_printf (ngettext ("%d month ago", + "%d months ago", seconds), seconds); + } + } + else { + return g_strdup ("in the future"); + } +} |