X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-platform.c;h=18db4b34e0af4ca7868c3f08f12e966653da863e;hp=7581a93d104a3018c22b52407e78ea89f1a16b4f;hb=22f687bc1a5543f49b3ff3acdb53e00fe6c165a0;hpb=8321e6535af81520d17a8a091ead7d81301dc9cd diff --git a/src/hildon2/modest-platform.c b/src/hildon2/modest-platform.c index 7581a93..18db4b3 100644 --- a/src/hildon2/modest-platform.c +++ b/src/hildon2/modest-platform.c @@ -134,9 +134,16 @@ on_modest_conf_update_interval_changed (ModestConf* self, static gboolean check_required_files (void) { - FILE *mcc_file = modest_utils_open_mcc_mapping_file (NULL); + FILE *mcc_file = modest_utils_open_mcc_mapping_file (FALSE, NULL); if (!mcc_file) { - g_printerr ("modest: check for mcc file failed\n"); + 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 fclose (mcc_file); @@ -645,7 +652,8 @@ on_response (GtkDialog *dialog, parent = g_object_get_data (G_OBJECT (picker), FOLDER_PICKER_CURRENT_FOLDER); /* Look for another folder with the same name */ - if (modest_tny_folder_has_subfolder_with_name (parent, new_name, TRUE)) + if (!TNY_IS_MERGE_FOLDER (parent) && + modest_tny_folder_has_subfolder_with_name (parent, new_name, TRUE)) exists = TRUE; if (!exists) { @@ -893,15 +901,17 @@ folder_picker_clicked (GtkButton *button, store = folder_chooser_dialog_run (helper->folder_view); if (store) { const gchar *current_name; - gboolean exists; + gboolean exists = FALSE; folder_picker_set_store (GTK_BUTTON (button), store); /* Update the name of the folder */ current_name = gtk_entry_get_text (helper->entry); - exists = modest_tny_folder_has_subfolder_with_name (store, - current_name, - TRUE); + + if (TNY_IS_FOLDER_STORE (store)) + exists = modest_tny_folder_has_subfolder_with_name (store, + current_name, + TRUE); if (exists) { gchar *new_name = get_next_folder_name (NULL, store); gtk_entry_set_text (helper->entry, new_name); @@ -1528,24 +1538,21 @@ modest_platform_push_email_notification(void) } } -void +void modest_platform_on_new_headers_received (TnyList *header_list, gboolean show_visual) { - g_return_if_fail (TNY_IS_LIST(header_list)); + g_return_if_fail (TNY_IS_LIST (header_list)); - if (tny_list_get_length(header_list) == 0) { - g_warning ("%s: header list is empty", __FUNCTION__); + if (tny_list_get_length (header_list) < 1) return; - } - if (!show_visual) { - modest_platform_push_email_notification (); - /* We do a return here to avoid indentation with an else */ + /* If the window is in the foreground don't do anything */ + if (hildon_program_get_is_topmost (hildon_program_get_instance ())) return; - } #ifdef MODEST_HAVE_HILDON_NOTIFY + /* For any other case issue a notification */ HildonNotification *notification; TnyIterator *iter; GSList *notifications_list = NULL; @@ -1626,7 +1633,7 @@ modest_platform_on_new_headers_received (TnyList *header_list, /* We don't listen for the "closed" signal, because we don't care about if the notification was removed or not to store the list in gconf */ - + /* Free & carry on */ g_free (display_address); g_free (url); @@ -1641,7 +1648,7 @@ modest_platform_on_new_headers_received (TnyList *header_list, notifications_list, MODEST_CONF_VALUE_INT, NULL); g_slist_free (notifications_list); - + #endif /*MODEST_HAVE_HILDON_NOTIFY*/ } @@ -1742,10 +1749,10 @@ modest_platform_show_addressbook (GtkWindow *parent_window) } } -GtkWidget * -modest_platform_create_folder_view (TnyFolderStoreQuery *query) +static GtkWidget * +modest_platform_create_folder_view_full (TnyFolderStoreQuery *query, gboolean do_refresh) { - GtkWidget *widget = modest_folder_view_new (query); + GtkWidget *widget = modest_folder_view_new_full (query, do_refresh); /* Show one account by default */ modest_folder_view_set_style (MODEST_FOLDER_VIEW (widget), @@ -1759,6 +1766,12 @@ modest_platform_create_folder_view (TnyFolderStoreQuery *query) return widget; } +GtkWidget * +modest_platform_create_folder_view (TnyFolderStoreQuery *query) +{ + return modest_platform_create_folder_view_full (query, TRUE); +} + void banner_finish (gpointer data, GObject *object) { @@ -2610,7 +2623,7 @@ move_to_dialog_set_selected_folder_store (GtkWidget *dialog, GtkWidget *action_button; GtkWidget *image = NULL; TnyAccount *account; - gchar *account_name = NULL; + gchar *account_name = NULL, *short_name = NULL; action_button = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_ACTION_BUTTON)); @@ -2630,22 +2643,34 @@ move_to_dialog_set_selected_folder_store (GtkWidget *dialog, g_object_unref (account); /* Set title of button: account or folder name */ - if (TNY_IS_FOLDER (folder_store)) { - hildon_button_set_title (HILDON_BUTTON (action_button), - tny_folder_get_name (TNY_FOLDER (folder_store))); - } else { - hildon_button_set_title (HILDON_BUTTON (action_button), account_name); - } + if (TNY_IS_FOLDER (folder_store)) + short_name = folder_store_get_display_name (folder_store); + else + short_name = g_strdup (account_name); + + hildon_button_set_title (HILDON_BUTTON (action_button), short_name); /* Set value of button, folder full name */ if (TNY_IS_CAMEL_FOLDER (folder_store)) { - gchar *full_name = g_strconcat (account_name, MOVE_TO_FOLDER_SEPARATOR, - tny_camel_folder_get_full_name (TNY_CAMEL_FOLDER (folder_store)), - NULL); + const gchar *camel_full_name; + gchar *last_slash, *full_name; + + camel_full_name = tny_camel_folder_get_full_name (TNY_CAMEL_FOLDER (folder_store)); + last_slash = g_strrstr (camel_full_name, "/"); + if (last_slash) { + gchar *prefix = g_strndup (camel_full_name, last_slash - camel_full_name + 1); + full_name = g_strconcat (account_name, MOVE_TO_FOLDER_SEPARATOR, prefix, short_name, NULL); + g_free (prefix); + } else { + full_name = g_strconcat (account_name, MOVE_TO_FOLDER_SEPARATOR, + short_name, + NULL); + } hildon_button_set_value (HILDON_BUTTON (action_button), full_name); g_free (full_name); } g_free (account_name); + g_free (short_name); /* Set image for the button */ image = get_image_for_folder_store (folder_store, MODEST_ICON_SIZE_BIG); @@ -2827,22 +2852,31 @@ static void on_move_to_dialog_action_clicked (GtkButton *selection, gpointer user_data) { - TnyFolderStore *selected; GtkWidget *dialog; - GtkWidget *folder_view; gboolean showing_folders; dialog = (GtkWidget *) user_data; showing_folders = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_SHOWING_FOLDERS)); if (showing_folders) { + TnyFolderStore *selected; + GtkWidget *folder_view; + folder_view = GTK_WIDGET (g_object_get_data (G_OBJECT (dialog), MOVE_TO_DIALOG_FOLDER_VIEW)); selected = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view)); - if (selected) + if (selected) { gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + g_object_unref (selected); + } } } +static void +move_to_dialog_activity_changed (ModestFolderView *folder_view, gboolean activity, GtkDialog *dialog) +{ + hildon_gtk_window_set_progress_indicator (GTK_WINDOW (dialog), activity?1:0); +} + GtkWidget * modest_platform_create_move_to_dialog (GtkWindow *parent_window, GtkWidget **folder_view) @@ -2870,7 +2904,9 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window, top_vbox = gtk_vbox_new (FALSE, MODEST_MARGIN_HALF); /* Create folder view */ - *folder_view = modest_platform_create_folder_view (NULL); + *folder_view = modest_platform_create_folder_view_full (NULL, FALSE); + g_signal_connect (G_OBJECT (*folder_view), "activity-changed", G_CALLBACK (move_to_dialog_activity_changed), + dialog); modest_folder_view_set_cell_style (MODEST_FOLDER_VIEW (*folder_view), MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT);