2012-08-27 [wwp] 3.8.1cvs36
[claws.git] / src / inc.c
index 8d200b2b61d2b11dcdab719e6d4bf21b1b6703e6..c6327565890ac1984b38b1115b1bde777d137a81 100644 (file)
--- a/src/inc.c
+++ b/src/inc.c
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2011 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -19,6 +19,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include "defs.h"
@@ -57,6 +58,7 @@
 #include "filtering.h"
 #include "log.h"
 #include "hooks.h"
+#include "logwindow.h"
 
 #ifdef MAEMO
 #ifdef CHINOOK
@@ -77,6 +79,8 @@ static gboolean maemo_warned_offline = FALSE;
 #endif
 #endif
 
+extern SessionStats session_stats;
+
 static GList *inc_dialog_list = NULL;
 
 guint inc_lock_count = 0;
@@ -87,6 +91,7 @@ static GdkPixbuf *okpix;
 
 #define MSGBUFSIZE     8192
 
+static void inc_update_stats(gint new_msgs);
 static void inc_finished               (MainWindow             *mainwin,
                                         gboolean                new_messages,
                                         gboolean                autocheck);
@@ -133,6 +138,8 @@ static gint inc_drop_message                (Pop3Session    *session,
 static void inc_put_error              (IncState        istate,
                                         Pop3Session    *session);
 
+static void inc_showlog_cb             (GtkWidget      *widget,
+                                        gpointer        data);
 static void inc_cancel_cb              (GtkWidget      *widget,
                                         gpointer        data);
 static gint inc_dialog_delete_cb       (GtkWidget      *widget,
@@ -150,7 +157,13 @@ static gint inc_autocheck_func                     (gpointer        data);
 
 static void inc_notify_cmd             (gint new_msgs, 
                                         gboolean notify);
-       
+
+static void inc_update_stats(gint new_msgs)
+{
+       /* update session statistics */
+       session_stats.received += new_msgs;
+}
+
 /**
  * inc_finished:
  * @mainwin: Main window.
@@ -211,6 +224,7 @@ void inc_mail(MainWindow *mainwin, gboolean notify)
                        new_msgs += account_new_msgs;
        }
 
+       inc_update_stats(new_msgs);
        inc_finished(mainwin, new_msgs > 0, FALSE);
        main_window_unlock(mainwin);
        inc_notify_cmd(new_msgs, notify);
@@ -304,6 +318,7 @@ gint inc_account_mail(MainWindow *mainwin, PrefsAccount *account)
 
        new_msgs = inc_account_mail_real(mainwin, account);
 
+       inc_update_stats(new_msgs);
        inc_finished(mainwin, new_msgs > 0, FALSE);
        main_window_unlock(mainwin);
        inc_autocheck_timer_set();
@@ -332,6 +347,7 @@ void inc_all_account_mail(MainWindow *mainwin, gboolean autocheck,
 
        list = account_get_list();
        if (!list) {
+               inc_update_stats(new_msgs);
                inc_finished(mainwin, new_msgs > 0, autocheck);
                main_window_unlock(mainwin);
                inc_notify_cmd(new_msgs, notify);
@@ -387,6 +403,7 @@ void inc_all_account_mail(MainWindow *mainwin, gboolean autocheck,
                new_msgs += inc_start(inc_dialog);
        }
 
+       inc_update_stats(new_msgs);
        inc_finished(mainwin, new_msgs > 0, autocheck);
        main_window_unlock(mainwin);
        inc_notify_cmd(new_msgs, notify);
@@ -413,6 +430,8 @@ static IncProgressDialog *inc_progress_dialog_create(gboolean autocheck)
        progress = progress_dialog_create();
        gtk_window_set_title(GTK_WINDOW(progress->window),
                             _("Retrieving new messages"));
+       g_signal_connect(G_OBJECT(progress->showlog_btn), "clicked",
+                        G_CALLBACK(inc_showlog_cb), dialog);
        g_signal_connect(G_OBJECT(progress->cancel_btn), "clicked",
                         G_CALLBACK(inc_cancel_cb), dialog);
        g_signal_connect(G_OBJECT(progress->window), "delete_event",
@@ -1260,6 +1279,13 @@ void inc_cancel_all(void)
                inc_cancel((IncProgressDialog *)cur->data);
 }
 
+static void inc_showlog_cb(GtkWidget *widget, gpointer data)
+{
+       MainWindow *mainwin = mainwindow_get_mainwindow();
+
+       log_window_show(mainwin->logwin);
+}
+
 static void inc_cancel_cb(GtkWidget *widget, gpointer data)
 {
        inc_cancel((IncProgressDialog *)data);
@@ -1395,7 +1421,6 @@ osso_context_t *get_osso_context(void);
 
 static void inc_notify_cmd(gint new_msgs, gboolean notify)
 {
-
 #ifndef MAEMO
        gchar *buf, *numpos, *ret_str;
        gssize by_read = 0, by_written = 0;