#include <widgets/modest-account-view-window.h>
#include <widgets/modest-details-dialog.h>
#include <widgets/modest-attachments-view.h>
+#include "widgets/modest-folder-view.h"
#include "widgets/modest-global-settings-dialog.h"
#include "modest-connection-specific-smtp-window.h"
#include "modest-account-mgr-helpers.h"
* because it requires a providers preset file which is not publically available.
*/
#ifdef MODEST_PLATFORM_MAEMO /* Defined in config.h */
- GSList *account_names = modest_account_mgr_account_names (modest_runtime_get_account_mgr(),
- TRUE /* enabled accounts only */);
- gboolean accounts_exist = account_names != NULL;
- g_slist_free (account_names);
+ gboolean accounts_exist = modest_account_mgr_has_accounts(
+ modest_runtime_get_account_mgr(), TRUE);
if (!accounts_exist) {
/* If there are no accounts yet, just show the easy-setup wizard, as per the UI spec: */
ModestWindowMgr *mgr;
TnyIterator *iter;
ModestMailOperation *mail_op;
+ TnyList *not_opened_headers;
/* Look if we already have a message view for each header. If
true, then remove the header from the list of headers to
open */
mgr = modest_runtime_get_window_mgr ();
iter = tny_list_create_iterator (headers);
+ not_opened_headers = tny_simple_list_new ();
while (!tny_iterator_is_done (iter)) {
ModestWindow *window;
TnyHeader *header;
-
+
header = TNY_HEADER (tny_iterator_get_current (iter));
window = modest_window_mgr_find_window_by_header (mgr, header);
- if (window) {
- /* Do not open again the message and present
- the window to the user */
- tny_list_remove (headers, G_OBJECT (header));
+ /* Do not open again the message and present the
+ window to the user */
+ if (window)
gtk_window_present (GTK_WINDOW (window));
- }
+ else
+ tny_list_append (not_opened_headers, G_OBJECT (header));
g_object_unref (header);
tny_iterator_next (iter);
}
-
+
/* Open each message */
mail_op = modest_mail_operation_new_with_error_handling (MODEST_MAIL_OPERATION_TYPE_RECEIVE,
G_OBJECT (win),
NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
modest_mail_operation_get_msgs_full (mail_op,
- headers,
+ not_opened_headers,
open_msg_cb,
NULL,
NULL);
-
/* Clean */
- g_object_unref(mail_op);
+ g_object_unref (not_opened_headers);
+ g_object_unref (iter);
+ g_object_unref (mail_op);
}
void
void
modest_ui_actions_on_send_receive (GtkAction *action, ModestWindow *win)
{
- /* Check that at least one account exists: */
- GSList *account_names = modest_account_mgr_account_names (modest_runtime_get_account_mgr(),
- TRUE /* enabled accounts only */);
- gboolean accounts_exist = account_names != NULL;
- g_slist_free (account_names);
+ /* Check if accounts exist */
+ gboolean accounts_exist =
+ modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), TRUE);
/* If not, allow the user to create an account before trying to send/receive. */
if (!accounts_exist)
account store because that is the one that
knows the name of the Modest account */
TnyAccount *modest_server_account = modest_server_account =
- modest_tny_account_store_get_tny_account_by_id (modest_runtime_get_account_store (),
- server_acc_name);
+ modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store (),
+ MODEST_TNY_ACCOUNT_STORE_QUERY_ID,
+ server_acc_name);
const gchar *modest_acc_name =
modest_tny_account_get_parent_modest_account_name_for_server_account (modest_server_account);
g_object_unref (modest_server_account);
}
+
+static void
+folder_refreshed_cb (const GObject *obj,
+ TnyFolder *folder,
+ gpointer user_data)
+{
+ ModestMainWindow *win = NULL;
+ GtkWidget *header_view;
+
+ g_return_if_fail (TNY_IS_FOLDER (folder));
+
+ win = MODEST_MAIN_WINDOW (user_data);
+ header_view =
+ modest_main_window_get_child_widget(win, MODEST_WIDGET_TYPE_HEADER_VIEW);
+
+ /* Check if folder is empty and set headers view contents style */
+ if (tny_folder_get_all_count (folder) == 0) {
+ modest_main_window_set_contents_style (win,
+ MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY);
+ } else {
+ modest_main_window_set_contents_style (win,
+ MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
+
+ /* Restore configuration */
+ modest_widget_memory_restore (modest_runtime_get_conf (),
+ G_OBJECT(header_view),
+ MODEST_CONF_HEADER_VIEW_KEY);
+ }
+}
+
void
modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
TnyFolderStore *folder_store,
{
ModestConf *conf;
GtkWidget *header_view;
- gboolean folder_empty = FALSE;
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
set_active_account_from_tny_account (account, MODEST_WINDOW (main_window));
g_object_unref (account);
}
-
-
+
/* Set folder on header view */
modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
- TNY_FOLDER (folder_store));
-
- /* Set main view style */
- folder_empty = tny_folder_get_all_count (TNY_FOLDER (folder_store)) == 0;
- if (folder_empty) {
- modest_main_window_set_contents_style (main_window,
- MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY);
- }
- else {
- modest_main_window_set_contents_style (main_window,
- MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
- modest_widget_memory_restore (conf, G_OBJECT(header_view),
- MODEST_CONF_HEADER_VIEW_KEY);
- }
+ TNY_FOLDER (folder_store),
+ folder_refreshed_cb,
+ main_window);
} else {
/* Update the active account */
modest_window_set_active_account (MODEST_WINDOW (main_window), NULL);
/* Do not show folder */
modest_widget_memory_save (conf, G_OBJECT (header_view), MODEST_CONF_HEADER_VIEW_KEY);
- modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL);
+ modest_header_view_clear (MODEST_HEADER_VIEW(header_view));
}
}
gtk_window_set_default_size (GTK_WINDOW(dialog), 300, 300);
if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
-// modest_platform_connect_and_wait ();;
+// modest_platform_connect_and_wait ();
}
}
gtk_widget_destroy (dialog);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
- modest_header_view_set_folder (MODEST_HEADER_VIEW (header_view), NULL);
+ modest_header_view_clear (MODEST_HEADER_VIEW (header_view));
modest_mail_operation_rename_folder (mail_op,
TNY_FOLDER (folder),
/* Create folder view */
*tree_view = modest_folder_view_new (NULL);
- gtk_tree_view_set_model (GTK_TREE_VIEW (*tree_view),
- gtk_tree_view_get_model (GTK_TREE_VIEW (folder_view)));
+
+ /* It could happen that we're trying to move a message from a
+ window (msg window for example) after the main window was
+ closed, so we can not just get the model of the folder
+ view */
+ if (MODEST_IS_FOLDER_VIEW (folder_view))
+ gtk_tree_view_set_model (GTK_TREE_VIEW (*tree_view),
+ gtk_tree_view_get_model (GTK_TREE_VIEW (folder_view)));
+ else
+ modest_folder_view_update_model (MODEST_FOLDER_VIEW (*tree_view),
+ TNY_ACCOUNT_STORE (modest_runtime_get_account_store ()));
+
gtk_container_add (GTK_CONTAINER (scroll), *tree_view);
/* Add scroll to dialog */
src_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
/* Clean folder on header view before moving it */
- modest_header_view_set_folder (MODEST_HEADER_VIEW (header_view), NULL);
+ modest_header_view_clear (MODEST_HEADER_VIEW (header_view));
if (TNY_IS_FOLDER (src_folder)) {
mail_op =
/* Get the folder view */
main_window = MODEST_MAIN_WINDOW (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ()));
- folder_view = modest_main_window_get_child_widget (main_window,
- MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ if (main_window)
+ folder_view = modest_main_window_get_child_widget (main_window,
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+ else
+ folder_view = NULL;
/* Create and run the dialog */
dialog = create_move_to_dialog (MODEST_WINDOW (win), folder_view, &tree_view);
tranasfer_msgs_from_viewer_cb,
NULL);
g_object_unref (G_OBJECT (mail_op));
- }
+ }
g_object_unref (headers);
g_object_unref (folder_store);
}
}
void
+modest_ui_actions_on_view_menu_activated (GtkAction *action,
+ ModestWindow *window)
+{
+ g_return_if_fail (MODEST_IS_WINDOW (window));
+
+ /* Update dimmed */
+ modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");
+}
+
+void
+modest_ui_actions_on_tools_menu_activated (GtkAction *action,
+ ModestWindow *window)
+{
+ g_return_if_fail (MODEST_IS_WINDOW (window));
+
+ /* Update dimmed */
+ modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");
+}
+
+void
+modest_ui_actions_on_attachment_menu_activated (GtkAction *action,
+ ModestWindow *window)
+{
+ g_return_if_fail (MODEST_IS_WINDOW (window));
+
+ /* Update dimmed */
+ modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules");
+}
+
+void
modest_ui_actions_on_toolbar_csm_menu_activated (GtkAction *action,
ModestWindow *window)
{