#include "modest-text-utils.h"
#ifdef MODEST_USE_LIBTIME
#include <clockd/libtime.h>
+#include <libosso.h>
+#include <modest-platform.h>
#endif
typedef enum {
#endif
};
+/* We need this very nasty stuff because the call to
+ osso_time_set_notification_cb cannot be reverted and thus the
+ handler will be called always even though we try to set another
+ one */
+#ifdef MODEST_USE_LIBTIME
+static ModestDatetimeFormatter *global_self = NULL;
+#endif
+
#define MODEST_DATETIME_FORMATTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \
MODEST_TYPE_DATETIME_FORMATTER, \
ModestDatetimeFormatterPrivate))
}
#endif
+#ifdef MODEST_USE_LIBTIME
+static void
+time_changed_cb (gpointer userdata)
+{
+ if (global_self) {
+ time_get_synced ();
+ g_signal_emit (global_self, signals[FORMAT_CHANGED_SIGNAL], 0);
+ }
+}
+#endif
+
static void
init_format (ModestDatetimeFormatter *obj)
{
g_warning ("Error listening to time format in gconf %s", err->message);
g_error_free (err);
}
+
update_format (obj);
#endif
+
+#ifdef MODEST_USE_LIBTIME
+ if (OSSO_OK == osso_time_set_notification_cb (modest_platform_get_osso_context (),
+ time_changed_cb,
+ NULL))
+ global_self = obj;
+ time_get_synced ();
+#endif
+
}
static void
priv->gconf_handler = 0;
gconf_client_remove_dir (gconf, HILDON2_GCONF_FORMAT_DIR,
NULL);
+
+ /* Disconnect notification */
+#ifdef MODEST_USE_LIBTIME
+ if (OSSO_OK != osso_time_set_notification_cb (modest_platform_get_osso_context (),
+ NULL, NULL))
+ global_self = NULL;
+#endif
#endif
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
switch (priv->current_format) {
case DATETIME_FORMAT_12H:
case DATETIME_FORMAT_24H:
- format_string = _HL("wdgt_va_date");
+ format_string = _HL_DATE;
break;
case DATETIME_FORMAT_LOCALE:
format_string = "%x";
switch (priv->current_format) {
case DATETIME_FORMAT_12H:
- format_string = is_pm?_HL("wdgt_va_12h_time_pm"):_HL("wdgt_va_12h_time_am");
+ format_string = is_pm?_HL_12H_TIME_PM:_HL_12H_TIME_AM;
break;
case DATETIME_FORMAT_24H:
- format_string = _HL("wdgt_va_24h_time");
+ format_string = _HL_24H_TIME;
break;
case DATETIME_FORMAT_LOCALE:
format_string = "%X";