aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
authorPierre-Luc Beaudoin <pierre-luc@pierlux.com>2009-05-27 03:38:32 +0800
committerPierre-Luc Beaudoin <pierre-luc@pierlux.com>2009-05-28 00:52:09 +0800
commitc40737394bff5c27daea7e4ee08f240224475904 (patch)
tree23b00052be64cd0601148b67c41a59e96e44648b /libempathy
parentc734c5e2451582a52596e44f96e617ee346b6598 (diff)
downloadgsoc2013-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')
-rw-r--r--libempathy/empathy-time.c41
-rw-r--r--libempathy/empathy-time.h1
2 files changed, 42 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");
+ }
+}
diff --git a/libempathy/empathy-time.h b/libempathy/empathy-time.h
index a6737386c..2875d2f9f 100644
--- a/libempathy/empathy-time.h
+++ b/libempathy/empathy-time.h
@@ -40,6 +40,7 @@ gchar *empathy_time_to_string_utc (time_t t,
const gchar *format);
gchar *empathy_time_to_string_local (time_t t,
const gchar *format);
+gchar *empathy_time_to_string_relative (time_t t);
G_END_DECLS