}
static TnyFolderStore *
-folder_chooser_dialog_run (ModestFolderView *original)
+folder_chooser_dialog_run (ModestFolderView *original, TnyFolderStore *current)
{
GtkWidget *folder_view;
FolderChooserData userdata = {NULL, NULL};
GtkWidget *pannable;
- const gchar *visible_id = NULL;
+ gchar *visible_id = NULL;
userdata.dialog = hildon_dialog_new ();
pannable = hildon_pannable_area_new ();
modest_folder_view_copy_model (MODEST_FOLDER_VIEW (original),
MODEST_FOLDER_VIEW (folder_view));
- visible_id =
- modest_folder_view_get_account_id_of_visible_server_account (MODEST_FOLDER_VIEW(original));
+ if (TNY_IS_FOLDER_STORE (current)) {
+ if (TNY_IS_ACCOUNT (current)) {
+ visible_id = g_strdup (tny_account_get_id (TNY_ACCOUNT (current)));
+ } else if (TNY_IS_FOLDER (current)) {
+ TnyAccount *account;
+
+ account = tny_folder_get_account (TNY_FOLDER (current));
+ if (account) {
+ visible_id = g_strdup (tny_account_get_id (TNY_ACCOUNT (current)));
+ }
+ }
+ }
+
+ if (visible_id == NULL) {
+ visible_id = g_strdup (
+ 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);
folder_picker_clicked (GtkButton *button,
FolderPickerHelper *helper)
{
- TnyFolderStore *store;
+ TnyFolderStore *store, *current;
+
+ current = g_object_get_data (G_OBJECT (button), FOLDER_PICKER_CURRENT_FOLDER);
- store = folder_chooser_dialog_run (helper->folder_view);
+ store = folder_chooser_dialog_run (helper->folder_view, current);
if (store) {
const gchar *current_name;
gboolean exists = FALSE;