#include "maemo/modest-maemo-global-settings-dialog.h"
#include <modest-hildon-includes.h>
-
+#include <osso-helplib.h>
#include <dbus_api/modest-dbus-callbacks.h>
#include <maemo/modest-osso-autosave-callbacks.h>
#include <libosso.h>
#include <gtk/gtkmain.h>
#include <string.h>
+
static osso_context_t *osso_context = NULL;
static void
on_modest_conf_update_interval_changed (ModestConf* self, const gchar *key,
ModestConfEvent event, gpointer user_data)
{
- const guint update_interval_minutes =
- modest_conf_get_int (self, MODEST_CONF_UPDATE_INTERVAL, NULL);
- modest_platform_set_update_interval (update_interval_minutes);
+ if (strcmp (key, MODEST_CONF_UPDATE_INTERVAL) == 0) {
+ const guint update_interval_minutes =
+ modest_conf_get_int (self, MODEST_CONF_UPDATE_INTERVAL, NULL);
+ modest_platform_set_update_interval (update_interval_minutes);
+ }
}
gboolean
modest_platform_init (void)
{
- osso_hw_state_t hw_state = { 0 };
+ osso_hw_state_t hw_state = { 0 };
+ DBusConnection *con;
osso_context =
osso_initialize(PACKAGE,PACKAGE_VERSION,
FALSE, NULL);
return FALSE;
}
+ if ((con = osso_get_dbus_connection (osso_context)) == NULL) {
+ g_printerr ("Could not get dbus connection\n");
+ return FALSE;
+
+ }
+
+ if (!dbus_connection_add_filter (con,
+ modest_dbus_req_filter,
+ NULL,
+ NULL)) {
+
+ g_printerr ("Could not add dbus filter\n");
+ return FALSE;
+ }
+
/* Register our D-Bus callbacks, via the osso API: */
osso_return_t result = osso_rpc_set_cb_f(osso_context,
MODEST_DBUS_SERVICE,
NULL);
/* Get the initial update interval from gconf: */
- on_modest_conf_update_interval_changed(conf, NULL,
+ on_modest_conf_update_interval_changed(conf, MODEST_CONF_UPDATE_INTERVAL,
MODEST_CONF_EVENT_KEY_CHANGED, NULL);
return TRUE;
return octet_stream;
for (i = 0; i != G_N_ELEMENTS(mime_map); ++i) {
- if (g_ascii_strcasecmp (mime_map[i][0], ext + 1)) /* +1: ignore '.'*/
+ if (!g_ascii_strcasecmp (mime_map[i][0], ext + 1)) /* +1: ignore '.'*/
return mime_map[i][1];
}
return octet_stream;
g_return_val_if_fail (name || mime_type, NULL);
- if (!mime_type || g_ascii_strcasecmp (mime_type, "application/octet-stream"))
+ if (!mime_type || !g_ascii_strcasecmp (mime_type, "application/octet-stream"))
mime_str = g_string_new (guess_mime_type_from_name(name));
else {
mime_str = g_string_new (mime_type);
}
gboolean
-modest_platform_activate_file (const gchar *path)
+modest_platform_activate_file (const gchar *path, const gchar *mime_type)
{
gint result;
DBusConnection *con;
gchar *uri_path = NULL;
+ GString *mime_str = NULL;
+
+ if (!mime_type || !g_ascii_strcasecmp (mime_type, "application/octet-stream"))
+ mime_str = g_string_new (guess_mime_type_from_name(path));
+ else {
+ mime_str = g_string_new (mime_type);
+ g_string_ascii_down (mime_str);
+ }
uri_path = g_strconcat ("file://", path, NULL);
con = osso_get_dbus_connection (osso_context);
#ifdef MODEST_HILDON_VERSION_0
- result = osso_mime_open_file (con, uri_path);
+ result = osso_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
+ g_string_free (mime_str, TRUE);
if (result != 1)
hildon_banner_show_information (NULL, NULL, _("mcen_ni_noregistered_viewer"));
return result != 1;
#else
- result = hildon_mime_open_file (con, uri_path);
+ result = hildon_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
+ g_string_free (mime_str, TRUE);
if (result != 1)
hildon_banner_show_information (NULL, NULL, _("mcen_ni_noregistered_viewer"));
{
ModestHeaderView *header_view = NULL;
GList *cols = NULL;
- GList *tmp = NULL;
GtkSortType sort_type;
gint sort_key;
gint default_key = 0;
gint result;
+ gboolean outgoing = FALSE;
/* Get header window */
if (MODEST_IS_MAIN_WINDOW (parent_window)) {
/* Add sorting keys */
cols = modest_header_view_get_columns (header_view);
if (cols == NULL) return;
- int num_cols = g_list_length(cols);
- int sort_ids[num_cols];
- int sort_model_ids[num_cols];
- GtkTreeViewColumn *sort_cols[num_cols];
- for (tmp=cols; tmp; tmp=tmp->next) {
- gint col_id = GPOINTER_TO_INT (g_object_get_data(G_OBJECT(tmp->data), MODEST_HEADER_VIEW_COLUMN));
- switch (col_id) {
- case MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG:
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_attachment"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_HEADER_FLAG_ATTACHMENTS;
- sort_cols[sort_key] = tmp->data;
-
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_priority"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_HEADER_FLAG_PRIORITY;
- sort_cols[sort_key] = tmp->data;
- break;
- case MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT:
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_sender_recipient"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN;
- sort_cols[sort_key] = tmp->data;
-
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_subject"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN;
- sort_cols[sort_key] = tmp->data;
- break;
- case MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN:
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_sender_recipient"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN;
- sort_cols[sort_key] = tmp->data;
-
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_subject"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN;
- sort_cols[sort_key] = tmp->data;
- break;
- case MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE:
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_date"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN,
- sort_cols[sort_key] = tmp->data;
- default_key = sort_key;
- break;
- case MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE:
- sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_date"));
- sort_ids[sort_key] = col_id;
- sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN,
- sort_cols[sort_key] = tmp->data;
- default_key = sort_key;
- break;
- default:
- g_printerr ("modest: column (id: %i) not valid", col_id);
- goto frees;
- }
+ int sort_model_ids[6];
+ int sort_ids[6];
+
+ outgoing = (GPOINTER_TO_INT (g_object_get_data(G_OBJECT(cols->data), MODEST_HEADER_VIEW_COLUMN))==
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT);
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_sender_recipient"));
+ if (outgoing) {
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN;
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT;
+ } else {
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN;
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN;
}
-
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_date"));
+ if (outgoing) {
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN;
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE;
+ } else {
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN;
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE;
+ }
+ default_key = sort_key;
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_subject"));
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN;
+ if (outgoing)
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT;
+ else
+ sort_ids[sort_key] = MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN;
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_attachment"));
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN;
+ sort_ids[sort_key] = TNY_HEADER_FLAG_ATTACHMENTS;
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_size"));
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_MESSAGE_SIZE_COLUMN;
+ sort_ids[sort_key] = 0;
+
+ sort_key = hildon_sort_dialog_add_sort_key (dialog, _("mcen_li_sort_priority"));
+ sort_model_ids[sort_key] = TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN;
+ sort_ids[sort_key] = TNY_HEADER_FLAG_PRIORITY;
+
/* Launch dialogs */
hildon_sort_dialog_set_sort_key (dialog, default_key);
hildon_sort_dialog_set_sort_order (dialog, GTK_SORT_DESCENDING);
if (result == GTK_RESPONSE_OK) {
sort_key = hildon_sort_dialog_get_sort_key (dialog);
sort_type = hildon_sort_dialog_get_sort_order (dialog);
- if (sort_ids[sort_key] == MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG)
- g_object_set_data(G_OBJECT(sort_cols[sort_key]),
- MODEST_HEADER_VIEW_FLAG_SORT,
- GINT_TO_POINTER(sort_model_ids[sort_key]));
-
- else
- gtk_tree_view_column_set_sort_column_id (sort_cols[sort_key], sort_model_ids[sort_key]);
-
- modest_header_view_sort_by_column_id (header_view, sort_ids[sort_key], sort_type);
+ if (sort_model_ids[sort_key] == TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN) {
+ g_object_set_data (G_OBJECT(cols->data), MODEST_HEADER_VIEW_FLAG_SORT,
+ GINT_TO_POINTER (sort_ids[sort_key]));
+ /* This is a hack to make it resort rows always when flag fields are
+ * selected. If we do not do this, changing sort field from priority to
+ * attachments does not work */
+ modest_header_view_sort_by_column_id (header_view, 0, sort_type);
+ } else {
+ gtk_tree_view_column_set_sort_column_id (GTK_TREE_VIEW_COLUMN (cols->data),
+ sort_model_ids[sort_key]);
+ }
+
+ modest_header_view_sort_by_column_id (header_view, sort_model_ids[sort_key], sort_type);
+ gtk_tree_sortable_sort_column_changed (GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view))));
}
/* free */
- frees:
g_list_free(cols);
}
if (tny_device_is_online (device))
return TRUE;
- /* TODO: Block on the result: */
- gboolean request_sent = tny_maemo_conic_device_connect (TNY_MAEMO_CONIC_DEVICE (device), NULL);
- if (!request_sent)
- return FALSE;
-
- return TRUE;
+ /* This blocks on the result: */
+ return tny_maemo_conic_device_connect (TNY_MAEMO_CONIC_DEVICE (device), NULL);
}
void
/* TODO: update the application icon in the task navigator */
g_print ("--------------- NEW MESSAGE ARRIVED ---------------\n");
}
+
+
+void
+modest_platform_show_help (GtkWindow *parent_window,
+ const gchar *help_id)
+{
+ osso_return_t result;
+
+ g_return_if_fail (help_id);
+ g_return_if_fail (osso_context);
+
+ /* Show help */
+#ifdef MODEST_HILDON_VERSION_0
+ result = ossohelp_show (osso_context, help_id, OSSO_HELP_SHOW_DIALOG);
+#else
+ result = hildon_help_show (osso_context, help_id, OSSO_HELP_SHOW_DIALOG);
+#endif
+
+ if (result != OSSO_OK) {
+ gchar *error_msg;
+ error_msg = g_strdup_printf ("FIXME The help topic %s could not be found", help_id);
+ hildon_banner_show_information (GTK_WIDGET (parent_window),
+ NULL,
+ error_msg);
+ g_free (error_msg);
+ }
+}
+
+void
+modest_platform_show_search_messages (GtkWindow *parent_window)
+{
+ osso_return_t result = OSSO_ERROR;
+
+ result = osso_rpc_run_with_defaults (osso_context, "osso_global_search", "search_email", NULL, DBUS_TYPE_INVALID);
+
+ if (result != OSSO_OK) {
+ /* TODO: warning about error showing dialog */
+ }
+}