X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-platform.c;h=516a72a3d325cd5dbce78c600539bb0018add7f4;hb=111d62dd3cff8802c3ab98c40b046d3206184885;hp=e47bf1ffcab8aa26a23e0d7a0f014b823394d3d6;hpb=57fb485a6a6b019a9eb4ea4f8bc465dd4fdbfc47;p=modest diff --git a/src/hildon2/modest-platform.c b/src/hildon2/modest-platform.c index e47bf1f..516a72a 100644 --- a/src/hildon2/modest-platform.c +++ b/src/hildon2/modest-platform.c @@ -107,6 +107,7 @@ #define COMMON_FOLDER_DIALOG_ENTRY "entry" #define COMMON_FOLDER_DIALOG_ACCOUNT_PICKER "account-picker" #define FOLDER_PICKER_CURRENT_FOLDER "current-folder" +#define FOLDER_PICKER_ORIGINAL_ACCOUNT "original-account" #define MODEST_ALARMD_APPID PACKAGE_NAME static ca_context *ca_con = NULL; @@ -688,12 +689,13 @@ folder_chooser_activated (ModestFolderView *folder_view, static TnyFolderStore * folder_chooser_dialog_run (ModestFolderView *original, - TnyFolderStore *current) + TnyFolderStore *current, + GtkButton *picker) { GtkWidget *folder_view; FolderChooserData userdata = {NULL, NULL}; GtkWidget *pannable; - gchar *visible_id = NULL; + const gchar *visible_id = NULL; userdata.dialog = hildon_dialog_new (); pannable = hildon_pannable_area_new (); @@ -709,31 +711,28 @@ folder_chooser_dialog_run (ModestFolderView *original, along with the currently visible server account */ if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (current)) || modest_tny_account_is_memory_card_account (TNY_ACCOUNT (current))) - visible_id = - g_strdup (modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW (original))); + visible_id = g_object_get_data ((GObject *) picker, FOLDER_PICKER_ORIGINAL_ACCOUNT); else - visible_id = g_strdup (tny_account_get_id (TNY_ACCOUNT (current))); - } else if (TNY_IS_FOLDER (current) && !TNY_IS_MERGE_FOLDER (current)) { + visible_id = tny_account_get_id (TNY_ACCOUNT (current)); + } else if (TNY_IS_FOLDER (current)) { TnyAccount *account; - account = tny_folder_get_account (TNY_FOLDER (current)); + account = modest_tny_folder_get_account ((TnyFolder *) current); if (account) { if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (account)) || modest_tny_account_is_memory_card_account (TNY_ACCOUNT (account))) { - visible_id = - g_strdup (modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW (original))); + visible_id = g_object_get_data ((GObject *) picker, FOLDER_PICKER_ORIGINAL_ACCOUNT); } else { - visible_id = g_strdup (tny_account_get_id (account)); + visible_id = tny_account_get_id (account); } g_object_unref (account); } } else { - visible_id = g_strdup ( - modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(original))); + visible_id = + modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(original)); } modest_folder_view_set_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(folder_view), visible_id); - g_free (visible_id); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (userdata.dialog)->vbox), pannable); gtk_container_add (GTK_CONTAINER (pannable), folder_view); @@ -922,7 +921,7 @@ folder_picker_clicked (GtkButton *button, current = g_object_get_data (G_OBJECT (button), FOLDER_PICKER_CURRENT_FOLDER); - store = folder_chooser_dialog_run (helper->folder_view, current); + store = folder_chooser_dialog_run (helper->folder_view, current, button); if (store) { const gchar *current_name; gboolean exists = FALSE; @@ -948,15 +947,37 @@ static GtkWidget * folder_picker_new (TnyFolderStore *suggested, FolderPickerHelper *helper) { GtkWidget *button; + const gchar *acc_id = NULL; button = hildon_button_new (MODEST_EDITABLE_SIZE, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); hildon_button_set_alignment (HILDON_BUTTON (button), 0.0, 0.5, 1.0, 1.0); - if (suggested) + if (suggested) { + folder_picker_set_store (GTK_BUTTON (button), suggested); + if (TNY_IS_ACCOUNT (suggested)) { + if (!modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (suggested)) && + !modest_tny_account_is_memory_card_account (TNY_ACCOUNT (suggested))) + acc_id = tny_account_get_id ((TnyAccount *) suggested); + } else { + TnyAccount *account = modest_tny_folder_get_account ((TnyFolder *) suggested); + if (account) { + acc_id = tny_account_get_id ((TnyAccount *) account); + g_object_unref (account); + } + } + } + + if (!acc_id) + acc_id = modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(helper->folder_view)); + + g_object_set_data_full (G_OBJECT (button), FOLDER_PICKER_ORIGINAL_ACCOUNT, + g_strdup (acc_id), (GDestroyNotify) g_free); + + g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (folder_picker_clicked), helper); @@ -1781,11 +1802,6 @@ modest_platform_create_folder_view_full (TnyFolderStoreQuery *query, gboolean do modest_folder_view_set_style (MODEST_FOLDER_VIEW (widget), MODEST_FOLDER_VIEW_STYLE_SHOW_ONE); - /* Restore settings */ - modest_widget_memory_restore (modest_runtime_get_conf(), - G_OBJECT (widget), - MODEST_CONF_FOLDER_VIEW_KEY); - return widget; }