static void new_folder_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; FolderItem *new_item; gchar *new_folder; gchar *name; gchar *p; gchar separator = '/'; if (!folderview->selected) return; item = folderview_get_selected_item(folderview); cm_return_if_fail(item != NULL); cm_return_if_fail(item->folder != NULL); cm_return_if_fail(item->folder->account != NULL); new_folder = input_dialog_with_checkbtn (_("New folder"), _("Input the name of new folder:\n" "(if you want to create a folder to store subfolders\n" "only and no mail, append '/' to the folder name)"), _("NewFolder"), _("Inherit properties from parent folder"), &(prefs_common.inherit_folder_props)); if (!new_folder) return; AUTORELEASE_STR(new_folder, {g_free(new_folder); return;});
void rssyl_new_feed_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView*)data; FolderItem *item; gchar *url; debug_print("RSSyl: new_feed_cb\n"); g_return_if_fail(folderview->selected != NULL); item = folderview_get_selected_item(folderview); g_return_if_fail(item != NULL); g_return_if_fail(item->folder != NULL); url = input_dialog(_("Subscribe feed"), _("Input the URL of the news feed you wish to subscribe:"), ""); if( url == NULL ) /* User cancelled */ return; rssyl_subscribe(item, url, TRUE); g_free(url); }
void rssyl_new_folder_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView*)data; FolderItem *item; FolderItem *new_item; gchar *new_folder, *p, *tmp; gint i = 1; if (!folderview->selected) return; item = folderview_get_selected_item(folderview); g_return_if_fail(item != NULL); g_return_if_fail(item->folder != NULL); new_folder = input_dialog(_("New folder"), _("Input the name of new folder:"), _("NewFolder")); if (!new_folder) return; p = strchr(new_folder, G_DIR_SEPARATOR); if (p) { alertpanel_error(_("'%c' can't be used in folder name."), G_DIR_SEPARATOR); g_free(new_folder); return; } if (!folder_local_name_ok(new_folder)) { g_free(new_folder); return; } /* Find an unused name for new folder */ /* TODO: Perhaps stop after X attempts? */ tmp = g_strdup(new_folder); while (folder_find_child_item_by_name(item, tmp)) { debug_print("RSSyl: Folder '%s' already exists, trying another name\n", new_folder); g_free(tmp); tmp = g_strdup_printf("%s__%d", new_folder, ++i); } g_free(new_folder); new_folder = tmp; new_item = folder_create_folder(item, new_folder); if (!new_item) { alertpanel_error(_("Can't create the folder '%s'."), new_folder); g_free(new_folder); return; } g_free(new_folder); folder_write_list(); }
static void unsubscribe_newsgroup_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; gchar *name; gchar *message; gchar *old_id; AlertValue avalue; MainWindow *mainwin = mainwindow_get_mainwindow(); if (!folderview->selected) return; item = folderview_get_selected_item(folderview); cm_return_if_fail(item != NULL); if (mainwin->lock_count || news_folder_locked(item->folder)) return; 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); name = trim_string(item->path, 32); message = g_strdup_printf(_("Really unsubscribe newsgroup '%s'?"), name); avalue = alertpanel_full(_("Unsubscribe newsgroup"), message, GTK_STOCK_CANCEL, _("_Unsubscribe"), NULL, ALERTFOCUS_FIRST, FALSE, NULL, ALERT_WARNING); g_free(message); g_free(name); if (avalue != G_ALERTALTERNATE) return; if (item == folderview_get_opened_item(folderview)) { summary_clear_all(folderview->summaryview); folderview_close_opened(folderview, TRUE); } if(item->folder->klass->remove_folder(item->folder, item) < 0) { folder_item_scan(item); alertpanel_error(_("Can't remove the folder '%s'."), name); g_free(old_id); return; } folder_write_list(); prefs_filtering_delete_path(old_id); g_free(old_id); }
static void update_tree_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; const gchar *a_name = gtk_action_get_name(action); item = folderview_get_selected_item(folderview); g_return_if_fail(item != NULL); summary_show(folderview->summaryview, NULL); g_return_if_fail(item->folder != NULL); DO_ACTION("FolderViewPopup/CheckNewMessages", folderview_check_new(item->folder)); DO_ACTION("FolderViewPopup/CheckNewFolders", folderview_rescan_tree(item->folder, FALSE)); DO_ACTION("FolderViewPopup/RebuildTree", folderview_rescan_tree(item->folder, TRUE)); }
void rssyl_remove_folder_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView*)data; FolderItem *item, *opened; gchar *message, *name; AlertValue avalue; gchar *old_id; 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); opened = folderview_get_opened_item(folderview); name = trim_string(item->name, 32); AUTORELEASE_STR(name, {g_free(name); return;});
static void new_folder_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; FolderItem *new_item; gchar *new_folder; gchar *name; gchar *p; if (!folderview->selected) return; item = folderview_get_selected_item(folderview); g_return_if_fail(item != NULL); g_return_if_fail(item->folder != NULL); new_folder = input_dialog(_("New folder"), _("Input the name of new folder:"), _("NewFolder")); if (!new_folder) return; AUTORELEASE_STR(new_folder, {g_free(new_folder); return;});
static void rename_newsgroup_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; gchar *new_folder; gchar *name; gchar *message; item = folderview_get_selected_item(folderview); 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); new_folder = input_dialog(_("Rename newsgroup folder"), message, item->name); g_free(message); g_free(name); if (!new_folder) return; AUTORELEASE_STR(new_folder, {g_free(new_folder); return;});
static void subscribe_newsgroup_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; Folder *folder; FolderItem *item; FolderItem *rootitem; FolderItem *newitem; GSList *new_subscr; GSList *cur; GNode *gnode; MainWindow *mainwin = mainwindow_get_mainwindow(); if ((item = folderview_get_selected_item(folderview)) == NULL) return; if (mainwin->lock_count || news_folder_locked(item->folder)) return; folder = item->folder; cm_return_if_fail(folder != NULL); cm_return_if_fail(FOLDER_TYPE(folder) == F_NEWS); cm_return_if_fail(folder->account != NULL); if ((rootitem = folder_item_parent(item)) == NULL) rootitem = item; new_subscr = grouplist_dialog(folder); /* remove unsubscribed newsgroups */ for (gnode = folder->node->children; gnode != NULL; ) { GNode *next = gnode->next; item = FOLDER_ITEM(gnode->data); if (g_slist_find_custom(new_subscr, item->path, (GCompareFunc)g_ascii_strcasecmp) != NULL) { gnode = next; continue; } if (folderview_get_opened_item(folderview) == item) { summary_clear_all(folderview->summaryview); folderview_close_opened(folderview, TRUE); } folderview_remove_item(folderview, item); folder_item_remove(item); gnode = next; } folderview_freeze(folderview); /* add subscribed newsgroups */ for (cur = new_subscr; cur != NULL; cur = cur->next) { gchar *name = (gchar *)cur->data; FolderUpdateData hookdata; if (news_find_child_item(rootitem, name) != NULL) continue; newitem = folder_item_new(folder, name, name); folder_item_append(rootitem, newitem); 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); } folderview_thaw(folderview); slist_free_strings_full(new_subscr); folder_write_list(); }