2005-06-26 [colin] 1.9.11cvs106
[claws.git] / src / imap_gtk.c
index 7bb2f4e3aede7b02cbc1c0aa04e6a12efadf3602..de7b19dd42cf60f709bc40b1f7afc81ad210f356 100644 (file)
 #include "defs.h"
 
 #include <glib.h>
+#include <glib/gi18n.h>
 
 #include <gtk/gtk.h>
+#include <time.h>
 
-#include "intl.h"
 #include "utils.h"
 #include "folder.h"
 #include "folderview.h"
 #include "inputdialog.h"
 #include "imap.h"
 #include "inc.h"
+#include "prefs_common.h"
+#include "summaryview.h"
 
 static void new_folder_cb(FolderView *folderview, guint action, GtkWidget *widget);
 static void rename_folder_cb(FolderView *folderview, guint action, GtkWidget *widget);
 static void move_folder_cb(FolderView *folderview, guint action, GtkWidget *widget);
+static void imap_settings_cb(FolderView *folderview, guint action, GtkWidget *widget);
 static void remove_server_cb(FolderView *folderview, guint action, GtkWidget *widget);
 static void delete_folder_cb(FolderView *folderview, guint action, GtkWidget *widget);
 static void update_tree_cb(FolderView *folderview, guint action, GtkWidget *widget);
@@ -59,6 +63,7 @@ static GtkItemFactoryEntry imap_popup_entries[] =
        {N_("/_Check for new messages"), NULL, update_tree_cb,   0, NULL},
        {N_("/R_ebuild folder tree"),    NULL, update_tree_cb,   1, NULL},
        {N_("/---"),                     NULL, NULL,             0, "<Separator>"},
+       {N_("/IMAP4 _account settings"), NULL, imap_settings_cb, 0, NULL},
        {N_("/Remove _IMAP4 account"),   NULL, remove_server_cb, 0, NULL},
        {N_("/---"),                     NULL, NULL,             0, "<Separator>"},
 };
@@ -233,6 +238,17 @@ static void move_folder_cb(FolderView *folderview, guint action, GtkWidget *widg
        folderview_move_folder(folderview, from_folder, to_folder);
 }
 
+static void imap_settings_cb(FolderView *folderview, guint action, GtkWidget *widget)
+{
+       FolderItem *item;
+
+       item = folderview_get_selected_item(folderview);
+       if (item == NULL)
+               return;
+
+       account_open(item->folder->account);
+}
+
 static void remove_server_cb(FolderView *folderview, guint action, GtkWidget *widget)
 {
        GtkCTree *ctree = GTK_CTREE(folderview->ctree);
@@ -296,7 +312,7 @@ static void delete_folder_cb(FolderView *folderview, guint action,
        name = trim_string(item->name, 32);
        AUTORELEASE_STR(name, {g_free(name); return;});
        message = g_strdup_printf
-               (_("All folder(s) and message(s) under `%s' will be deleted.\n"
+               (_("All folders and messages under `%s' will be deleted.\n"
                   "Do you really want to delete?"), name);
        avalue = alertpanel(_("Delete folder"), message,
                            _("Yes"), _("+No"), NULL);
@@ -358,16 +374,7 @@ static void download_cb(FolderView *folderview, guint action,
        item = gtk_ctree_node_get_row_data(ctree, folderview->selected);
        g_return_if_fail(item != NULL);
        g_return_if_fail(item->folder != NULL);
-#if 0
-       if (!prefs_common.online_mode) {
-               if (alertpanel(_("Offline"),
-                              _("You are offline. Go online?"),
-                              _("Yes"), _("No"), NULL) == G_ALERTDEFAULT)
-                       main_window_toggle_online(folderview->mainwin, TRUE);
-               else
-                       return;
-       }
-#endif
+
        main_window_cursor_wait(mainwin);
        inc_lock();
        main_window_lock(mainwin);
@@ -388,3 +395,28 @@ static void download_cb(FolderView *folderview, guint action,
        inc_unlock();
        main_window_cursor_normal(mainwin);
 }
+
+gboolean imap_gtk_should_override(void)
+{
+       static time_t overridden_yes = 0;
+       static time_t overridden_no  = 0;
+       gboolean answer = TRUE;
+
+       if (prefs_common.work_offline) {
+               if (time(NULL) - overridden_yes < 600)
+                        return TRUE;
+               else if (time(NULL) - overridden_no < 3)
+                        return FALSE;
+               
+               answer = (alertpanel(_("Offline warning"), 
+                              _("You're working offline. Override during 10 minutes?"),
+                              _("Yes"), _("No"), NULL) == G_ALERTDEFAULT);
+               
+               if (answer == TRUE)
+                       overridden_yes = time(NULL);
+               else
+                       overridden_no  = time(NULL);
+       }
+       return answer;
+       
+}