Remove old code.

Remove internal imap timer and use mail timer.


SVN revision: 30434
This commit is contained in:
Sebastian Dransfeld 2007-06-22 13:36:35 +00:00
parent c1cd2c995d
commit b47a2130d2
5 changed files with 17 additions and 86 deletions

View File

@ -277,7 +277,6 @@ _basic_apply_data (E_Config_Dialog * cfd, E_Config_Dialog_Data * cfdata)
if (!cb) if (!cb)
{ {
cb = E_NEW (Config_Box, 1); cb = E_NEW (Config_Box, 1);
cb->item = mail_ci;
cb->type = 0; cb->type = 0;
cb->port = 110; cb->port = 110;
cb->monitor = 1; cb->monitor = 1;

View File

@ -112,7 +112,6 @@ _gc_init (E_Gadcon * gc, const char *name, const char *id, const char *style)
Config_Box *cb; Config_Box *cb;
cb = l->data; cb = l->data;
cb->item = ci;
switch (cb->type) switch (cb->type)
{ {
case MAIL_TYPE_IMAP: case MAIL_TYPE_IMAP:

View File

@ -58,7 +58,6 @@ struct _Config_Item
struct _Config_Box struct _Config_Box
{ {
const char *name; const char *name;
Config_Item *item;
int type; int type;
int port; int port;

98
imap2.c
View File

@ -12,8 +12,8 @@ static int _mail_imap_server_del (void *data, int type, void *event);
static int _mail_imap_server_data (void *data, int type, void *event); static int _mail_imap_server_data (void *data, int type, void *event);
static int _mail_imap_server_data_parse (ImapClient *ic, char *line, int length); static int _mail_imap_server_data_parse (ImapClient *ic, char *line, int length);
static void _mail_imap_client_logout (ImapClient *ic); static void _mail_imap_client_logout (ImapClient *ic);
static int _mail_imap_server_idle (void *data); static void _mail_imap_server_idle (ImapClient *ic);
static int _mail_imap_server_noop (void *data); static void _mail_imap_server_noop (ImapClient *ic);
static Evas_List *iclients = NULL; static Evas_List *iclients = NULL;
@ -60,6 +60,8 @@ _mail_imap_check_mail (void *data)
} }
else else
{ {
if (ic->idle == 1) _mail_imap_server_idle (ic);
else _mail_imap_server_noop (ic);
/* Need to set this to revert the state of the icon */ /* Need to set this to revert the state of the icon */
_mail_set_text (ic->data); _mail_set_text (ic->data);
} }
@ -194,14 +196,12 @@ _mail_imap_server_del (void *data, int type, void *event)
if (ic->state != IMAP_STATE_DISCONNECTED) if (ic->state != IMAP_STATE_DISCONNECTED)
{ {
printf ("The Imap Server disconnected us, consider reducing the check time.\n"); printf ("The connection was unexpectedly shut down, consider reducing the check time.\n");
ic->state = IMAP_STATE_DISCONNECTED; ic->state = IMAP_STATE_DISCONNECTED;
} }
ecore_con_server_del (ic->server); ecore_con_server_del (ic->server);
ic->server = NULL; ic->server = NULL;
if (ic->timer) ecore_timer_del (ic->timer);
ic->timer = NULL;
_mail_set_text (ic->data); _mail_set_text (ic->data);
return 0; return 0;
@ -282,25 +282,17 @@ _mail_imap_server_data (void *data, int type, void *event)
ic->state++; ic->state++;
break; break;
case IMAP_STATE_SELECTED: case IMAP_STATE_SELECTED:
if (ic->idle == 1) if ((ic->idle == 1) && (!ic->idling))
{ {
if (!ic->timer) len = snprintf (out, sizeof (out), "A%04i IDLE\r\n", ic->cmd++);
{ ecore_con_server_send (ic->server, out, len);
len = snprintf (out, sizeof (out), "A%04i IDLE\r\n", ic->cmd++); ic->idling = 1;
ecore_con_server_send (ic->server, out, len);
ic->timer = ecore_timer_add (ic->config->item->check_time * 60.0,
_mail_imap_server_idle, ic);
}
}
else if (ic->idle == 0)
{
if (!ic->timer) ic->timer = ecore_timer_add (ic->config->item->check_time * 60.0,
_mail_imap_server_noop, ic);
} }
break; break;
} }
if (ic->cmd > 9999) if (ic->cmd > 9999)
ic->cmd = 1; ic->cmd = 1;
_mail_set_text (ic->data);
return 0; return 0;
} }
@ -409,13 +401,11 @@ _mail_imap_server_data_parse (ImapClient *ic, char *line, int length)
{ {
printf ("Recent mails: %d\n", atoi (result)); printf ("Recent mails: %d\n", atoi (result));
ic->config->num_new = atoi (result); ic->config->num_new = atoi (result);
_mail_set_text (ic->data);
} }
else if (!strcmp (value, "EXISTS")) else if (!strcmp (value, "EXISTS"))
{ {
printf ("Existing mails: %d\n", atoi (result)); printf ("Existing mails: %d\n", atoi (result));
ic->config->num_total = atoi (result); ic->config->num_total = atoi (result);
_mail_set_text (ic->data);
} }
else else
{ {
@ -431,55 +421,6 @@ _mail_imap_server_data_parse (ImapClient *ic, char *line, int length)
{ {
printf ("Unknown reply: %s\n", line); printf ("Unknown reply: %s\n", line);
} }
#if 0
if (!is->current) return 0;
ic = is->current->data;
is->state++;
printf ("IMAP data: |%s|\n", in);
printf ("|%s|\n", strstr (in, "\r\n"));
switch (is->state)
{
case IMAP_STATE_SERVER_READY:
len =
snprintf (out, sizeof (out), "A%04i LOGIN %s %s\r\n", ++is->cmd,
is->user, is->pass);
ecore_con_server_send (ev->server, out, len);
break;
case IMAP_STATE_STATUS_OK:
if (sscanf (in, "* STATUS %*s (MESSAGES %i UNSEEN %i)", &total, &num) == 2)
{
ic->config->num_new = num;
ic->config->num_total = total;
_mail_set_text (is->data);
if ((num > 0) && (ic->config->use_exec) && (ic->config->exec))
_mail_start_exe (ic->config);
}
ic = NULL;
is->current = is->current->next;
if (is->current)
{
is->state = IMAP_STATE_LOGGED_IN;
ic = is->current->data;
}
else
_mail_imap_server_logout (is);
/* Fall through if we have another mailbox to check */
if (!ic)
break;
case IMAP_STATE_LOGGED_IN:
len =
snprintf (out, sizeof (out), "A%04i STATUS %s (MESSAGES UNSEEN)\r\n",
++is->cmd, ic->config->new_path);
ecore_con_server_send (ev->server, out, len);
break;
default:
break;
}
#endif
return 1; return 1;
} }
@ -499,34 +440,27 @@ _mail_imap_client_logout (ImapClient *ic)
ecore_con_server_del (ic->server); ecore_con_server_del (ic->server);
} }
ic->server = NULL; ic->server = NULL;
if (ic->timer) ecore_timer_del (ic->timer);
ic->timer = NULL;
ic->state = IMAP_STATE_DISCONNECTED; ic->state = IMAP_STATE_DISCONNECTED;
} }
static int static void
_mail_imap_server_idle (void *data) _mail_imap_server_idle (ImapClient *ic)
{ {
ImapClient *ic;
char out[1024]; char out[1024];
int len; int len;
ic = data; if (!ic->idling) return;
len = snprintf (out, sizeof (out), "DONE\r\n"); len = snprintf (out, sizeof (out), "DONE\r\n");
ecore_con_server_send (ic->server, out, len); ecore_con_server_send (ic->server, out, len);
ic->timer = NULL; ic->idling = 0;
return 0;
} }
static int static void
_mail_imap_server_noop (void *data) _mail_imap_server_noop (ImapClient *ic)
{ {
ImapClient *ic;
char out[1024]; char out[1024];
int len; int len;
ic = data;
len = snprintf (out, sizeof (out), "A%04i NOOP\r\n", ic->cmd++); len = snprintf (out, sizeof (out), "A%04i NOOP\r\n", ic->cmd++);
ecore_con_server_send (ic->server, out, len); ecore_con_server_send (ic->server, out, len);
return 1;
} }

View File

@ -26,11 +26,11 @@ struct _ImapClient
int cmd; int cmd;
ImapState state; ImapState state;
int idle; int idle;
unsigned char idling : 1;
Ecore_Event_Handler *add_handler; Ecore_Event_Handler *add_handler;
Ecore_Event_Handler *del_handler; Ecore_Event_Handler *del_handler;
Ecore_Event_Handler *data_handler; Ecore_Event_Handler *data_handler;
Ecore_Timer *timer;
void *data; void *data;
}; };