TnyAccount *account,
gpointer user_data);
+static void on_account_changed (TnyAccountStore *self,
+ TnyAccount *account,
+ gpointer user_data);
+
static gint cmp_rows (GtkTreeModel *tree_model,
GtkTreeIter *iter1,
GtkTreeIter *iter2,
guint time,
gpointer user_data);
+static void expand_root_items (ModestFolderView *self);
+
static gint expand_row_timeout (gpointer data);
static void setup_drag_and_drop (GtkTreeView *self);
gulong changed_signal;
gulong account_inserted_signal;
gulong account_removed_signal;
+ gulong account_changed_signal;
gulong conf_key_signal;
/* not unref this object, its a singlenton */
}
/* Simplify checks for NULLs: */
-static gboolean strings_are_equal (const gchar *a, const gchar *b)
+static gboolean
+strings_are_equal (const gchar *a, const gchar *b)
{
if (!a && !b)
return TRUE;
return FALSE;
}
-static gboolean on_model_foreach_set_name(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
+static gboolean
+on_model_foreach_set_name(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
GObject *instance = NULL;
gchar *previous_name;
} GetMmcAccountNameData;
-static void on_get_mmc_account_name (TnyStoreAccount* account, gpointer user_data)
+static void
+on_get_mmc_account_name (TnyStoreAccount* account, gpointer user_data)
{
/* printf ("DEBU1G: %s: account name=%s\n", __FUNCTION__, tny_account_get_name (TNY_ACCOUNT(account))); */
* added to the model, not when the account is
* changed later, so get the name from the account
* instance: */
- item_name = g_strdup (tny_account_get_name (
- TNY_ACCOUNT (instance)));
+ item_name = g_strdup (tny_account_get_name (TNY_ACCOUNT (instance)));
item_weight = 800;
} else {
item_name = g_strdup (fname);
priv->account_inserted_signal);
g_signal_handler_disconnect (G_OBJECT(priv->account_store),
priv->account_removed_signal);
+ g_signal_handler_disconnect (G_OBJECT(priv->account_store),
+ priv->account_changed_signal);
g_object_unref (G_OBJECT(priv->account_store));
priv->account_store = NULL;
}
priv->account_removed_signal))
g_signal_handler_disconnect (G_OBJECT (priv->account_store),
priv->account_removed_signal);
-
+ if (g_signal_handler_is_connected (G_OBJECT (priv->account_store),
+ priv->account_changed_signal))
+ g_signal_handler_disconnect (G_OBJECT (priv->account_store),
+ priv->account_changed_signal);
g_object_unref (G_OBJECT (priv->account_store));
}
g_signal_connect (G_OBJECT(account_store), "account_inserted",
G_CALLBACK (on_account_inserted), self);
-
-/* g_signal_connect (G_OBJECT(account_store), "connecting_finished", */
-/* G_CALLBACK (on_accounts_reloaded), self); */
-
-/* on_accounts_reloaded (account_store, (gpointer ) self); */
+ priv->account_changed_signal =
+ g_signal_connect (G_OBJECT(account_store), "account_changed",
+ G_CALLBACK (on_account_changed), self);
modest_folder_view_update_model (MODEST_FOLDER_VIEW (self), account_store);
G_OBJECT (account));
}
+
+static void
+on_account_changed (TnyAccountStore *account_store, TnyAccount *tny_account,
+ gpointer user_data)
+{
+ /* do nothing */
+}
+
+
+
static void
on_account_removed (TnyAccountStore *account_store,
TnyAccount *account,
signals[FOLDER_DISPLAY_NAME_CHANGED_SIGNAL], 0,
NULL);
}
+
+ expand_root_items (self);
+
return FALSE;
}
g_object_unref (model);
g_object_unref (filter_model);
g_object_unref (sortable);
-
+
/* Force a reselection of the INBOX next time the widget is shown */
priv->reselect = TRUE;
return folder;
}
+static void
+show_banner_move_target_error ()
+{
+ ModestWindow *main_window;
+
+ main_window = modest_window_mgr_get_main_window(
+ modest_runtime_get_window_mgr());
+
+ modest_platform_information_banner(GTK_WIDGET(main_window),
+ NULL, _("mail_in_ui_folder_move_target_error"));
+}
+
/*
* This function is used by drag_data_received_cb to manage drag and
* drop of a header, i.e, and drag from the header view to the folder
TnyFolder *folder = NULL;
ModestMailOperation *mail_op = NULL;
GtkTreeIter source_iter;
+ ModestWindowMgr *mgr = NULL;
g_return_if_fail (GTK_IS_TREE_MODEL(source_model));
g_return_if_fail (GTK_IS_TREE_MODEL(dest_model));
goto cleanup;
}
+ /* Check if the selected message is in msg-view. If it is than
+ * do not enable drag&drop on that. */
+ mgr = modest_runtime_get_window_mgr ();
+ if (modest_window_mgr_find_registered_header(mgr, header, NULL))
+ goto cleanup;
+
/* Get Folder */
folder = tree_path_to_folder (dest_model, dest_row);
if (!TNY_IS_FOLDER(folder)) {
g_warning ("BUG: %s could not get a valid folder", __FUNCTION__);
+ show_banner_move_target_error();
goto cleanup;
}
if (modest_tny_folder_get_rules(folder) & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE) {
/* Select the row and free */
gtk_tree_view_set_cursor (GTK_TREE_VIEW (self), path, NULL, FALSE);
gtk_tree_path_free (path);
+
+ /* set focus */
+ gtk_widget_grab_focus (GTK_WIDGET(self));
}