item->last_num = -1;
item->no_sub = FALSE;
item->no_select = FALSE;
- item->collapsed = FALSE; /* default is open */
+ item->collapsed = FALSE;
item->parent = NULL;
item->folder = NULL;
item->data = NULL;
g_return_val_if_fail(msginfo != NULL, -1);
folder = dest->folder;
-
- g_return_val_if_fail(folder->scan != NULL, -1);
- g_return_val_if_fail(folder->move_msg != NULL, -1);
-
if (dest->last_num < 0) folder->scan(folder, dest);
num = folder->move_msg(folder, dest, msginfo);
g_return_val_if_fail(msglist != NULL, -1);
folder = dest->folder;
-
- g_return_val_if_fail(folder->scan != NULL, -1);
- g_return_val_if_fail(folder->move_msgs_with_dest != NULL, -1);
-
if (dest->last_num < 0) folder->scan(folder, dest);
num = folder->move_msgs_with_dest(folder, dest, msglist);
g_return_val_if_fail(msginfo != NULL, -1);
folder = dest->folder;
-
- g_return_val_if_fail(folder->scan != NULL, -1);
- g_return_val_if_fail(folder->copy_msg != NULL, -1);
-
if (dest->last_num < 0) folder->scan(folder, dest);
num = folder->copy_msg(folder, dest, msginfo);
g_return_val_if_fail(msglist != NULL, -1);
folder = dest->folder;
-
- g_return_val_if_fail(folder->scan != NULL, -1);
- g_return_val_if_fail(folder->copy_msgs_with_dest != NULL, -1);
-
if (dest->last_num < 0) folder->scan(folder, dest);
num = folder->copy_msgs_with_dest(folder, dest, msglist);
account = account_find_from_id(atoi(attr->value));
if (!account) g_warning("account_id: %s not found\n",
attr->value);
- }
- else if (!strcmp(attr->name, "collapsed")) {
- collapsed = *(attr->value) == '1' ? 1 : 0;
- }
+ } else if (!strcmp(attr->name, "collapsed"))
+ collapsed = *attr->value == '1' ? TRUE : FALSE;
}
folder = folder_new(type, name, path);
folder->account = account;
if (account && (type == F_IMAP || type == F_NEWS))
account->folder = REMOTE_FOLDER(folder);
-
node->data = folder->node->data;
g_node_destroy(folder->node);
folder->node = node;
-
folder_add(folder);
+ FOLDER_ITEM(node->data)->collapsed = collapsed;
g_node_traverse(node, G_PRE_ORDER, G_TRAVERSE_ALL, -1,
folder_build_tree, folder);
- /* ALFONS_NOTE: after a folder_new() the folder system also created a
- * FolderItem for the folder (which makes insertion in the GtkCTree
- * easier because it deals with FolderItems only). put the collapsed
- * state for this Folder in its associated FolderItem */
-
- FOLDER_ITEM((folder->node->data))->collapsed = collapsed;
-
return FALSE;
}
if (folder->account)
fprintf(fp, " account_id=\"%d\"",
folder->account->account_id);
-
- /* ALFONS_NOTE: for each Folder structure, also a FolderItem is created;
- * this is very clever, but undocumented. (it is clever because the
- * folderview's GtkCTree only deals with FolderItems.) */
- if (item->collapsed )
- fprintf(fp, " collapsed=\"1\"");
-
+ if (item->collapsed)
+ fputs(" collapsed=\"1\"", fp);
} else {
fprintf(fp, "<folderitem type=\"%s\"",
folder_item_stype_str[item->stype]);
fputs(" no_sub=\"1\"", fp);
if (item->no_select)
fputs(" no_select=\"1\"", fp);
- if (item->collapsed)
+ if (item->collapsed)
fputs(" collapsed=\"1\"", fp);
fprintf(fp,
" mtime=\"%ld\" new=\"%d\" unread=\"%d\" total=\"%d\"",
static void folderview_expand_func(GtkCTree *ctree, GtkCTreeNode *node,
gpointer data)
{
- /* NOTE: data should by FolderView pointer */
+ FolderView *folderview = (FolderView *)data;
+ FolderItem *item;
+
if (GTK_CTREE_ROW(node)->children) {
- FolderItem *item = gtk_ctree_node_get_row_data(ctree, node);
- FolderView *view = (FolderView *) data;
+ item = gtk_ctree_node_get_row_data(ctree, node);
g_return_if_fail(item != NULL);
- g_return_if_fail(view);
-
- if (!item->collapsed) {
+
+ if (!item->collapsed)
gtk_ctree_expand(ctree, node);
- }
- else {
- /* if it is collapsed we should update the node,
- * in case one of the children contains unread
- * messages or other visible state things */
- folderview_update_node(view, node);
- }
- }
+ else
+ folderview_update_node(folderview, node);
+ }
}
#define SET_SPECIAL_FOLDER(ctree, item) \
static void folderview_tree_expanded(GtkCTree *ctree, GtkCTreeNode *node,
FolderView *folderview)
{
- FolderItem *item = gtk_ctree_node_get_row_data(ctree, node);
+ FolderItem *item;
- g_return_if_fail(item);
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ g_return_if_fail(item != NULL);
item->collapsed = FALSE;
folderview_update_node(folderview, node);
}
static void folderview_tree_collapsed(GtkCTree *ctree, GtkCTreeNode *node,
FolderView *folderview)
{
- FolderItem *item = gtk_ctree_node_get_row_data(ctree, node);
+ FolderItem *item;
- g_return_if_fail(item);
- item->collapsed = TRUE;
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ g_return_if_fail(item != NULL);
+ item->collapsed= TRUE;
folderview_update_node(folderview, node);
}