X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-platform.c;h=29e96b52da2d1e7aff4add0a463cc917f435808e;hp=53bfd52012af501674a479f093bfd312854c3d35;hb=514d7488390a9c4c31a9ca5e44f78dc9329b833d;hpb=60f6335d38192b3dc4353e96a4b1579af8b4901c diff --git a/src/hildon2/modest-platform.c b/src/hildon2/modest-platform.c index 53bfd52..29e96b5 100644 --- a/src/hildon2/modest-platform.c +++ b/src/hildon2/modest-platform.c @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -41,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -66,8 +66,8 @@ #include "hildon2/modest-hildon2-details-dialog.h" #include "hildon2/modest-hildon2-window-mgr.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)); + /* 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("ecoc_ib_edwin_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); + + /* 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; - /* 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 ()); + actions_list = hildon_uri_get_actions_by_uri (uri, -1, NULL); + if (!actions_list) + goto add_copy_link; - } else { - hildon_banner_show_information (NULL, NULL, _("mcen_ib_unsupported_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; } @@ -697,11 +690,11 @@ 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")); @@ -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), @@ -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)); @@ -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); @@ -1672,8 +1665,6 @@ modest_platform_on_new_headers_received (GList *URI_list, g_object_unref (account); } - /* Play sound */ - modest_platform_play_email_tone (); if (notify_notification_show (NOTIFY_NOTIFICATION (notification), NULL)) { GSList *notifications_list = NULL; @@ -1927,17 +1918,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 +1936,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. */ @@ -2700,7 +2688,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 +2805,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 +2836,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 +2846,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 +2855,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 +2892,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 +3026,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 ("ckdg_bd_change_folder_new_folder"), + MODEST_GTK_RESPONSE_NEW_FOLDER, NULL); align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); @@ -3075,8 +3064,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 +3087,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 */