messages implementation.
[profile/ivi/lemolo.git] / utils / util.c
index 9b8fbe7..7b72681 100644 (file)
@@ -73,23 +73,21 @@ char *date_format(time_t date)
 
        if (dt < 30)
                r = asprintf(&buf, "Just now");
-       else if (dt < (MINUTE + 30))
+       else if (dt < (MINUTE * 2))
                r = asprintf(&buf, "One minute ago");
-       else if (dt < (HOUR + 100))
-               r = asprintf(&buf, "%d minutes ago", (int)dt/60);
+       else if (dt < (HOUR * 2))
+               r = asprintf(&buf, "%dmin ago", (int)dt/60);
        else if (dt < (HOUR * 4))
-               r = asprintf(&buf, "%d hours ago", (int)dt/3600);
+               r = asprintf(&buf, "%dh ago", (int)dt/3600);
        else if (dt <= DAY) {
-               struct tm *f_time = gmtime(&date);
-               EINA_SAFETY_ON_NULL_GOTO(f_time, err_gmtime);
+               struct tm *f_time = localtime(&date);
                r = asprintf(&buf,  "%02d:%02d", f_time->tm_hour,
                                f_time->tm_min);
        } else if (dt < WEEK) {
                char tmp[256];
                struct tm *tm = localtime(&date);
                strftime(tmp, sizeof(tmp), "%A", tm);
-               int days = dt / DAY;
-               r = asprintf(&buf, "%s, %d days ago", tmp, days);
+               r = asprintf(&buf, "%s", tmp);
        } else {
                char tmp[256];
                struct tm *tm = localtime(&date);
@@ -101,9 +99,35 @@ char *date_format(time_t date)
                buf = strdup("");
 
        return buf;
+}
+
+char *date_short_format(time_t date)
+{
+       time_t now = time(NULL);
+       double dt = difftime(now, date);
+       char *buf;
+       int r;
+
+       if (dt <= DAY) {
+               struct tm *f_time = localtime(&date);
+               r = asprintf(&buf,  "%02d:%02d", f_time->tm_hour,
+                               f_time->tm_min);
+       } else if (dt < WEEK) {
+               char tmp[256];
+               struct tm *tm = localtime(&date);
+               strftime(tmp, sizeof(tmp), "%A", tm);
+               r = asprintf(&buf, "%s", tmp);
+       } else {
+               char tmp[256];
+               struct tm *tm = localtime(&date);
+               strftime(tmp, sizeof(tmp), "%x", tm);
+               r = asprintf(&buf, "%s", tmp);
+       }
+
+       if (r < 0)
+               buf = strdup("");
 
-err_gmtime:
-       return strdup("");
+       return buf;
 }
 
 Evas_Object *picture_icon_get(Evas_Object *parent, const char *picture)