/*
- * Claws-Mail-- a GTK+ based, lightweight, and fast e-mail client
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
* Copyright (C) 1999-2004 Hiroyuki Yamamoto
- * This file (C) 2005 Andrej Kacian <andrej@kacian.sk>
+ * This file (C) 2005-2018 Andrej Kacian <andrej@kacian.sk> and the
+ * Claws Mail team
*
* - callback handler functions for folderview rssyl context menu items
*
gpointer data)
{
FolderView *folderview = (FolderView*)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
gchar *url;
g_return_if_fail(folderview->selected != NULL);
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
g_return_if_fail(item != NULL);
g_return_if_fail(item->folder != NULL);
if( url == NULL ) /* User cancelled */
return;
- rssyl_subscribe(item, url, TRUE);
+ rssyl_subscribe(item, url, RSSYL_SHOW_ERRORS | RSSYL_SHOW_RENAME_DIALOG);
g_free(url);
}
gpointer data)
{
FolderView *folderview = (FolderView*)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
FolderItem *new_item;
gchar *new_folder, *p, *tmp;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
g_return_if_fail(item != NULL);
g_return_if_fail(item->folder != NULL);
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);
gpointer data)
{
FolderView *folderview = (FolderView*)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
- FolderItem *item;
+ FolderItem *item, *opened;
gchar *message, *name;
AlertValue avalue;
gchar *old_id;
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;});
"Recovery will not be possible.\n\n"
"Do you really want to delete?"), name);
avalue = alertpanel_full(_("Delete folder"), message,
- GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL, FALSE,
- NULL, ALERT_WARNING, G_ALERTDEFAULT);
+ GTK_STOCK_CANCEL, GTK_STOCK_DELETE, NULL, ALERTFOCUS_FIRST, FALSE,
+ NULL, ALERT_WARNING);
g_free(message);
if (avalue != G_ALERTALTERNATE) return;
old_id = folder_item_get_identifier(item);
- if (folderview->opened == folderview->selected ||
- gtk_cmctree_is_ancestor(ctree,
- folderview->selected,
- folderview->opened)) {
+ if (item == opened ||
+ folder_is_child_of(item, opened)) {
summary_clear_all(folderview->summaryview);
- folderview->opened = NULL;
+ folderview_close_opened(folderview, TRUE);
}
if (item->folder->klass->remove_folder(item->folder, item) < 0) {
{
FolderItem *item;
gchar *new_folder;
- gchar *name;
gchar *message;
FolderView *folderview = (FolderView*)data;
item = folderview_get_selected_item(folderview);
g_return_if_fail(item->path != NULL);
g_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 folder"), message, name);
+ message = g_strdup_printf(_("Input new name for '%s':"), item->name);
+ new_folder = input_dialog(_("Rename folder"), message, item->name);
g_free(message);
- g_free(name);
if (!new_folder) return;
- AUTORELEASE_STR(new_folder, {g_free(new_folder); return;});
if (strchr(new_folder, G_DIR_SEPARATOR) != NULL) {
alertpanel_error(_("'%c' can't be included in folder name."),
G_DIR_SEPARATOR);
+ g_free(new_folder);
+ return;
+ }
+
+ if (!folder_local_name_ok(new_folder)) {
+ g_free(new_folder);
return;
}
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);
+ alertpanel_error(_("The folder '%s' already exists."), new_folder);
+ g_free(new_folder);
return;
}
if (folder_item_rename(item, new_folder) < 0) {
alertpanel_error(_("The folder could not be renamed.\n"
"The new folder name is not allowed."));
+ g_free(new_folder);
return;
}
+ g_free(new_folder);
folder_item_prefs_save_config(item);
+ prefs_matcher_write_config();
folder_write_list();
}
ritem = (RFolderItem *)item;
/* Offline check */
- if( prefs_common.work_offline &&
+ if( prefs_common_get_prefs()->work_offline &&
!inc_offline_should_override(TRUE,
- ngettext("Claws-Mail needs network access in order "
+ ngettext("Claws Mail needs network access in order "
"to update the feed.",
- "Claws-Mail needs network access in order "
+ "Claws Mail needs network access in order "
"to update feeds.", 1))) {
return;
}
/* Update feed, displaying errors if any. */
- rssyl_update_feed(ritem, TRUE);
+ rssyl_update_feed(ritem, RSSYL_SHOW_ERRORS);
}
void rssyl_prop_cb(GtkAction *action, gpointer data)
return;
}
+ /* Offline check */
+ if( prefs_common_get_prefs()->work_offline &&
+ !inc_offline_should_override(TRUE,
+ ngettext("Claws Mail needs network access in order "
+ "to update the feed.",
+ "Claws Mail needs network access in order "
+ "to update feeds.", 1))) {
+ return;
+ }
+
rssyl_update_recursively(item);
}
n = trim_string(item->folder->name, 32);
message = g_strdup_printf(_("Really remove the feed tree `%s' ?\n"), n);
avalue = alertpanel_full(_("Remove feed tree"), message,
- GTK_STOCK_CANCEL, _("_Remove"), NULL, FALSE,
- NULL, ALERT_WARNING, G_ALERTDEFAULT);
+ GTK_STOCK_CANCEL, _("_Remove"), NULL, ALERTFOCUS_FIRST, FALSE,
+ NULL, ALERT_WARNING);
g_free(message);
g_free(n);
n = folder_item_get_path(item);
if( remove_dir_recursive(n) < 0 ) {
- g_warning("can't remove directory '%s'\n", n);
+ g_warning("can't remove directory '%s'", n);
g_free(n);
return;
}
void rssyl_import_feed_list_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item = NULL;
gchar *path = NULL;
OPMLImportCtx *ctx = NULL;
/* Find the destination folder for the import */
g_return_if_fail(folderview->selected != NULL);
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
g_return_if_fail(item != NULL);
g_return_if_fail(item->folder != NULL);
ctx = malloc( sizeof(OPMLImportCtx) );
ctx->failures = 0;
- ctx->depth = rssyl_folder_depth(item);
+ ctx->depth = rssyl_folder_depth(item) + 1;
ctx->current = NULL;
ctx->current = g_slist_append(ctx->current, item);