fix lost processing rules when renaming folder
[claws.git] / src / plugins / rssyl / rssyl_cb_menu.c
index 826e1716c105a933d3cc64c05e3ba04e8e4e782b..a527bf7b80b70ad4ab28f7a688fe3f1fe2be31ee 100644 (file)
@@ -1,7 +1,8 @@
 /*
- * 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
  *
@@ -68,7 +69,7 @@ void rssyl_new_feed_cb(GtkAction *action,
        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);
 }
@@ -153,8 +154,8 @@ void rssyl_remove_folder_cb(GtkAction *action,
                   "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;
 
@@ -185,7 +186,6 @@ void rssyl_rename_cb(GtkAction *action,
 {
        FolderItem *item;
        gchar *new_folder;
-       gchar *name;
        gchar *message;
        FolderView *folderview = (FolderView*)data;
        item = folderview_get_selected_item(folderview);
@@ -193,11 +193,9 @@ void rssyl_rename_cb(GtkAction *action,
        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;
 
        if (strchr(new_folder, G_DIR_SEPARATOR) != NULL) {
@@ -213,9 +211,7 @@ void rssyl_rename_cb(GtkAction *action,
        }
 
        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;
        }
@@ -229,6 +225,7 @@ void rssyl_rename_cb(GtkAction *action,
        g_free(new_folder);
 
        folder_item_prefs_save_config(item);
+       prefs_matcher_write_config();
        folder_write_list();
 }
 
@@ -256,7 +253,7 @@ void rssyl_refresh_feed_cb(GtkAction *action,
        }
 
        /* 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)
@@ -292,6 +289,16 @@ void rssyl_update_all_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);
 }
 
@@ -313,8 +320,8 @@ void rssyl_remove_mailbox_cb(GtkAction *action, gpointer data)
        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);