#include <modest-ui-dimming-manager.h>
#include <modest-window-priv.h>
#include "modest-text-utils.h"
+#include "modest-tny-account.h"
typedef enum {
EDIT_MODE_COMMAND_MOVE = 1,
static void
modest_folder_window_disconnect_signals (ModestWindow *self)
-{
- ModestFolderWindowPrivate *priv;
+{
+ ModestFolderWindowPrivate *priv;
priv = MODEST_FOLDER_WINDOW_GET_PRIVATE(self);
modest_signal_mgr_disconnect_all_and_destroy (priv->sighandlers);
- priv->sighandlers = NULL;
+ priv->sighandlers = NULL;
+}
+
+static void
+on_visible_account_changed (ModestFolderView *folder_view,
+ const gchar *account_id,
+ gpointer user_data)
+{
+ if (account_id) {
+ TnyAccount *acc =
+ modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store(),
+ MODEST_TNY_ACCOUNT_STORE_QUERY_ID,
+ account_id);
+ if (acc) {
+ const gchar *name;
+ gchar *title = NULL;
+
+ name = modest_tny_account_get_parent_modest_account_name_for_server_account (acc);
+ title = modest_account_mgr_get_display_name (modest_runtime_get_account_mgr(),
+ name);
+ if (title) {
+ gtk_window_set_title (GTK_WINDOW (user_data), title);
+ g_free (title);
+ } else {
+ gtk_window_set_title (GTK_WINDOW (user_data), _("mcen_ap_name"));
+ }
+ g_object_unref (acc);
+ }
+ } else {
+ gtk_window_set_title (GTK_WINDOW (user_data), _("mcen_ap_name"));
+ }
}
static void
connect_signals (ModestFolderWindow *self)
-{
+{
ModestFolderWindowPrivate *priv;
-
+
priv = MODEST_FOLDER_WINDOW_GET_PRIVATE(self);
/* folder view */
G_OBJECT (modest_runtime_get_window_mgr ()),
"progress-list-changed",
G_CALLBACK (on_progress_list_changed), self);
- /* TODO: connect folder view activate */
-
- /* window */
- /* we don't register this in sighandlers, as it should be run after disconnecting all signals,
- * in destroy stage */
-
-
+ priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers,
+ G_OBJECT (priv->folder_view),
+ "visible-account-changed",
+ G_CALLBACK (on_visible_account_changed), self);
}
ModestWindow *
MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT);
modest_folder_view_set_filter (MODEST_FOLDER_VIEW (priv->folder_view),
MODEST_FOLDER_VIEW_FILTER_HIDE_ACCOUNTS);
+
g_signal_connect (G_OBJECT (self), "edit-mode-changed",
G_CALLBACK (edit_mode_changed), (gpointer) self);
priv->current_store_account);
modest_window_set_active_account (MODEST_WINDOW (self), account_name);
- gtk_window_set_title (GTK_WINDOW (self),
- modest_account_settings_get_display_name (settings));
update_progress_hint (self);
free_refs:
MODEST_IS_ACCOUNTS_WINDOW (current_top) &&
!modest_account_mgr_has_accounts (modest_runtime_get_account_mgr (), TRUE))
create_folders_view (MODEST_WINDOW_MGR (user_data));
+ }
+
+ /* if we're showing the header view of the currently deleted
+ account, or the outbox and we deleted the last account,
+ then close the window */
+ if (current_top && MODEST_IS_HEADER_WINDOW (current_top)) {
+ ModestHeaderView *header_view;
+ TnyFolder *folder;
+ gboolean deleted = FALSE;
+
+ header_view = modest_header_window_get_header_view (MODEST_HEADER_WINDOW (current_top));
+ folder = modest_header_view_get_folder (header_view);
+ if (folder) {
+ gboolean retval;
+
+ /* Close if it's my account */
+ if (!TNY_IS_MERGE_FOLDER (folder)) {
+ TnyAccount *my_account;
+
+ my_account = tny_folder_get_account (folder);
+ if (my_account) {
+ if (my_account == account) {
+ g_signal_emit_by_name (G_OBJECT (current_top),
+ "delete-event",
+ NULL, &retval);
+ deleted = TRUE;
+ }
+ g_object_unref (my_account);
+ }
+ }
+
+ /* Close if viewing outbox and no account left */
+ if (tny_folder_get_folder_type (folder) == TNY_FOLDER_TYPE_OUTBOX) {
+ if (!has_accounts) {
+ g_signal_emit_by_name (G_OBJECT (current_top),
+ "delete-event",
+ NULL, &retval);
+ deleted = TRUE;
+ }
+ }
+ g_object_unref (folder);
+
+ if (deleted) {
+ current_top = (ModestWindow *) hildon_window_stack_peek (stack);
+ }
+ }
+ }
}
static ModestWindow *