2012-10-12 [mones] 3.8.1cvs98
[claws.git] / src / news_gtk.c
index 9c87b96116b5fcb2806df5a9b7e66d4f9d80a778..c848853ab16dd7200660b69d175efe1cba0b0aff 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * 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
@@ -19,6 +19,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include "defs.h"
@@ -130,6 +131,21 @@ static void set_sensitivity(GtkUIManager *ui_manager, FolderItem *item)
 #undef SET_SENS
 }
 
+static FolderItem *news_find_child_item(FolderItem *item, const gchar *path)
+{
+       GNode *node;
+       FolderItem *child;
+
+       for (node = item->node->children; node != NULL; node = node->next) {
+               child = FOLDER_ITEM(node->data);
+               if (strcmp2(child->path, path) == 0) {
+                       return child;
+               }
+       }
+
+       return NULL;
+}
+
 static void subscribe_newsgroup_cb(GtkAction *action, gpointer data)
 {
        FolderView *folderview = (FolderView *)data;
@@ -147,15 +163,15 @@ static void subscribe_newsgroup_cb(GtkAction *action, gpointer data)
        if (!folderview->selected) return;
 
        item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
-       g_return_if_fail(item != NULL);
+       cm_return_if_fail(item != NULL);
 
        if (mainwin->lock_count || news_folder_locked(item->folder))
                return;
 
        folder = item->folder;
-       g_return_if_fail(folder != NULL);
-       g_return_if_fail(FOLDER_TYPE(folder) == F_NEWS);
-       g_return_if_fail(folder->account != NULL);
+       cm_return_if_fail(folder != NULL);
+       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;
@@ -201,7 +217,7 @@ static void subscribe_newsgroup_cb(GtkAction *action, gpointer data)
                gchar *name = (gchar *)cur->data;
                FolderUpdateData hookdata;
 
-               if (folder_find_child_item_by_name(rootitem, name) != NULL)
+               if (news_find_child_item(rootitem, name) != NULL)
                        continue;
 
                newitem = folder_item_new(folder, name, name);
@@ -215,8 +231,7 @@ static void subscribe_newsgroup_cb(GtkAction *action, gpointer data)
 
        gtk_cmclist_thaw(GTK_CMCLIST(ctree));
 
-       slist_free_strings(new_subscr);
-       g_slist_free(new_subscr);
+       slist_free_strings_full(new_subscr);
 
        folder_write_list();
 }
@@ -235,14 +250,14 @@ static void unsubscribe_newsgroup_cb(GtkAction *action, gpointer data)
        if (!folderview->selected) return;
 
        item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
-       g_return_if_fail(item != NULL);
+       cm_return_if_fail(item != NULL);
 
        if (mainwin->lock_count || news_folder_locked(item->folder))
                return;
 
-       g_return_if_fail(item->folder != NULL);
-       g_return_if_fail(FOLDER_TYPE(item->folder) == F_NEWS);
-       g_return_if_fail(item->folder->account != NULL);
+       cm_return_if_fail(item->folder != NULL);
+       cm_return_if_fail(FOLDER_TYPE(item->folder) == F_NEWS);
+       cm_return_if_fail(item->folder->account != NULL);
 
        old_id = folder_item_get_identifier(item);
 
@@ -273,21 +288,6 @@ static void unsubscribe_newsgroup_cb(GtkAction *action, gpointer data)
        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;
@@ -297,9 +297,9 @@ static void rename_newsgroup_cb(GtkAction *action, gpointer data)
        gchar *message;
 
        item = folderview_get_selected_item(folderview);
-       g_return_if_fail(item != NULL);
-       g_return_if_fail(item->path != NULL);
-       g_return_if_fail(item->folder != NULL);
+       cm_return_if_fail(item != NULL);
+       cm_return_if_fail(item->path != NULL);
+       cm_return_if_fail(item->folder != NULL);
 
        name = trim_string(item->name, 32);
        message = g_strdup_printf(_("Input new name for '%s':"), name);
@@ -316,7 +316,7 @@ static void rename_newsgroup_cb(GtkAction *action, gpointer 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);
@@ -339,14 +339,14 @@ static void update_tree_cb(GtkAction *action, gpointer data)
        MainWindow *mainwin = mainwindow_get_mainwindow();
        
        item = folderview_get_selected_item(folderview);
-       g_return_if_fail(item != NULL);
+       cm_return_if_fail(item != NULL);
 
        if (mainwin->lock_count || news_folder_locked(item->folder))
                return;
 
        summary_show(folderview->summaryview, NULL);
 
-       g_return_if_fail(item->folder != NULL);
+       cm_return_if_fail(item->folder != NULL);
 
        folderview_check_new(item->folder);
 }
@@ -357,7 +357,7 @@ static void sync_cb(GtkAction *action, gpointer data)
        FolderItem *item;
 
        item = folderview_get_selected_item(folderview);
-       g_return_if_fail(item != NULL);
+       cm_return_if_fail(item != NULL);
        folder_synchronise(item->folder);
 }
 
@@ -371,8 +371,8 @@ void news_gtk_synchronise(FolderItem *item, gint days)
        gint total = 0;
        time_t t = time(NULL);
 
-       g_return_if_fail(item != NULL);
-       g_return_if_fail(item->folder != NULL);
+       cm_return_if_fail(item != NULL);
+       cm_return_if_fail(item->folder != NULL);
 
        if (mainwin->lock_count || news_folder_locked(item->folder))
                return;