aboutsummaryrefslogtreecommitdiff
path: root/src/inc.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-04-04 04:37:25 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-04-04 04:37:25 +0000
commit1c58ef8447abe335761f0a26b6a2e4ddb11dbf31 (patch)
tree1ac9a6632e2338bfac87fdccb994e589f63506ee /src/inc.c
parentc822f5dcd7ba4338ee90bf08842db34ca7dbdb8e (diff)
fixed stop button sensitivity, and cancel all.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1592 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/inc.c')
-rw-r--r--src/inc.c37
1 files changed, 29 insertions, 8 deletions
diff --git a/src/inc.c b/src/inc.c
index 78e47675..6e88799c 100644
--- a/src/inc.c
+++ b/src/inc.c
@@ -633,6 +633,11 @@ static gint inc_start(IncProgressDialog *inc_dialog)
GList *next = qlist->next;
session = qlist->data;
+ if (session->inc_state == INC_CANCEL) {
+ qlist = next;
+ continue;
+ }
+
pop3_session = POP3_SESSION(session->session);
pop3_session->user = g_strdup(pop3_session->ac_prefs->userid);
if (pop3_session->ac_prefs->passwd)
@@ -680,7 +685,8 @@ static gint inc_start(IncProgressDialog *inc_dialog)
session = inc_dialog->queue_list->data;
pop3_session = POP3_SESSION(session->session);
- if (pop3_session->pass == NULL) {
+ if (session->inc_state == INC_CANCEL ||
+ pop3_session->pass == NULL) {
SET_PIXMAP_AND_TEXT(ok_pixbuf, _("Cancelled"));
inc_session_destroy(session);
inc_dialog->queue_list =
@@ -1347,9 +1353,10 @@ static void inc_put_error(IncState istate, const gchar *msg)
}
}
-static void inc_cancel(IncProgressDialog *dialog)
+static void inc_cancel(IncProgressDialog *dialog, gboolean cancel_all)
{
IncSession *session;
+ GList *list;
g_return_if_fail(dialog != NULL);
@@ -1358,16 +1365,30 @@ static void inc_cancel(IncProgressDialog *dialog)
return;
}
- session = dialog->queue_list->data;
-
- session->inc_state = INC_CANCEL;
+ for (list = dialog->queue_list; list != NULL; list = list->next) {
+ session = list->data;
+ session->inc_state = INC_CANCEL;
+ if (!cancel_all)
+ break;
+ }
log_message(_("Incorporation cancelled\n"));
}
gboolean inc_is_active(void)
{
- return (inc_dialog_list != NULL);
+ GList *cur;
+
+ if (inc_dialog_list == NULL)
+ return FALSE;
+
+ for (cur = inc_dialog_list; cur != NULL; cur = cur->next) {
+ IncProgressDialog *dialog = cur->data;
+ if (dialog->queue_list)
+ return TRUE;
+ }
+
+ return FALSE;
}
void inc_cancel_all(void)
@@ -1375,12 +1396,12 @@ void inc_cancel_all(void)
GList *cur;
for (cur = inc_dialog_list; cur != NULL; cur = cur->next)
- inc_cancel((IncProgressDialog *)cur->data);
+ inc_cancel((IncProgressDialog *)cur->data, TRUE);
}
static void inc_cancel_cb(GtkWidget *widget, gpointer data)
{
- inc_cancel((IncProgressDialog *)data);
+ inc_cancel((IncProgressDialog *)data, FALSE);
}
static gint inc_dialog_delete_cb(GtkWidget *widget, GdkEventAny *event,