modest_folder_view_class_init (ModestFolderViewClass *klass)
{
GObjectClass *gobject_class;
+ GtkTreeViewClass *treeview_class;
gobject_class = (GObjectClass*) klass;
+ treeview_class = (GtkTreeViewClass*) klass;
parent_class = g_type_class_peek_parent (klass);
gobject_class->finalize = modest_folder_view_finalize;
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ treeview_class->select_cursor_parent = NULL;
+
}
/* Simplify checks for NULLs: */
}
static void
-text_cell_data (GtkTreeViewColumn *column,
+text_cell_data (GtkTreeViewColumn *column,
GtkCellRenderer *renderer,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
+ GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
gpointer data)
{
ModestFolderViewPrivate *priv;
TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN, &type,
TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &instance,
-1);
- if (!fname)
- return;
-
- if (!instance) {
- g_free (fname);
- return;
- }
+ if (!fname || !instance)
+ goto end;
ModestFolderView *self = MODEST_FOLDER_VIEW (data);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
/* Use bold font style if there are unread or unset messages */
if (number > 0) {
- item_name = g_strdup_printf ("%s (%d)", fname, number);
+ if (type == TNY_FOLDER_TYPE_INBOX)
+ item_name = g_strdup_printf ("%s (%d)", _("mcen_me_folder_inbox"), number);
+ else
+ item_name = g_strdup_printf ("%s (%d)", fname, number);
item_weight = 800;
} else {
- item_name = g_strdup (fname);
+ if (type == TNY_FOLDER_TYPE_INBOX)
+ item_name = g_strdup (_("mcen_me_folder_inbox"));
+ else
+ item_name = g_strdup (fname);
item_weight = 400;
}
modest_tny_account_get_mmc_account_name (TNY_STORE_ACCOUNT (instance),
on_get_mmc_account_name, callback_data);
}
-
- g_object_unref (G_OBJECT (instance));
- g_free (fname);
+ end:
+ if (instance)
+ g_object_unref (G_OBJECT (instance));
+ if (fname)
+ g_free (fname);
}
{
TnyAccountStoreViewIface *klass = (TnyAccountStoreViewIface *)g;
- klass->set_account_store_func = modest_folder_view_set_account_store;
-
- return;
+ klass->set_account_store = modest_folder_view_set_account_store;
}
static void
}
if (priv->cur_folder_store) {
- if (TNY_IS_FOLDER(priv->cur_folder_store))
- tny_folder_sync (TNY_FOLDER(priv->cur_folder_store), FALSE, NULL);
+ if (TNY_IS_FOLDER(priv->cur_folder_store)) {
+ ModestMailOperation *mail_op;
+
+ mail_op = modest_mail_operation_new (NULL);
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+ modest_mail_operation_sync_folder (mail_op, TNY_FOLDER (priv->cur_folder_store), FALSE);
+ g_object_unref (mail_op);
+ }
g_object_unref (priv->cur_folder_store);
priv->cur_folder_store = NULL;
}
static void
-on_connection_status_changed (TnyAccount *self,
- TnyConnectionStatus status,
- gpointer user_data)
-{
- /* If the account becomes online then refresh it */
- if (status == TNY_CONNECTION_STATUS_CONNECTED) {
- const gchar *acc_name;
- GtkWidget *my_window;
-
- my_window = gtk_widget_get_ancestor (GTK_WIDGET (user_data), MODEST_TYPE_WINDOW);
- acc_name = modest_tny_account_get_parent_modest_account_name_for_server_account (self);
- modest_ui_actions_do_send_receive (acc_name, FALSE, MODEST_WINDOW (my_window));
- }
-}
-
-static void
on_account_inserted (TnyAccountStore *account_store,
TnyAccount *account,
gpointer user_data)
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (user_data);
+
/* If we're adding a new account, and there is no previous
one, we need to select the visible server account */
if (priv->style == MODEST_FOLDER_VIEW_STYLE_SHOW_ONE &&
G_OBJECT (user_data),
MODEST_CONF_FOLDER_VIEW_KEY);
+ if (!GTK_IS_TREE_VIEW(user_data)) {
+ g_warning ("BUG: %s: not a valid tree view", __FUNCTION__);
+ return;
+ }
+
/* Get the inner model */
+ /* check, is some rare cases, we did not get the right thing here,
+ * NB#84097 */
filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (user_data));
+ if (!GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ g_warning ("BUG: %s: not a valid filter model", __FUNCTION__);
+ return;
+ }
+
+ /* check, is some rare cases, we did not get the right thing here,
+ * NB#84097 */
sort_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
+ if (!GTK_IS_TREE_MODEL_SORT(sort_model)) {
+ g_warning ("BUG: %s: not a valid sort model", __FUNCTION__);
+ return;
+ }
/* 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 (account));
-
-
- /* When the store account gets online refresh it */
- 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));
}
if (TNY_IS_TRANSPORT_ACCOUNT (tny_account))
return;
+ if (!MODEST_IS_FOLDER_VIEW(user_data)) {
+ g_warning ("BUG: %s: not a valid folder view", __FUNCTION__);
+ return;
+ }
+
+
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (user_data);
/* Get the inner model */
filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (user_data));
+ if (!GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ g_warning ("BUG: %s: not a valid filter model", __FUNCTION__);
+ return;
+ }
+
+
sort_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
+ if (!GTK_IS_TREE_MODEL_SORT(sort_model)) {
+ g_warning ("BUG: %s: not a valid sort model", __FUNCTION__);
+ return;
+ }
/* Remove the account from the model */
tny_list_remove (TNY_LIST (gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model))),
G_OBJECT (tny_account));
-
+
/* 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));
{
ModestFolderView *self = MODEST_FOLDER_VIEW (user_data);
+ gdk_threads_enter ();
modest_folder_view_select_first_inbox_or_local (self);
+ gdk_threads_leave ();
return FALSE;
}
if (TNY_IS_TRANSPORT_ACCOUNT (account))
return;
+ if (!MODEST_IS_FOLDER_VIEW(user_data)) {
+ g_warning ("BUG: %s: not a valid folder view", __FUNCTION__);
+ return;
+ }
+
self = MODEST_FOLDER_VIEW (user_data);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
/* Remove the account from the model */
filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
+ if (!GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ g_warning ("BUG: %s: not a valid filter model", __FUNCTION__);
+ return;
+ }
+
sort_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model));
+ if (!GTK_IS_TREE_MODEL_SORT(sort_model)) {
+ g_warning ("BUG: %s: not a valid sort model", __FUNCTION__);
+ return;
+ }
+
tny_list_remove (TNY_LIST (gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sort_model))),
G_OBJECT (account));
priv = MODEST_FOLDER_VIEW_GET_PRIVATE(self);
/* Notify that there is no folder selected */
- g_signal_emit (G_OBJECT(self),
+ g_signal_emit (G_OBJECT(self),
signals[FOLDER_SELECTION_CHANGED_SIGNAL], 0,
NULL, FALSE);
if (priv->cur_folder_store) {
g_signal_connect (G_OBJECT(filter_model), "row-inserted",
(GCallback) on_row_inserted_maybe_select_folder, self);
-
g_object_unref (model);
g_object_unref (filter_model);
g_object_unref (sortable);
gpointer user_data)
{
DndHelper *helper;
+ GtkWidget *folder_view;
helper = (DndHelper *) user_data;
+ folder_view = g_object_ref (helper->folder_view);
/* Common part */
xfer_cb (mail_op, user_data);
/* Select the folder */
if (new_folder)
- modest_folder_view_select_folder (MODEST_FOLDER_VIEW (helper->folder_view),
+ modest_folder_view_select_folder (MODEST_FOLDER_VIEW (folder_view),
new_folder, FALSE);
+ g_object_unref (folder_view);
}
forbidden = rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE;
} else if (TNY_IS_FOLDER_STORE(folder)) {
/* enable local root as destination for folders */
- if (!MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (folder)
- && TNY_IS_ACCOUNT (folder))
+ if (!MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (folder) &&
+ !modest_tny_account_is_memory_card_account (TNY_ACCOUNT (folder)))
forbidden = TRUE;
}
g_object_unref (folder);
/* Expand the selected row after 1/2 second */
if (!gtk_tree_view_row_expanded (GTK_TREE_VIEW (widget), dest_row)) {
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), dest_row, pos);
priv->timer_expander = g_timeout_add (500, expand_row_timeout, widget);
}
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget), dest_row, pos);
/* Select the desired action. By default we pick MOVE */
suggested_action = GDK_ACTION_MOVE;
out:
if (folder)
g_object_unref (folder);
- if (dest_row)
+ if (dest_row) {
gtk_tree_path_free (dest_row);
+ }
g_signal_stop_emission_by_name (widget, "drag-motion");
return valid_location;