Fix unused variable warning
[claws.git] / src / inc.c
index d4fdf642ed389053eda3c89b6be8813358aaff30..bfa5bf459d7901e6ee76e566788cdfc6a78552f6 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-2012 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2013 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
 #include "hooks.h"
 #include "logwindow.h"
 
-#ifdef MAEMO
-#ifdef CHINOOK
-#include <hildon/hildon-banner.h>
-#include <hildon/hildon-sound.h>
-#else
-#include <hildon-widgets/hildon-banner.h>
-#include <hildon-widgets/hildon-system-sound.h>
-#endif
-#include <libosso.h>
-
-#ifdef CONIC
-#include <conicconnection.h>
-#include <conicconnectionevent.h>
-
-static ConIcConnection *maemo_connection = NULL;
-static gboolean maemo_warned_offline = FALSE;
-#endif
-#endif
-
 extern SessionStats session_stats;
 
 static GList *inc_dialog_list = NULL;
@@ -89,7 +70,7 @@ static GdkPixbuf *currentpix;
 static GdkPixbuf *errorpix;
 static GdkPixbuf *okpix;
 
-#define MSGBUFSIZE     8192
+#define MESSAGEBUFSIZE 8192
 
 static void inc_update_stats(gint new_msgs);
 static void inc_finished               (MainWindow             *mainwin,
@@ -307,6 +288,8 @@ gint inc_account_mail(MainWindow *mainwin, PrefsAccount *account)
 
        if (inc_lock_count) return 0;
 
+       if (account->receive_in_progress) return 0;
+
        if (prefs_common.work_offline && 
            !inc_offline_should_override(TRUE,
                _("Claws Mail needs network access in order "
@@ -386,9 +369,11 @@ void inc_all_account_mail(MainWindow *mainwin, gboolean autocheck,
                PrefsAccount *account = list->data;
 
                if (account->recv_at_getall) {
-                       session = inc_session_new(account);
-                       if (session)
-                               queue_list = g_list_append(queue_list, session);
+                       if (!(account->receive_in_progress)) {
+                               session = inc_session_new(account);
+                               if (session)
+                                       queue_list = g_list_append(queue_list, session);
+                       }
                }
        }
 
@@ -550,6 +535,18 @@ static void inc_session_destroy(IncSession *session)
        g_free(session);
 }
 
+static gint pop3_get_port(Pop3Session *pop3_session)
+{
+#ifdef USE_GNUTLS
+       return pop3_session->ac_prefs->set_popport ?
+               pop3_session->ac_prefs->popport :
+               pop3_session->ac_prefs->ssl_pop == SSL_TUNNEL ? 995 : 110;
+#else
+       return pop3_session->ac_prefs->set_popport ?
+               pop3_session->ac_prefs->popport : 110;
+#endif
+}
+
 static gint inc_start(IncProgressDialog *inc_dialog)
 {
        IncSession *session;
@@ -571,7 +568,13 @@ static gint inc_start(IncProgressDialog *inc_dialog)
                session = qlist->data;
                pop3_session = POP3_SESSION(session->session); 
                pop3_session->user = g_strdup(pop3_session->ac_prefs->userid);
-               if (pop3_session->ac_prefs->passwd)
+
+               if (password_get(pop3_session->user,
+                                       pop3_session->ac_prefs->recv_server,
+                                       "pop3", pop3_get_port(pop3_session),
+                                       &(pop3_session->pass))) {
+                       /* NOP */;
+               } else if (pop3_session->ac_prefs->passwd)
                        pop3_session->pass =
                                g_strdup(pop3_session->ac_prefs->passwd);
                else {
@@ -696,7 +699,7 @@ static gint inc_start(IncProgressDialog *inc_dialog)
                        inbox = folder_get_default_inbox();
 
                /* get list of messages in processing */
-               processing = folder_get_default_processing();
+               processing = folder_get_default_processing(pop3_session->ac_prefs->account_id);
                folder_item_scan(processing);
                msglist = folder_item_get_msg_list(processing);
 
@@ -713,8 +716,7 @@ static gint inc_start(IncProgressDialog *inc_dialog)
 
                for(msglist_element = msglist; msglist_element != NULL; 
                    msglist_element = msglist_element->next) {
-                       MsgInfo *msginfo = (MsgInfo *)msglist_element->data;
-                       procmsg_msginfo_free(msginfo);
+                       procmsg_msginfo_free((MsgInfo**)&(msglist_element->data));
                }
                folder_item_update_thaw();
                
@@ -803,10 +805,9 @@ static IncState inc_pop3_session_do(IncSession *session)
 
        server = pop3_session->ac_prefs->recv_server;
        account_name = pop3_session->ac_prefs->account_name;
+       port = pop3_get_port(pop3_session);
+
 #ifdef USE_GNUTLS
-       port = pop3_session->ac_prefs->set_popport ?
-               pop3_session->ac_prefs->popport :
-               pop3_session->ac_prefs->ssl_pop == SSL_TUNNEL ? 995 : 110;
        SESSION(pop3_session)->ssl_type = pop3_session->ac_prefs->ssl_pop;
        if (pop3_session->ac_prefs->ssl_pop != SSL_NONE)
                SESSION(pop3_session)->nonblocking =
@@ -825,8 +826,6 @@ static IncState inc_pop3_session_do(IncSession *session)
                          G_ALERTDEFAULT) != G_ALERTALTERNATE)
                        return INC_CANCEL;
        }
-       port = pop3_session->ac_prefs->set_popport ?
-               pop3_session->ac_prefs->popport : 110;
 #endif
 
        buf = g_strdup_printf(_("Account '%s': Connecting to POP3 server: %s:%d..."),
@@ -933,7 +932,7 @@ static void inc_progress_dialog_set_label(IncProgressDialog *inc_dialog,
        case POP3_GETAUTH_APOP:
                progress_dialog_set_label(dialog, _("Authenticating..."));
                statuswindow_pop_all();
-               statusbar_print_all(_("Retrieving messages from %s (%s) ..."),
+               statusbar_print_all(_("Retrieving messages from %s (%s)..."),
                                    SESSION(session)->server,
                                    session->ac_prefs->account_name);
                break;
@@ -968,7 +967,7 @@ static void inc_progress_dialog_set_label(IncProgressDialog *inc_dialog,
 static void inc_progress_dialog_set_progress(IncProgressDialog *inc_dialog,
                                             IncSession *inc_session)
 {
-       gchar buf[MSGBUFSIZE];
+       gchar buf[MESSAGEBUFSIZE];
        Pop3Session *pop3_session = POP3_SESSION(inc_session->session);
        gchar *total_size_str;
        gint cur_total;
@@ -1132,7 +1131,7 @@ static gint inc_drop_message(Pop3Session *session, const gchar *file)
        }
 
        /* CLAWS: claws uses a global .processing folder for the filtering. */
-       dropfolder = folder_get_default_processing();
+       dropfolder = folder_get_default_processing(session->ac_prefs->account_id);
 
        /* add msg file to drop folder */
        if ((msgnum = folder_item_add_msg(
@@ -1414,13 +1413,8 @@ void inc_unlock_real(void)
 static guint autocheck_timer = 0;
 static gpointer autocheck_data = NULL;
 
-#ifdef MAEMO
-osso_context_t *get_osso_context(void);
-#endif
-
 static void inc_notify_cmd(gint new_msgs, gboolean notify)
 {
-#ifndef MAEMO
        gchar *buf, *numpos, *ret_str;
        gssize by_read = 0, by_written = 0;
 
@@ -1448,65 +1442,12 @@ static void inc_notify_cmd(gint new_msgs, gboolean notify)
        execute_command_line(buf, TRUE);
 
        g_free(buf);
-
-#else
-       if (new_msgs) {
-               if (prefs_common.maemo_play_sound)
-                       hildon_play_system_sound("/usr/share/sounds/ui-new_email.wav");
-               if (prefs_common.maemo_show_banner) {
-                       gchar *info = g_strdup_printf(ngettext("Claws Mail: %d new message",
-                                                  "Claws Mail: %d new messages",
-                                                  new_msgs), new_msgs);
-                       osso_system_note_infoprint(get_osso_context(), info, NULL);
-                       g_free(info);
-               }
-       }
-#endif
 }
 
-#if (defined(MAEMO) && defined(CONIC))
-static void maemo_connection_event(ConIcConnection *connection, 
-                                  ConIcConnectionEvent *event,
-                                  gpointer user_data)
-{
-       ConIcConnectionStatus status =
-               con_ic_connection_event_get_status(event);
-       MainWindow *mainwin = (MainWindow *)user_data;
-       switch(status) {
-       case CON_IC_STATUS_CONNECTED:
-               debug_print("we're connected\n");
-               main_window_toggle_work_offline(mainwin, FALSE, FALSE);
-               break;
-       default:
-               debug_print("we're disconnected\n");
-               main_window_toggle_work_offline(mainwin, TRUE, FALSE);
-               maemo_warned_offline = FALSE;
-               break;
-       }
-}
-
-#endif
-
 void inc_autocheck_timer_init(MainWindow *mainwin)
 {
-#if (defined(MAEMO) && defined(CONIC))
-       GValue *val = g_new0(GValue, 1);
-       maemo_connection = con_ic_connection_new();
-
-       g_value_init(val, G_TYPE_BOOLEAN);
-       g_value_set_boolean(val, TRUE);
-       g_object_set_property(G_OBJECT(maemo_connection),
-                       "automatic-connection-events", val);
-       g_free(val);    
-       g_signal_connect (maemo_connection, "connection-event",
-                         G_CALLBACK(maemo_connection_event), mainwin); 
-       con_ic_connection_connect (maemo_connection,
-               CON_IC_CONNECT_FLAG_AUTOMATICALLY_TRIGGERED);
-       autocheck_data = mainwin;
-#else
        autocheck_data = mainwin;
        inc_autocheck_timer_set();
-#endif
 }
 
 static void inc_autocheck_timer_set_interval(guint interval)
@@ -1516,14 +1457,12 @@ static void inc_autocheck_timer_set_interval(guint interval)
           the common preferences */
        if (prefs_common.autochk_newmail && autocheck_data
            && prefs_common.work_offline == FALSE) {
-#if GLIB_CHECK_VERSION(2,14,0)
                if (interval % 1000 == 0)
                        autocheck_timer =
                                g_timeout_add_seconds(interval/1000, inc_autocheck_func, autocheck_data);
                else
-#endif
-               autocheck_timer = g_timeout_add
-                       (interval, inc_autocheck_func, autocheck_data);
+                       autocheck_timer = g_timeout_add
+                               (interval, inc_autocheck_func, autocheck_data);
                debug_print("added timer = %d\n", autocheck_timer);
        }
 }
@@ -1531,10 +1470,6 @@ static void inc_autocheck_timer_set_interval(guint interval)
 void inc_autocheck_timer_set(void)
 {
        inc_autocheck_timer_set_interval(prefs_common.autochk_itv * 60000);
-#if (defined(MAEMO) && defined(CONIC))
-       con_ic_connection_connect (maemo_connection,
-               CON_IC_CONNECT_FLAG_AUTOMATICALLY_TRIGGERED);
-#endif
 }
 
 void inc_autocheck_timer_remove(void)
@@ -1574,22 +1509,6 @@ gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg)
                return FALSE;
 #endif
 
-#if (defined(MAEMO) && defined(CONIC))
-       if (prefs_common.work_offline) {
-               if (force_ask && !maemo_warned_offline) {
-                       if (mainwindow_get_mainwindow())
-                               hildon_banner_show_information(
-                                       mainwindow_get_mainwindow()->window, 
-                                       NULL,
-                                       _("Unable to connect: you are offline."));
-                       maemo_warned_offline = TRUE;
-               }
-               return FALSE;
-       } else {
-               return TRUE;
-       }
-#endif 
-
        if (prefs_common.autochk_newmail)
                length = prefs_common.autochk_itv; /* minutes */