G_CALLBACK(modest_ui_actions_on_folder_selection_changed), self);
g_signal_connect (G_OBJECT(priv->folder_view), "button-press-event",
G_CALLBACK (on_folder_view_button_press_event),self);
- g_signal_connect (priv->folder_view,"popup-menu",
- G_CALLBACK (on_folder_view_button_press_event),self);
+/* g_signal_connect (priv->folder_view, "popup-menu", */
+/* G_CALLBACK (on_folder_view_button_press_event),self); */
/* header view */
g_signal_connect (G_OBJECT(priv->header_view), "status_update",
gboolean selected,
ModestMainWindow *main_window)
{
-// GtkLabel *folder_info_label;
- gchar *txt;
+ gchar *txt;
ModestConf *conf;
GtkWidget *header_view;
-/* folder_info_label = */
-/* GTK_LABEL (modest_widget_factory_get_folder_info_label */
-/* (modest_runtime_get_widget_factory())); */
-
-/* if (!folder) { */
-/* gtk_label_set_label (GTK_LABEL(folder_info_label), ""); */
-/* return; */
-/* } */
-
g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
header_view = modest_main_window_get_child_widget(main_window,
if (!folder_view)
return;
- folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
+ folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (folder_view));
mail_op = modest_mail_operation_new ();
modest_mail_operation_remove_folder (mail_op, folder, move_to_trash);
if (error)
g_warning ("%s\n", error->message);
- g_object_unref (mail_op);
+ g_object_unref (G_OBJECT (mail_op));
+ g_object_unref (G_OBJECT (folder));
}
void
g_free (key);
g_string_free (str, TRUE);
g_list_free (cols);
+ g_object_unref (G_OBJECT (folder));
return TRUE;
}
}
g_free (key);
+ g_object_unref (G_OBJECT (folder));
+
return TRUE;
}
/* folder was _un_selected if true */
if (!gtk_tree_selection_get_selected (sel, &model_sort, &iter_sort)) {
- priv->cur_folder = NULL; /* FIXME: need this? */
- gtk_tree_row_reference_free (priv->cur_row);
+ if (priv->cur_folder)
+ g_object_unref (priv->cur_folder);
+ if (priv->cur_row)
+ gtk_tree_row_reference_free (priv->cur_row);
+ priv->cur_folder = NULL;
priv->cur_row = NULL;
return;
}
TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &folder,
-1);
- if (type == TNY_FOLDER_TYPE_ROOT) {
+ /* If the folder is the same or is a root folder do not notify */
+ if ((type == TNY_FOLDER_TYPE_ROOT) || (priv->cur_folder == folder)) {
g_object_unref (folder);
return;
}
/* Current folder was unselected */
- g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
- priv->cur_folder, FALSE);
+ if (priv->cur_folder) {
+ g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
+ priv->cur_folder, FALSE);
+ g_object_unref (priv->cur_folder);
+ }
- if (priv->cur_row) {
-/* tny_folder_sync (priv->cur_folder, TRUE, NULL); /\* FIXME *\/ */
+ if (priv->cur_row)
gtk_tree_row_reference_free (priv->cur_row);
- }
/* New current references */
path = gtk_tree_model_get_path (model_sort, &iter_sort);
/* Frees */
gtk_tree_path_free (path);
- g_object_unref (G_OBJECT (folder));
/* New folder has been selected */
g_signal_emit (G_OBJECT(tree_view),
return priv->cur_folder;
}
-/* static gboolean */
-/* get_model_iter (ModestFolderView *self, */
-/* GtkTreeModel **model, */
-/* GtkTreeIter *iter) */
-/* { */
-/* GtkTreeModel *model_sort; */
-/* GtkTreeIter iter_sort; */
-/* GtkTreePath *path; */
-/* ModestFolderViewPrivate *priv; */
-
-/* priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self); */
-
-/* if (!priv->cur_folder) */
-/* return FALSE; */
-
-/* if (!gtk_tree_row_reference_valid (priv->cur_row)) */
-/* return FALSE; */
-
-/* model_sort = gtk_tree_view_get_model (GTK_TREE_VIEW (self)); */
-/* *model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model_sort)); */
-
-/* /\* Get path to retrieve iter *\/ */
-/* path = gtk_tree_row_reference_get_path (priv->cur_row); */
-/* if (!gtk_tree_model_get_iter (model_sort, &iter_sort, path)) */
-/* return FALSE; */
-
-/* gtk_tree_model_sort_convert_iter_to_child_iter (GTK_TREE_MODEL_SORT (model_sort), */
-/* iter, */
-/* &iter_sort); */
-/* return TRUE; */
-/* } */
-
static gint
cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
gpointer user_data)
return MODEST_HEADER_VIEW_GET_PRIVATE(self)->style;
}
+/*
+ * This function sets a sortable model in the header view. It's just
+ * used for developing purposes, because it only does a
+ * gtk_tree_view_set_model
+ */
+static void
+modest_header_view_set_model (GtkTreeView *header_view, GtkTreeModel *model)
+{
+ GtkTreeModel *old_model_sort = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view));
+
+ if (old_model_sort && GTK_IS_TREE_MODEL_SORT (old_model_sort)) {
+ GtkTreeModel *old_model;
+
+ old_model = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (old_model_sort));
+ gtk_tree_view_set_model (header_view, model);
+ modest_runtime_verify_object_death (old_model, "");
+ modest_runtime_verify_object_death (old_model_sort, "");
+ } else {
+ ModestHeaderViewPrivate *priv;
+
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE(header_view);
+ g_mutex_lock (priv->monitor_lock);
+ if (priv->monitor) {
+ tny_folder_monitor_stop (priv->monitor);
+ g_object_unref (G_OBJECT (priv->monitor));
+ priv->monitor = NULL;
+ }
+ g_mutex_unlock (priv->monitor_lock);
+ gtk_tree_view_set_model (header_view, model);
+ }
+
+ return;
+}
+
static void
on_refresh_folder (TnyFolder *folder,
gboolean cancelled,
TnyList *headers;
if (cancelled) {
- GtkTreeSelection *selection;
+/* GtkTreeSelection *selection; */
+
+/* selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (user_data)); */
+/* gtk_tree_selection_unselect_all (selection); */
- g_warning ("Operation cancelled %s\n", (*error) ? (*error)->message : "unknown");
+ g_warning ("Operation cancelled %s\n", (*error) ? (*error)->message : "unknown");
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (user_data));
- gtk_tree_selection_unselect_all (selection);
return;
}
self = MODEST_HEADER_VIEW(user_data);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
- headers = TNY_LIST(tny_gtk_header_list_model_new ());
+ headers = TNY_LIST (tny_gtk_header_list_model_new ());
tny_gtk_header_list_model_set_folder (TNY_GTK_HEADER_LIST_MODEL(headers),
folder, TRUE);
sortable = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL(headers));
+ g_object_unref (G_OBJECT (headers));
/* install our special sorting functions */
cursor = cols = gtk_tree_view_get_columns (GTK_TREE_VIEW(self));
MODEST_HEADER_VIEW_COLUMN));
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE(sortable),
col_id,
- (GtkTreeIterCompareFunc)cmp_rows,
+ (GtkTreeIterCompareFunc) cmp_rows,
cursor->data, NULL);
cursor = g_list_next(cursor);
}
}
priv->monitor = TNY_FOLDER_MONITOR (tny_folder_monitor_new (folder));
tny_folder_monitor_add_list (priv->monitor, TNY_LIST (headers));
- g_object_unref (G_OBJECT (headers));
tny_folder_monitor_start (priv->monitor);
-
g_mutex_unlock (priv->monitor_lock);
/* Set new model */
- gtk_tree_view_set_model (GTK_TREE_VIEW (self), sortable);
+ modest_header_view_set_model (GTK_TREE_VIEW (self), sortable);
g_object_unref (G_OBJECT (sortable));
}
ModestHeaderViewPrivate *priv;
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
- /* Unset the old one */
- if (priv->folder)
+ if (priv->folder) {
g_object_unref (priv->folder);
-
- priv->folder = folder;
+ priv->folder = NULL;
+ }
if (folder) {
- g_object_ref (priv->folder);
+
+ priv->folder = g_object_ref (folder);
tny_folder_refresh_async (folder,
on_refresh_folder,
on_refresh_folder_status_update,
self);
- /* no message selected */
+ /* no message selected */
g_signal_emit (G_OBJECT(self), signals[HEADER_SELECTED_SIGNAL], 0,
NULL);
} else {
- gtk_tree_view_set_model (GTK_TREE_VIEW (self), NULL);
+ modest_header_view_set_model (GTK_TREE_VIEW (self), NULL);
}
}
g_signal_emit (G_OBJECT(self),
signals[HEADER_SELECTED_SIGNAL],
0, header);
+
+ g_object_unref (G_OBJECT (header));
}