/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2009 Hiroyuki Yamamoto & the Claws Mail Team
+ * Copyright (C) 1999-2012 Hiroyuki Yamamoto & the Claws Mail Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#ifdef HAVE_CONFIG_H
# include "config.h"
+#include "claws-features.h"
#endif
#include "defs.h"
static void subscribe_newsgroup_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
- GtkCMCTreeNode *servernode, *node;
Folder *folder;
FolderItem *item;
FolderItem *rootitem;
GNode *gnode;
MainWindow *mainwin = mainwindow_get_mainwindow();
- if (!folderview->selected) return;
-
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
- cm_return_if_fail(item != NULL);
+ if ((item = folderview_get_selected_item(folderview)) == NULL) return;
if (mainwin->lock_count || news_folder_locked(item->folder))
return;
cm_return_if_fail(FOLDER_TYPE(folder) == F_NEWS);
cm_return_if_fail(folder->account != NULL);
- if (GTK_CMCTREE_ROW(folderview->selected)->parent != NULL)
- servernode = GTK_CMCTREE_ROW(folderview->selected)->parent;
- else
- servernode = folderview->selected;
-
- rootitem = gtk_cmctree_node_get_row_data(ctree, servernode);
+ if ((rootitem = folder_item_parent(item)) == NULL)
+ rootitem = item;
new_subscr = grouplist_dialog(folder);
continue;
}
- node = gtk_cmctree_find_by_row_data(ctree, servernode, item);
- if (!node) {
- gnode = next;
- continue;
- }
-
- if (folderview->opened == node) {
+ if (folderview_get_opened_item(folderview) == item) {
summary_clear_all(folderview->summaryview);
- folderview->opened = NULL;
+ folderview_close_opened(folderview, TRUE);
}
- gtk_cmctree_remove_node(ctree, node);
+ folderview_remove_item(folderview, item);
folder_item_remove(item);
gnode = next;
}
- gtk_cmclist_freeze(GTK_CMCLIST(ctree));
+ folderview_freeze(folderview);
/* add subscribed newsgroups */
for (cur = new_subscr; cur != NULL; cur = cur->next) {
hookdata.folder = newitem->folder;
hookdata.update_flags = FOLDER_TREE_CHANGED | FOLDER_ADD_FOLDERITEM;
hookdata.item = newitem;
+ hookdata.item2 = NULL;
hooks_invoke(FOLDER_UPDATE_HOOKLIST, &hookdata);
}
- gtk_cmclist_thaw(GTK_CMCLIST(ctree));
+ folderview_thaw(folderview);
- slist_free_strings(new_subscr);
- g_slist_free(new_subscr);
+ slist_free_strings_full(new_subscr);
folder_write_list();
}
static void unsubscribe_newsgroup_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
gchar *name;
gchar *message;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
if (mainwin->lock_count || news_folder_locked(item->folder))
g_free(name);
if (avalue != G_ALERTALTERNATE) return;
- if (folderview->opened == folderview->selected) {
+ if (item == folderview_get_opened_item(folderview)) {
summary_clear_all(folderview->summaryview);
- folderview->opened = NULL;
+ folderview_close_opened(folderview, TRUE);
}
if(item->folder->klass->remove_folder(item->folder, item) < 0) {
g_free(old_id);
}
-static FolderItem *find_child_by_name(FolderItem *item, const gchar *name)
-{
- GNode *node;
- FolderItem *child;
-
- for (node = item->node->children; node != NULL; node = node->next) {
- child = FOLDER_ITEM(node->data);
- if (strcmp2(child->name, name) == 0) {
- return child;
- }
- }
-
- return NULL;
-}
-
static void rename_newsgroup_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
return;
}
- if (find_child_by_name(folder_item_parent(item), new_folder)) {
+ if (folder_find_child_item_by_name(folder_item_parent(item), new_folder)) {
name = trim_string(new_folder, 32);
alertpanel_error(_("The folder '%s' already exists."), name);
g_free(name);
static void download_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
news_gtk_synchronise(item, 0);
}