the local OUTBOX folder */
if (type == TNY_FOLDER_TYPE_NORMAL ||
type == TNY_FOLDER_TYPE_UNKNOWN) {
- type = modest_tny_folder_guess_folder_type (TNY_FOLDER (instance));
+ type = modest_tny_folder_guess_folder_type (TNY_FOLDER (instance));
}
switch (type) {
+ case TNY_FOLDER_TYPE_INVALID:
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+ break;
+
case TNY_FOLDER_TYPE_ROOT:
if (TNY_IS_ACCOUNT (instance)) {
icon_cell_data, treeview, NULL);
renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
+ g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END,
+ "ellipsize-set", TRUE, NULL);
+ gtk_tree_view_column_pack_start (column, renderer, TRUE);
gtk_tree_view_column_set_cell_data_func(column, renderer,
text_cell_data, treeview, NULL);
g_signal_connect (account, "connection_status_changed",
G_CALLBACK (on_connection_status_changed),
MODEST_FOLDER_VIEW (user_data));
+
+ /* Refilter the model */
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
}
/* Insert the account in the model */
tny_list_append (TNY_LIST (gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model))),
G_OBJECT (tny_account));
+
+ /* Refilter the model */
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
}
ModestFolderViewPrivate *priv;
GtkTreeModel *sort_model, *filter_model;
GtkTreeSelection *sel = NULL;
- TnyAccount *folder_selected_account;
/* Ignore transport account removals, we're not showing them
in the folder view */
MODEST_CONF_FOLDER_VIEW_KEY);
}
+ /* Refilter the model */
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+
/* Select the first INBOX if the currently selected folder
belongs to the account that is being deleted */
- folder_selected_account = (TNY_IS_FOLDER (priv->cur_folder_store)) ?
- modest_tny_folder_get_account (TNY_FOLDER (priv->cur_folder_store)) :
- TNY_ACCOUNT (g_object_ref (priv->cur_folder_store));
- if (account == folder_selected_account)
- modest_folder_view_select_first_inbox_or_local (self);
- g_object_unref (folder_selected_account);
+ if (priv->cur_folder_store) {
+ TnyAccount *folder_selected_account;
+
+ folder_selected_account = (TNY_IS_FOLDER (priv->cur_folder_store)) ?
+ modest_tny_folder_get_account (TNY_FOLDER (priv->cur_folder_store)) :
+ TNY_ACCOUNT (g_object_ref (priv->cur_folder_store));
+ if (account == folder_selected_account)
+ modest_folder_view_select_first_inbox_or_local (self);
+ g_object_unref (folder_selected_account);
+ }
}
void
case TNY_FOLDER_TYPE_UNKNOWN:
case TNY_FOLDER_TYPE_NORMAL:
type = modest_tny_folder_guess_folder_type(TNY_FOLDER(instance));
+ if (type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+
if (type == TNY_FOLDER_TYPE_OUTBOX ||
type == TNY_FOLDER_TYPE_SENT
|| type == TNY_FOLDER_TYPE_DRAFTS)
if ((parent_type == TNY_FOLDER_TYPE_ROOT) &&
TNY_IS_ACCOUNT (parent_folder) &&
modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (parent_folder))) {
- cmp1 = get_cmp_subfolder_type_pos (modest_tny_folder_get_local_or_mmc_folder_type (TNY_FOLDER (folder1)));
- cmp2 = get_cmp_subfolder_type_pos (modest_tny_folder_get_local_or_mmc_folder_type (TNY_FOLDER (folder2)));
+ cmp1 = get_cmp_subfolder_type_pos (modest_tny_folder_get_local_or_mmc_folder_type
+ (TNY_FOLDER (folder1)));
+ cmp2 = get_cmp_subfolder_type_pos (modest_tny_folder_get_local_or_mmc_folder_type
+ (TNY_FOLDER (folder2)));
}
g_object_unref (parent_folder);
}
-
+
/* if they are not local folders */
if (cmp1 == cmp2) {
cmp1 = get_cmp_subfolder_type_pos (tny_folder_get_folder_type (TNY_FOLDER (folder1)));
GtkTreePath *source_row;
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
- gtk_tree_selection_get_selected (selection, &model, &iter);
- source_row = gtk_tree_model_get_path (model, &iter);
-
- gtk_tree_set_row_drag_data (selection_data,
- model,
- source_row);
+ if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
- gtk_tree_path_free (source_row);
+ source_row = gtk_tree_model_get_path (model, &iter);
+ gtk_tree_set_row_drag_data (selection_data,
+ model,
+ source_row);
+
+ gtk_tree_path_free (source_row);
+ }
}
typedef struct _DndHelper {
{
TnyList *headers = NULL;
TnyFolder *folder = NULL;
+ TnyFolderType folder_type;
ModestMailOperation *mail_op = NULL;
GtkTreeIter source_iter, dest_iter;
ModestWindowMgr *mgr = NULL;
gtk_tree_model_get (dest_model, &dest_iter,
TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN,
&folder, -1);
-
+
+ if (!folder || !TNY_IS_FOLDER(folder)) {
+/* g_warning ("%s: not a valid target folder (%p)", __FUNCTION__, folder); */
+ goto cleanup;
+ }
+
+ folder_type = modest_tny_folder_guess_folder_type (folder);
+ if (folder_type == TNY_FOLDER_TYPE_INVALID) {
+/* g_warning ("%s: invalid target folder", __FUNCTION__); */
+ goto cleanup; /* cannot move messages there */
+ }
+
+ if (modest_tny_folder_get_rules((TNY_FOLDER(folder))) & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE) {
+/* g_warning ("folder not writable"); */
+ goto cleanup; /* verboten! */
+ }
+
/* Ask for confirmation to move */
- main_win = modest_window_mgr_get_main_window(mgr);
+ main_win = modest_window_mgr_get_main_window (mgr, FALSE); /* don't create */
+ if (!main_win) {
+ g_warning ("%s: BUG: no main window found", __FUNCTION__);
+ goto cleanup;
+ }
+
response = modest_ui_actions_msgs_move_to_confirmation (main_win, folder,
TRUE, headers);
if (response == GTK_RESPONSE_CANCEL)
goto cleanup;
/* Transfer messages */
- mail_op = modest_mail_operation_new_with_error_handling (NULL,
+ mail_op = modest_mail_operation_new_with_error_handling ((GObject *) main_win,
modest_ui_actions_move_folder_error_handler,
NULL, NULL);
TnyFolderStore *dest_folder = NULL;
TnyFolderStore *folder = NULL;
gboolean forbidden = FALSE;
+ ModestWindow *win;
+ win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr(), FALSE); /* don't create */
+ if (!win) {
+ g_warning ("%s: BUG: no main window", __FUNCTION__);
+ return;
+ }
+
if (!forbidden) {
/* check the folder rules for the destination */
folder = tree_path_to_folder (dest_model, dest_row);
/* Offer the connection dialog if necessary, for the destination parent folder and source folder: */
if (modest_platform_connect_and_wait_if_network_folderstore (NULL, dest_folder) &&
modest_platform_connect_and_wait_if_network_folderstore (NULL, TNY_FOLDER_STORE (folder))) {
- ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
-
+
/* Do the mail operation */
- mail_op =
- modest_mail_operation_new_with_error_handling (G_OBJECT (modest_window_mgr_get_main_window (mgr)),
- modest_ui_actions_move_folder_error_handler,
- folder, NULL);
+ mail_op = modest_mail_operation_new_with_error_handling ((GObject *) win,
+ modest_ui_actions_move_folder_error_handler,
+ folder, NULL);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
expand_root_items (self);
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (self));
- gtk_tree_model_get_iter_first (model, &iter);
+ if (!gtk_tree_model_get_iter_first (model, &iter)) {
+ g_warning ("%s: model is empty", __FUNCTION__);
+ return;
+ }
if (find_inbox_iter (model, &iter, &inbox_iter))
path = gtk_tree_model_get_path (model, &inbox_iter);
if (!model)
return FALSE;
-
- gtk_tree_model_get_iter_first (model, &iter);
+ if (!gtk_tree_model_get_iter_first (model, &iter)) {
+ g_warning ("%s: model is empty", __FUNCTION__);
+ return FALSE;
+ }
+
if (find_folder_iter (model, &iter, &folder_iter, folder)) {
GtkTreePath *path;