#include "prefs_folder_item.h"
#include "procheader.h"
#include "statusbar.h"
+#include "hooks.h"
+#include "log.h"
/* Dependecies to be removed ?! */
#include "prefs_common.h"
new_item->folder = dest->folder;
/* move messages */
+ statusbar_verbosity_set(TRUE);
for (cur = mlist ; cur != NULL ; cur = cur->next) {
MsgInfo * msginfo;
cnt++;
if (cnt%500)
- statusbar_print_all(_("Moving %s to %s (%d%%)..."), src->name,
+ log_message(_("Moving %s to %s (%d%%)...\n"), src->name,
new_item->path,
100*cnt/g_slist_length(mlist));
msginfo = (MsgInfo *) cur->data;
folder_item_move_msg(new_item, msginfo);
- if (cnt%500)
- statusbar_pop_all();
procmsg_msginfo_free(msginfo);
}
+ statusbar_verbosity_set(FALSE);
/*copy prefs*/
prefs_folder_item_copy_prefs(src, new_item);
gint folder_item_move_to(FolderItem *src, FolderItem *dest, FolderItem **new_item)
{
FolderItem *tmp = dest->parent;
- char * src_identifier, * dst_identifier, * new_identifier;
- char * phys_srcpath, * phys_dstpath;
+ gchar * src_identifier, * dst_identifier;
+ gchar * phys_srcpath, * phys_dstpath;
GNode *src_node;
while (tmp) {
/*
* Callback handling for FolderItem content changes
*/
-GSList *folder_item_update_callbacks_list = NULL;
-gint folder_item_update_callbacks_nextid = 0;
-
-struct FolderItemUpdateCallback
-{
- gint id;
- FolderItemUpdateFunc func;
- gpointer data;
-};
-
-gint folder_item_update_callback_register(FolderItemUpdateFunc func, gpointer data)
-{
- struct FolderItemUpdateCallback *callback;
-
- g_return_val_if_fail(func != NULL, -1);
-
- folder_item_update_callbacks_nextid++;
-
- callback = g_new0(struct FolderItemUpdateCallback, 1);
- callback->id = folder_item_update_callbacks_nextid;
- callback->func = func;
- callback->data = data;
-
- folder_item_update_callbacks_list =
- g_slist_append(folder_item_update_callbacks_list, callback);
-
- return folder_item_update_callbacks_nextid;
-}
-
-void folder_item_update_callback_unregister(gint id)
-{
- GSList *list, *next;
-
- for (list = folder_item_update_callbacks_list; list != NULL; list = next) {
- struct FolderItemUpdateCallback *callback;
-
- next = list->next;
-
- callback = list->data;
- if (callback->id == id) {
- folder_item_update_callbacks_list =
- g_slist_remove(folder_item_update_callbacks_list, callback);
- g_free(callback);
- }
- }
-}
-
-static void folder_item_update_callback_execute(FolderItem *item, gboolean contentchange)
-{
- GSList *list;
-
- for (list = folder_item_update_callbacks_list; list != NULL; list = list->next) {
- struct FolderItemUpdateCallback *callback;
-
- callback = list->data;
- callback->func(item, contentchange, callback->data);
- }
-}
-
void folder_update_item(FolderItem *item, gboolean contentchange)
{
- folder_item_update_callback_execute(item, contentchange);
+ FolderItemUpdateData source;
+
+ source.item = item;
+ source.content_change = contentchange;
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
}
static void folder_update_item_func(FolderItem *item, gpointer contentchange)
{
+ FolderItemUpdateData source;
+
if (item->need_update) {
- folder_item_update_callback_execute(item, GPOINTER_TO_INT(contentchange));
+ source.item = item;
+ source.content_change = GPOINTER_TO_INT(contentchange);
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
+
item->need_update = FALSE;
}
}
void folder_update_item_recursive(FolderItem *item, gboolean update_summary)
{
GNode *node = item->folder->node;
+ FolderItemUpdateData source;
+
node = g_node_find(node, G_PRE_ORDER, G_TRAVERSE_ALL, item);
node = node->children;
- folder_item_update_callback_execute(item, update_summary);
+
+ source.item = item;
+ source.content_change = update_summary;
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
while (node != NULL) {
if (node && node->data) {
FolderItem *next_item = (FolderItem*) node->data;
- folder_item_update_callback_execute(next_item, update_summary);
+
+ source.item = next_item;
+ source.content_change = update_summary;
+ hooks_invoke(FOLDER_ITEM_UPDATE_HOOKLIST, &source);
}
node = node->next;
}