X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-platform.c;h=14d6f329250f7e8a74e494e5cffb951294961170;hb=b4322b2797a54b300ea6601e65623d8a03584b23;hp=b7c3df0f626b24c11d418de89d77e9d67e3bc6b3;hpb=6b2f3c3e4375a5ca9e6c96724d0b7e76db06b4e7;p=modest diff --git a/src/hildon2/modest-platform.c b/src/hildon2/modest-platform.c index b7c3df0..14d6f32 100644 --- a/src/hildon2/modest-platform.c +++ b/src/hildon2/modest-platform.c @@ -32,8 +32,8 @@ #include #include +#include #include -#include #include #include "modest-hildon2-global-settings-dialog.h" #include "modest-widget-memory.h" @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -64,10 +63,11 @@ #include #include #include "hildon2/modest-hildon2-details-dialog.h" -#include "hildon2/modest-hildon2-window-mgr.h" +#include "widgets/modest-window-mgr.h" +#include "widgets/modest-msg-view-window.h" #ifdef MODEST_USE_PROFILE -#include -#include +#include +#include #endif #include #include @@ -97,7 +97,7 @@ #define HILDON_OSSO_URI_ACTION "uri-action" #define URI_ACTION_COPY "copy:" #define MODEST_NOTIFICATION_CATEGORY "email-message" -#define MODEST_NEW_MAIL_LIGHTING_PATTERN "PatternCommunicationEmail" +#define MODEST_NEW_MAIL_LIGHTING_PATTERN "PatternChatAndEmail" #ifdef MODEST_USE_PROFILE #define PROFILE_MAIL_TONE PROFILEKEY_EMAIL_ALERT_TONE #define PROFILE_MAIL_VOLUME PROFILEKEY_EMAIL_ALERT_VOLUME @@ -139,26 +139,21 @@ on_modest_conf_update_interval_changed (ModestConf* self, static gboolean check_required_files (void) { - FILE *mcc_file = modest_utils_open_mcc_mapping_file (FALSE, NULL); + FILE *mcc_file = modest_utils_open_mcc_mapping_file (); + if (!mcc_file) { g_printerr ("modest: check for mcc file (for LANG) failed\n"); return FALSE; - } else - fclose (mcc_file); - - mcc_file = modest_utils_open_mcc_mapping_file (TRUE, NULL); - if (!mcc_file) { - g_printerr ("modest: check for mcc file (for LC_MESSAGES) failed\n"); - return FALSE; - } else + } else { fclose (mcc_file); - + } + if (access(MODEST_PROVIDER_DATA_FILE, R_OK) != 0 && access(MODEST_FALLBACK_PROVIDER_DATA_FILE, R_OK) != 0) { g_printerr ("modest: cannot find providers data\n"); return FALSE; } - + return TRUE; } @@ -213,15 +208,6 @@ modest_platform_init (int argc, char *argv[]) hw_state.shutdown_ind = TRUE; osso_hw_set_event_cb(osso_context, NULL, NULL, NULL); - /* Register osso auto-save callbacks: */ - result = osso_application_set_autosave_cb (osso_context, - modest_on_osso_application_autosave, NULL /* user_data */); - if (result != OSSO_OK) { - g_printerr ("modest: osso_application_set_autosave_cb() failed.\n"); - return FALSE; - } - - /* Make sure that the update interval is changed whenever its gconf key * is changed */ /* CAUTION: we're not using here the @@ -342,7 +328,7 @@ modest_platform_activate_uri (const gchar *uri) HildonURIAction *action; gboolean result = FALSE; GSList *actions, *iter = NULL; - + g_return_val_if_fail (uri, FALSE); if (!uri) return FALSE; @@ -350,9 +336,9 @@ modest_platform_activate_uri (const gchar *uri) /* don't try to activate file: uri's -- they might confuse the user, * and/or might have security implications */ if (!g_str_has_prefix (uri, "file:")) { - + actions = hildon_uri_get_actions_by_uri (uri, -1, NULL); - + for (iter = actions; iter; iter = g_slist_next (iter)) { action = (HildonURIAction*) iter->data; if (action && strcmp (hildon_uri_action_get_service (action), @@ -361,20 +347,20 @@ modest_platform_activate_uri (const gchar *uri) break; } } - + /* if we could not open it with email, try something else */ if (!result) - result = checked_hildon_uri_open (uri, NULL); - } - + result = checked_hildon_uri_open (uri, NULL); + } + if (!result) { ModestWindow *parent = - modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(), FALSE); + modest_window_mgr_get_current_top (modest_runtime_get_window_mgr()); hildon_banner_show_information (parent ? GTK_WIDGET(parent): NULL, NULL, _("mcen_ib_unsupported_link")); g_debug ("%s: cannot open uri '%s'", __FUNCTION__,uri); - } - + } + return result; } @@ -434,23 +420,24 @@ activate_uri_popup_item (GtkMenuItem *menu_item, /* if it's a copy thingy, the uri will look like 'copy:http://slashdot.org' */ if (g_str_has_prefix (action_name, URI_ACTION_COPY)) { GtkClipboard *clipboard = gtk_clipboard_get (GDK_NONE); - action_name += strlen(URI_ACTION_COPY); /* jump past the prefix */ + const gchar *uri = (const gchar *) popup_info->uri; - if (g_str_has_prefix (action_name, "mailto:")) /* ignore mailto: prefixes */ - action_name += strlen ("mailto:"); - - gtk_clipboard_set_text (clipboard, action_name, strlen (action_name)); - modest_platform_information_banner (NULL, NULL, _CS("ecoc_ib_edwin_copied")); + /* Special case: ignore "mailto:" prefixes */ + if (g_str_has_prefix (uri, "mailto:")) + uri = popup_info->uri + strlen ("mailto:"); + + gtk_clipboard_set_text (clipboard, uri, strlen (uri)); + modest_platform_information_banner (NULL, NULL, _CS_COPIED); return; /* we're done */ } - + /* now, the real uri-actions... */ for (node = popup_info->actions; node != NULL; node = g_slist_next (node)) { HildonURIAction *action = (HildonURIAction *) node->data; if (strcmp (action_name, hildon_uri_action_get_name (action))==0) { if (!checked_hildon_uri_open (popup_info->uri, action)) { ModestWindow *parent = - modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(), FALSE); + modest_window_mgr_get_current_top (modest_runtime_get_window_mgr()); hildon_banner_show_information (parent ? GTK_WIDGET(parent): NULL, NULL, _("mcen_ib_unsupported_link")); } @@ -459,61 +446,67 @@ activate_uri_popup_item (GtkMenuItem *menu_item, } } -gboolean +gboolean modest_platform_show_uri_popup (const gchar *uri) { - GSList *actions_list; + GSList *actions_list, *node; + GtkWidget *menu; + ModestPlatformPopupInfo *popup_info; + GtkWidget *menu_item; if (uri == NULL) return FALSE; - - actions_list = hildon_uri_get_actions_by_uri (uri, -1, NULL); - if (actions_list) { - - GtkWidget *menu = gtk_menu_new (); - ModestPlatformPopupInfo *popup_info = g_new0 (ModestPlatformPopupInfo, 1); - - /* don't add actions for file: uri's -- they might confuse the user, - * and/or might have security implications - * we still allow to copy the url though - */ - if (!g_str_has_prefix (uri, "file:")) { - - GSList *node; - popup_info->actions = actions_list; - popup_info->uri = g_strdup (uri); - - for (node = actions_list; node != NULL; node = g_slist_next (node)) { - GtkWidget *menu_item; - const gchar *action_name; - const gchar *translation_domain; - HildonURIAction *action = (HildonURIAction *) node->data; - action_name = hildon_uri_action_get_name (action); - translation_domain = hildon_uri_action_get_translation_domain (action); - menu_item = gtk_menu_item_new_with_label (dgettext(translation_domain, action_name)); - hildon_gtk_widget_set_theme_size (menu_item, MODEST_EDITABLE_SIZE); - g_object_set_data (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION, (gpointer)action_name); /* hack */ - g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (activate_uri_popup_item), - popup_info); - - if (hildon_uri_is_default_action (action, NULL)) { - gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item); - } else { - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); - } - gtk_widget_show (menu_item); - } - } + /* Create menu */ + menu = gtk_menu_new (); + popup_info = g_new0 (ModestPlatformPopupInfo, 1); + popup_info->uri = g_strdup (uri); - /* and what to do when the link is deleted */ - g_signal_connect (G_OBJECT (menu), "delete-event", G_CALLBACK (delete_uri_popup), popup_info); - gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time ()); + /* don't add actions for file: uri's -- they might confuse the user, + * and/or might have security implications + * we still allow to copy the url though + */ + if (g_str_has_prefix (uri, "file:")) + goto add_copy_link; - } else { - hildon_banner_show_information (NULL, NULL, _("mcen_ib_unsupported_link")); + actions_list = hildon_uri_get_actions_by_uri (uri, -1, NULL); + if (!actions_list) + goto add_copy_link; + + popup_info->actions = actions_list; + for (node = actions_list; node != NULL; node = g_slist_next (node)) { + const gchar *action_name; + const gchar *translation_domain; + HildonURIAction *action = (HildonURIAction *) node->data; + action_name = hildon_uri_action_get_name (action); + translation_domain = hildon_uri_action_get_translation_domain (action); + menu_item = gtk_menu_item_new_with_label (dgettext(translation_domain, action_name)); + hildon_gtk_widget_set_theme_size (menu_item, MODEST_EDITABLE_SIZE); + g_object_set_data (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION, (gpointer)action_name); /* hack */ + g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (activate_uri_popup_item), + popup_info); + + if (hildon_uri_is_default_action (action, NULL)) { + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item); + } else { + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + } + gtk_widget_show (menu_item); } + add_copy_link: + /* Add the "Copy link" menu option */ + menu_item = gtk_menu_item_new_with_label (_UR("uri_link_copy_link_location")); + hildon_gtk_widget_set_theme_size (menu_item, MODEST_EDITABLE_SIZE); + g_object_set_data (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION, (gpointer) URI_ACTION_COPY); + g_signal_connect (G_OBJECT (menu_item), "activate", (GCallback) activate_uri_popup_item, popup_info); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); + gtk_widget_show (menu_item); + + /* and what to do when the link is deleted */ + g_signal_connect (G_OBJECT (menu), "delete-event", G_CALLBACK (delete_uri_popup), popup_info); + gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time ()); + return TRUE; } @@ -568,7 +561,7 @@ entry_insert_text (GtkEditable *editable, /* Show WID-INF036 */ if (chars_length >= 20) { hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (data)), NULL, - _CS("ckdg_ib_maximum_characters_reached")); + _CS_MAXIMUM_CHARACTERS_REACHED); } else { if (modest_text_utils_is_forbidden_char (*text, FOLDER_NAME_FORBIDDEN_CHARS)) { /* Show an error */ @@ -576,7 +569,7 @@ entry_insert_text (GtkEditable *editable, tmp = g_strndup (folder_name_forbidden_chars, FOLDER_NAME_FORBIDDEN_CHARS_LENGTH); - msg = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), tmp); + msg = g_strdup_printf (_CS_ILLEGAL_CHARACTERS_ENTERED, tmp); hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (data)), NULL, msg); g_free (msg); @@ -584,7 +577,7 @@ entry_insert_text (GtkEditable *editable, } else { if (length >= 20) { hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (data)), NULL, - _CS("ckdg_ib_maximum_characters_reached")); + _CS_MAXIMUM_CHARACTERS_REACHED); } /* Write the text in the entry if it's valid */ g_signal_handlers_block_by_func (editable, @@ -615,7 +608,7 @@ entry_changed (GtkEditable *editable, if (g_utf8_strlen (chars,-1) >= 20) { hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (user_data)), NULL, - _CS("ckdg_ib_maximum_characters_reached")); + _CS_MAXIMUM_CHARACTERS_REACHED); } gtk_widget_set_sensitive (ok_button, modest_text_utils_validate_folder_name(chars)); @@ -667,9 +660,9 @@ on_response (GtkDialog *dialog, if (exists) { /* Show an error */ hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (dialog)), - NULL, _CS("ckdg_ib_folder_already_exists")); + NULL, _CS_FOLDER_ALREADY_EXISTS); /* Select the text */ - gtk_entry_select_region (GTK_ENTRY (entry), 0, -1); + gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1); gtk_widget_grab_focus (entry); /* Do not close the dialog */ g_signal_stop_emission_by_name (dialog, "response"); @@ -697,14 +690,14 @@ folder_chooser_dialog_run (ModestFolderView *original, { GtkWidget *folder_view; FolderChooserData userdata = {NULL, NULL}; - GtkWidget *pannable; + GtkWidget *scrollable; const gchar *visible_id = NULL; - userdata.dialog = hildon_dialog_new (); - pannable = hildon_pannable_area_new (); + userdata.dialog = gtk_dialog_new (); + scrollable = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ()); folder_view = modest_platform_create_folder_view (NULL); - gtk_window_set_title (GTK_WINDOW (userdata.dialog), _FM("ckdg_ti_change_folder")); + gtk_window_set_title (GTK_WINDOW (userdata.dialog), _FM_CHANGE_FOLDER); modest_folder_view_copy_model (MODEST_FOLDER_VIEW (original), MODEST_FOLDER_VIEW (folder_view)); @@ -737,12 +730,12 @@ folder_chooser_dialog_run (ModestFolderView *original, modest_folder_view_set_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(folder_view), visible_id); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (userdata.dialog)->vbox), pannable); - gtk_container_add (GTK_CONTAINER (pannable), folder_view); - gtk_widget_set_size_request (pannable, -1, 320); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (userdata.dialog)->vbox), scrollable); + gtk_container_add (GTK_CONTAINER (scrollable), folder_view); + gtk_widget_set_size_request (scrollable, -1, 320); gtk_widget_show (folder_view); - gtk_widget_show (pannable); + gtk_widget_show (scrollable); gtk_widget_show (userdata.dialog); g_signal_connect (G_OBJECT (folder_view), "folder-activated", G_CALLBACK (folder_chooser_activated), @@ -877,7 +870,7 @@ static gchar * get_next_folder_name (const gchar *suggested_name, TnyFolderStore *suggested_folder) { - const gchar *default_name = _FM("ckdg_va_new_folder_name_stub"); + const gchar *default_name = _FM_NEW_FOLDER_NAME_STUB; unsigned int i; gchar *real_suggested_name; @@ -892,7 +885,7 @@ get_next_folder_name (const gchar *suggested_name, real_suggested_name = g_strdup (default_name); else real_suggested_name = g_strdup_printf ("%s(%d)", - _FM("ckdg_va_new_folder_name_stub"), + _FM_NEW_FOLDER_NAME_STUB, i); exists = modest_tny_folder_has_subfolder_with_name (suggested_folder, real_suggested_name, @@ -1008,12 +1001,12 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window, GtkSizeGroup *sizegroup; ModestFolderView *folder_view; ModestWindow *folder_window; - ModestHildon2WindowMgr *window_mgr; + ModestWindowMgr *window_mgr; FolderPickerHelper *helper = NULL; GtkWidget *top_vbox, *top_align; - window_mgr = (ModestHildon2WindowMgr *) modest_runtime_get_window_mgr (); - folder_window = modest_hildon2_window_mgr_get_folder_window (window_mgr); + window_mgr = modest_runtime_get_window_mgr (); + folder_window = modest_window_mgr_get_folder_window (window_mgr); g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW (folder_window), GTK_RESPONSE_NONE); folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (folder_window)); @@ -1026,7 +1019,7 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window, dialog = gtk_dialog_new_with_buttons (dialog_title, parent_window, GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, - _FM("ckdg_bd_new_folder_dialog_ok"), + _FM_NEW_FOLDER_DIALOG_OK, GTK_RESPONSE_ACCEPT, NULL); @@ -1038,7 +1031,7 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window, if (show_name) { label_entry = gtk_label_new (label_text); - entry = hildon_entry_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); + entry = modest_toolkit_factory_create_entry (modest_runtime_get_toolkit_factory ()); gtk_entry_set_max_length (GTK_ENTRY (entry), 20); gtk_misc_set_alignment (GTK_MISC (label_entry), 0.0, 0.5); @@ -1047,16 +1040,16 @@ modest_platform_run_folder_common_dialog (GtkWindow *parent_window, if (suggested_name) gtk_entry_set_text (GTK_ENTRY (entry), suggested_name); else - gtk_entry_set_text (GTK_ENTRY (entry), _FM("ckdg_va_new_folder_name_stub")); + gtk_entry_set_text (GTK_ENTRY (entry), _FM_NEW_FOLDER_NAME_STUB); gtk_entry_set_width_chars (GTK_ENTRY (entry), MAX (g_utf8_strlen (gtk_entry_get_text (GTK_ENTRY (entry)), -1), - g_utf8_strlen (_FM("ckdg_va_new_folder_name_stub"), -1))); - gtk_entry_select_region (GTK_ENTRY (entry), 0, -1); + g_utf8_strlen (_FM_NEW_FOLDER_NAME_STUB, -1))); + gtk_editable_select_region (GTK_EDITABLE (entry), 0, -1); } if (show_parent) { - label_location = gtk_label_new (_FM("ckdg_fi_new_folder_location")); + label_location = gtk_label_new (_FM_NEW_FOLDER_LOCATION); gtk_misc_set_alignment (GTK_MISC (label_location), 0.0, 0.5); gtk_size_group_add_widget (sizegroup, label_location); @@ -1185,7 +1178,7 @@ modest_platform_run_new_folder_dialog (GtkWindow *parent_window, result = modest_platform_run_folder_common_dialog (parent_window, suggested_folder, _HL("ckdg_ti_new_folder"), - _FM("ckdg_fi_new_folder_name"), + _FM_NEW_FOLDER_NAME, real_suggested_name, TRUE, TRUE, @@ -1201,14 +1194,14 @@ modest_platform_run_new_folder_dialog (GtkWindow *parent_window, } gint -modest_platform_run_rename_folder_dialog (GtkWindow *parent_window, +modest_platform_run_rename_folder_dialog (ModestWindow *parent_window, TnyFolderStore *parent_folder, const gchar *suggested_name, gchar **folder_name) { g_return_val_if_fail (TNY_IS_FOLDER_STORE (parent_folder), GTK_RESPONSE_REJECT); - return modest_platform_run_folder_common_dialog (parent_window, + return modest_platform_run_folder_common_dialog ((GtkWindow *) gtk_widget_get_toplevel ((GtkWidget *) parent_window), parent_folder, _HL("ckdg_ti_rename_folder"), _HL("ckdg_fi_rename_name"), @@ -1546,7 +1539,7 @@ modest_platform_set_update_interval (guint minutes) * (The old maemo email-client did this, though it isn't specified in the UI spec.) * ALARM_EVENT_CONNECTED will prevent the alarm from being called in case that the device is offline */ - event->flags = ALARM_EVENT_CONNECTED; + event->flags = ALARM_EVENT_CONNECTED | ALARM_EVENT_RUN_DELAYED; alarm_cookie = alarmd_event_add (event); @@ -1602,6 +1595,10 @@ void modest_platform_on_new_headers_received (GList *URI_list, gboolean show_visual) { + /* Check if the user wants to show notifications or not */ + if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_NOTIFICATIONS, NULL)) + return; + if (g_list_length (URI_list) == 0) return; @@ -1613,6 +1610,7 @@ modest_platform_on_new_headers_received (GList *URI_list, gchar *from; TnyAccountStore *acc_store; TnyAccount *account; + gchar *acc_name; data = (ModestMsgNotificationData *) URI_list->data; @@ -1662,25 +1660,24 @@ modest_platform_on_new_headers_received (GList *URI_list, /* Set the account of the headers */ acc_store = (TnyAccountStore *) modest_runtime_get_account_store (); account = tny_account_store_find_account (acc_store, data->uri); + acc_name = NULL; if (account) { - const gchar *acc_name; - acc_name = - modest_tny_account_get_parent_modest_account_name_for_server_account (account); + acc_name = g_strdup (modest_tny_account_get_parent_modest_account_name_for_server_account (account)); notify_notification_set_hint_string(NOTIFY_NOTIFICATION (notification), "email-account", acc_name); g_object_unref (account); } - /* Play sound */ - modest_platform_play_email_tone (); if (notify_notification_show (NOTIFY_NOTIFICATION (notification), NULL)) { GSList *notifications_list = NULL; /* Get previous notifications ids */ - notifications_list = modest_conf_get_list (modest_runtime_get_conf (), - MODEST_CONF_NOTIFICATION_IDS, - MODEST_CONF_VALUE_INT, NULL); + if (acc_name) { + notifications_list = modest_account_mgr_get_list (modest_runtime_get_account_mgr (), acc_name, + MODEST_ACCOUNT_NOTIFICATION_IDS, + MODEST_CONF_VALUE_INT, FALSE); + } /* Save id in the list */ g_object_get(G_OBJECT (notification), "id", ¬if_id, NULL); @@ -1691,19 +1688,22 @@ modest_platform_on_new_headers_received (GList *URI_list, not to store the list in gconf */ /* Save the ids */ - modest_conf_set_list (modest_runtime_get_conf (), MODEST_CONF_NOTIFICATION_IDS, - notifications_list, MODEST_CONF_VALUE_INT, NULL); - + if (acc_name) + modest_account_mgr_set_list (modest_runtime_get_account_mgr (), acc_name, + MODEST_ACCOUNT_NOTIFICATION_IDS, + notifications_list, MODEST_CONF_VALUE_INT, FALSE); + g_slist_free (notifications_list); } else { g_warning ("Failed to send notification"); } + g_free (acc_name); #endif /*MODEST_HAVE_HILDON_NOTIFY*/ } void -modest_platform_remove_new_mail_notifications (gboolean only_visuals) +modest_platform_remove_new_mail_notifications (gboolean only_visuals, const gchar *acc_name) { if (only_visuals) { #ifdef MODEST_HAVE_MCE @@ -1723,9 +1723,10 @@ modest_platform_remove_new_mail_notifications (gboolean only_visuals) GSList *notif_list = NULL; /* Get previous notifications ids */ - notif_list = modest_conf_get_list (modest_runtime_get_conf (), - MODEST_CONF_NOTIFICATION_IDS, - MODEST_CONF_VALUE_INT, NULL); + notif_list = modest_account_mgr_get_list (modest_runtime_get_account_mgr (), + acc_name, + MODEST_ACCOUNT_NOTIFICATION_IDS, + MODEST_CONF_VALUE_INT, FALSE); while (notif_list) { gint notif_id; @@ -1748,10 +1749,13 @@ modest_platform_remove_new_mail_notifications (gboolean only_visuals) } /* Save the ids */ - modest_conf_set_list (modest_runtime_get_conf (), MODEST_CONF_NOTIFICATION_IDS, - notif_list, MODEST_CONF_VALUE_INT, NULL); + if (notif_list) { + modest_account_mgr_set_list (modest_runtime_get_account_mgr (), acc_name, + MODEST_ACCOUNT_NOTIFICATION_IDS, + notif_list, MODEST_CONF_VALUE_INT, FALSE); - g_slist_free (notif_list); + g_slist_free (notif_list); + } #endif /* MODEST_HAVE_HILDON_NOTIFY */ } @@ -1927,17 +1931,14 @@ on_timeout_check_account_is_online(CheckAccountIdleData* data) { gboolean stop_trying = FALSE; g_return_val_if_fail (data && data->account, FALSE); - - printf ("DEBUG: %s: tny_account_get_connection_status()==%d\n", __FUNCTION__, - tny_account_get_connection_status (data->account)); - + if (data && data->account && /* We want to wait until TNY_CONNECTION_STATUS_INIT has changed to something else, * after which the account is likely to be usable, or never likely to be usable soon: */ (tny_account_get_connection_status (data->account) != TNY_CONNECTION_STATUS_INIT) ) { data->is_online = TRUE; - + stop_trying = TRUE; } else { /* Give up if we have tried too many times: */ @@ -1948,15 +1949,15 @@ on_timeout_check_account_is_online(CheckAccountIdleData* data) ++(data->count_tries); } } - + if (stop_trying) { /* Allow the function that requested this idle callback to continue: */ if (data->loop) g_main_loop_quit (data->loop); - + if (data->account) g_object_unref (data->account); - + return FALSE; /* Don't call this again. */ } else { return TRUE; /* Call this timeout callback again. */ @@ -2129,7 +2130,7 @@ modest_platform_run_alert_dialog (const gchar* prompt, /***************/ typedef struct { - GtkWindow *parent_window; + ModestWindow *parent_window; ModestConnectedPerformer callback; TnyAccount *account; gpointer user_data; @@ -2229,7 +2230,7 @@ on_conic_device_went_online (TnyMaemoConicDevice *device, const gchar* iap_id, g } void -modest_platform_connect_and_perform (GtkWindow *parent_window, +modest_platform_connect_and_perform (ModestWindow *parent_window, gboolean force, TnyAccount *account, ModestConnectedPerformer callback, @@ -2262,7 +2263,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window, info->account = NULL; if (parent_window) - info->parent_window = (GtkWindow *) g_object_ref (parent_window); + info->parent_window = (ModestWindow *) g_object_ref (parent_window); else info->parent_window = NULL; info->user_data = user_data; @@ -2307,7 +2308,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window, info->account = TNY_ACCOUNT (g_object_ref (account)); if (parent_window) - info->parent_window = (GtkWindow *) g_object_ref (parent_window); + info->parent_window = (ModestWindow *) g_object_ref (parent_window); else info->parent_window = NULL; @@ -2340,7 +2341,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window, } void -modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window, +modest_platform_connect_if_remote_and_perform (ModestWindow *parent_window, gboolean force, TnyFolderStore *folder_store, ModestConnectedPerformer callback, @@ -2389,7 +2390,7 @@ modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window, static void src_account_connect_performer (gboolean canceled, GError *err, - GtkWindow *parent_window, + ModestWindow *parent_window, TnyAccount *src_account, gpointer user_data) { @@ -2411,13 +2412,13 @@ src_account_connect_performer (gboolean canceled, } -void -modest_platform_double_connect_and_perform (GtkWindow *parent_window, +void +modest_platform_double_connect_and_perform (ModestWindow *parent_window, gboolean force, TnyFolderStore *folder_store, DoubleConnectionInfo *connect_info) { - modest_platform_connect_if_remote_and_perform(parent_window, + modest_platform_connect_if_remote_and_perform(parent_window, force, folder_store, src_account_connect_performer, @@ -2498,7 +2499,8 @@ modest_platform_run_folder_details_dialog (GtkWindow *parent_window, GtkWidget *dialog; /* Create dialog */ - dialog = modest_hildon2_details_dialog_new_with_folder (parent_window, folder); + dialog = modest_toolkit_factory_create_details_dialog_with_folder (modest_runtime_get_toolkit_factory (), + parent_window, folder); /* Run dialog */ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), @@ -2583,7 +2585,8 @@ modest_platform_run_header_details_dialog (GtkWindow *parent_window, GtkWidget *dialog; /* Create dialog */ - dialog = modest_hildon2_details_dialog_new_with_header (parent_window, header, !async_get_size); + dialog = modest_toolkit_factory_create_details_dialog_with_header (modest_runtime_get_toolkit_factory (), + parent_window, header, !async_get_size); if (async_get_size && msg && TNY_IS_MSG (msg)) { HeaderDetailsGetSizeInfo *info; @@ -2700,7 +2703,7 @@ modest_platform_play_email_tone (void) #define MOVE_TO_DIALOG_BACK_BUTTON "back-button" #define MOVE_TO_DIALOG_ACTION_BUTTON "action-button" #define MOVE_TO_DIALOG_SHOWING_FOLDERS "showing-folders" -#define MOVE_TO_DIALOG_PANNABLE "pannable" +#define MOVE_TO_DIALOG_SCROLLABLE "scrollable" #define MOVE_TO_FOLDER_SEPARATOR "/" static void @@ -2817,13 +2820,13 @@ move_to_dialog_show_accounts (GtkWidget *dialog) { GtkWidget *back_button; GtkWidget *folder_view; - GtkWidget *pannable; + GtkWidget *scrollable; GtkWidget *action_button; back_button = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_BACK_BUTTON)); action_button = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_ACTION_BUTTON)); folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW)); - pannable = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_PANNABLE)); + scrollable = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_SCROLLABLE)); gtk_widget_set_sensitive (back_button, FALSE); gtk_widget_set_sensitive (action_button, FALSE); @@ -2848,7 +2851,7 @@ move_to_dialog_show_accounts (GtkWidget *dialog) MODEST_FOLDER_VIEW_FILTER_HIDE_ACCOUNTS); modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_FILTER_HIDE_FOLDERS); - hildon_pannable_area_jump_to (HILDON_PANNABLE_AREA (pannable), 0, 0); + modest_scrollable_jump_to (MODEST_SCROLLABLE (scrollable), 0, 0); } static void @@ -2858,7 +2861,7 @@ move_to_dialog_show_folders (GtkWidget *dialog, TnyFolderStore *folder_store) GtkWidget *folder_view; TnyAccount *account; const gchar *account_id; - GtkWidget *pannable; + GtkWidget *scrollable; GtkWidget *action_button; back_button = @@ -2867,8 +2870,8 @@ move_to_dialog_show_folders (GtkWidget *dialog, TnyFolderStore *folder_store) GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_ACTION_BUTTON)); folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW)); - pannable = - GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_PANNABLE)); + scrollable = + GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_SCROLLABLE)); gtk_widget_set_sensitive (back_button, TRUE); gtk_widget_set_sensitive (action_button, TRUE); @@ -2904,7 +2907,7 @@ move_to_dialog_show_folders (GtkWidget *dialog, TnyFolderStore *folder_store) modest_folder_view_set_style (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_STYLE_SHOW_ONE); modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_FILTER_HIDE_ACCOUNTS); modest_folder_view_unset_filter (MODEST_FOLDER_VIEW (folder_view), MODEST_FOLDER_VIEW_FILTER_HIDE_FOLDERS); - hildon_pannable_area_jump_to (HILDON_PANNABLE_AREA (pannable), 0, 0); + modest_scrollable_jump_to (MODEST_SCROLLABLE (scrollable), 0, 0); } static void @@ -3038,7 +3041,8 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window, GTK_WINDOW (parent_window), GTK_DIALOG_MODAL | GTK_DIALOG_NO_SEPARATOR | GTK_DIALOG_DESTROY_WITH_PARENT, - _HL("wdgt_bd_new"), MODEST_GTK_RESPONSE_NEW_FOLDER, + _FM_CHANGE_FOLDER_NEW_FOLDER, + MODEST_GTK_RESPONSE_NEW_FOLDER, NULL); align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); @@ -3059,7 +3063,7 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window, buttons_hbox = gtk_hbox_new (FALSE, MODEST_MARGIN_HALF); back_button = gtk_button_new (); - back_pixbuf = modest_platform_get_icon (_FM("filemanager_folder_up"), MODEST_ICON_SIZE_BIG); + back_pixbuf = modest_platform_get_icon (_FM_FOLDER_UP, MODEST_ICON_SIZE_BIG); if (back_pixbuf) { gtk_button_set_image (GTK_BUTTON (back_button), gtk_image_new_from_pixbuf (back_pixbuf)); g_object_unref (back_pixbuf); @@ -3075,8 +3079,8 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window, gtk_widget_set_sensitive (GTK_WIDGET (action_button), FALSE); gtk_box_pack_start (GTK_BOX (top_vbox), buttons_hbox, FALSE, FALSE, 0); - /* Create pannable and add it to the dialog */ - folder_view_container = hildon_pannable_area_new (); + /* Create scrollable and add it to the dialog */ + folder_view_container = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ()); gtk_container_add (GTK_CONTAINER (folder_view_container), *folder_view); gtk_box_pack_start (GTK_BOX (top_vbox), folder_view_container, TRUE, TRUE, 0); @@ -3098,7 +3102,7 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window, g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW, *folder_view); g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_BACK_BUTTON, back_button); g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_ACTION_BUTTON, action_button); - g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_PANNABLE, folder_view_container); + g_object_set_data (G_OBJECT (dialog), MOVE_TO_DIALOG_SCROLLABLE, folder_view_container); /* Simulate the behaviour of a HildonPickerDialog by emitting a response when a folder is selected */ @@ -3161,3 +3165,60 @@ modest_platform_get_list_to_move (ModestWindow *window) return list; } + +DBusConnection* +modest_platform_get_dbus_connection (void) +{ + osso_context_t *osso_context; + DBusConnection *con; + + osso_context = modest_maemo_utils_get_osso_context(); + + con = osso_get_dbus_connection (osso_context); + + return con; +} + +void +modest_platform_emit_folder_updated_signal (const gchar *account_id, const gchar *folder_id) +{ + DBusConnection *con; + + con = modest_platform_get_dbus_connection (); + if (!con) return; + + modest_dbus_emit_folder_updated_signal (con, account_id, folder_id); +} + +void +modest_platform_emit_account_created_signal (const gchar *account_id) +{ + DBusConnection *con; + + con = modest_platform_get_dbus_connection (); + if (!con) return; + + modest_dbus_emit_account_created_signal (con, account_id); +} + +void +modest_platform_emit_account_removed_signal (const gchar *account_id) +{ + DBusConnection *con; + + con = modest_platform_get_dbus_connection (); + if (!con) return; + + modest_dbus_emit_account_removed_signal (con, account_id); +} +void +modest_platform_emit_msg_read_changed_signal (const gchar *msg_uid, + gboolean is_read) +{ + DBusConnection *con; + + con = modest_platform_get_dbus_connection (); + if (!con) return; + + modest_dbus_emit_msg_read_changed_signal (con, msg_uid, is_read); +}