1 /* 2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client 3 * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #ifndef __INC_H__ 21 #define __INC_H__ 22 23 #ifdef HAVE_CONFIG_H 24 #include "claws-features.h" 25 #endif 26 27 #include <glib.h> 28 29 #include "mainwindow.h" 30 #include "progressdialog.h" 31 #include "prefs_account.h" 32 #include "session.h" 33 #include "pop.h" 34 35 typedef struct _IncProgressDialog IncProgressDialog; 36 typedef struct _IncSession IncSession; 37 38 typedef enum 39 { 40 INC_SUCCESS, 41 INC_CONNECT_ERROR, 42 INC_AUTH_FAILED, 43 INC_LOCKED, 44 INC_ERROR, 45 INC_NO_SPACE, 46 INC_IO_ERROR, 47 INC_SOCKET_ERROR, 48 INC_EOF, 49 INC_TIMEOUT, 50 INC_CANCEL 51 } IncState; 52 53 struct _IncProgressDialog 54 { 55 ProgressDialog *dialog; 56 57 MainWindow *mainwin; 58 59 gboolean show_dialog; 60 61 GDateTime *progress_tv; 62 GDateTime *folder_tv; 63 64 GList *queue_list; /* list of IncSession */ 65 gint cur_row; 66 }; 67 68 struct _IncSession 69 { 70 Session *session; 71 IncState inc_state; 72 73 gint cur_total_bytes; 74 75 gpointer data; 76 }; 77 78 #define TIMEOUT_ITV 200 79 80 void inc_mail (MainWindow *mainwin, 81 gboolean notify); 82 gint inc_account_mail (MainWindow *mainwin, 83 PrefsAccount *account); 84 85 /* This function just blindly checks all accounts in the passed 86 * account_list, and doesn't care about whether the configuration 87 * says they should be checked or not. These checks should be done 88 * by the caller, and account_list should look accordingly. 89 * The caller is responsible for freeing the list afterwards. */ 90 void inc_account_list_mail (MainWindow *mainwin, 91 GList *list, /* linked list of PrefsAccount* pointers */ 92 gboolean autocheck, 93 gboolean notify); 94 95 /* This function is used by the global autocheck interval (autocheck TRUE), 96 * or check at startup (check_at_startup TRUE) 97 * or by the manual 'Receive all' feature (autocheck FALSE). It makes 98 * sure correct list of accounts is marked for checking, based on 99 * global and account configuration, and calls inc_account_list_mail(). */ 100 void inc_all_account_mail (MainWindow *mainwin, 101 gboolean autocheck, 102 gboolean check_at_startup, 103 gboolean notify); 104 105 void inc_progress_update (Pop3Session *session); 106 107 void inc_pop_before_smtp (PrefsAccount *acc); 108 109 gboolean inc_is_active (void); 110 111 void inc_cancel_all (void); 112 113 extern guint inc_lock_count; 114 #define inc_lock() { \ 115 inc_lock_real(); \ 116 debug_print("called inc_lock (lock count %d)\n", inc_lock_count); \ 117 } 118 119 #define inc_unlock() { \ 120 inc_unlock_real(); \ 121 debug_print("called inc_unlock (lock count %d)\n", inc_lock_count); \ 122 } 123 124 void inc_lock_real (void); 125 void inc_unlock_real (void); 126 127 void inc_autocheck_timer_init (MainWindow *mainwin); 128 void inc_autocheck_timer_set (void); 129 void inc_autocheck_timer_remove (void); 130 gboolean inc_offline_should_override(gboolean force_ask, const gchar *msg); 131 132 void inc_account_autocheck_timer_remove(PrefsAccount *account); 133 void inc_account_autocheck_timer_set_interval(PrefsAccount *account); 134 135 void inc_reset_offline_override_timers(); 136 137 #endif /* __INC_H__ */ 138