Multiple Fixes:
- Stop changing icons when we check the mail and only set to new mail icon if we actually have mail. Thanks HandAndE :) - Only create one ecore_con_server to handle all accounts. Thanks englebass :) SVN revision: 23352
This commit is contained in:
parent
6684bfeea3
commit
217abbac3e
261
e_mod_main.c
261
e_mod_main.c
|
@ -21,6 +21,7 @@
|
|||
#include <dirent.h>
|
||||
#include <e.h>
|
||||
#include <Ecore.h>
|
||||
#include <Ecore_Con.h>
|
||||
#include <Ecore_File.h>
|
||||
#include "e_mod_main.h"
|
||||
|
||||
|
@ -63,14 +64,10 @@ struct _Mailbox
|
|||
int has_mail;
|
||||
int num_new;
|
||||
int num_total;
|
||||
|
||||
Ecore_Exe *exe;
|
||||
Ecore_Con_Server *server;
|
||||
Ecore_Event_Handler *add_handler;
|
||||
Ecore_Event_Handler *del_handler;
|
||||
Ecore_Event_Handler *data_handler;
|
||||
Ecore_File_Monitor *monitor;
|
||||
Ecore_Event_Handler *exit_handler;
|
||||
Ecore_Exe *exe;
|
||||
Ecore_Event_Handler *exit_handler;
|
||||
};
|
||||
|
||||
/* Func Protos for Gadcon */
|
||||
|
@ -101,11 +98,16 @@ static void _mail_mdir_check(void *data, Ecore_File_Monitor *monitor, Ecore_File
|
|||
static int _mail_mdir_get_files(const char *path);
|
||||
static void _mail_set_text(void *data);
|
||||
static int _mail_cb_exe_exit(void *data, int type, void *event);
|
||||
static Mailbox *_mail_find_mailbox(void *data, void *data2);
|
||||
|
||||
static E_Config_DD *conf_edd = NULL;
|
||||
static E_Config_DD *conf_item_edd = NULL;
|
||||
static E_Config_DD *conf_box_edd = NULL;
|
||||
|
||||
static Ecore_Event_Handler *add_handler;
|
||||
static Ecore_Event_Handler *del_handler;
|
||||
static Ecore_Event_Handler *data_handler;
|
||||
|
||||
Config *mail_config = NULL;
|
||||
|
||||
static const E_Gadcon_Client_Class _gc_class =
|
||||
|
@ -147,11 +149,18 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
|||
edje_object_signal_emit(inst->mail_obj, "label_active", "");
|
||||
else
|
||||
edje_object_signal_emit(inst->mail_obj, "label_passive", "");
|
||||
|
||||
|
||||
mail_config->instances = evas_list_append(mail_config->instances, inst);
|
||||
|
||||
if (!ci->boxes) return gcc;
|
||||
if (!add_handler)
|
||||
add_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, _mail_server_add, inst);
|
||||
if (!del_handler)
|
||||
del_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, _mail_server_del, inst);
|
||||
if (!data_handler)
|
||||
data_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, _mail_server_data, inst);
|
||||
|
||||
if (!ci->boxes) return gcc;
|
||||
|
||||
for (l = ci->boxes; l; l = l->next)
|
||||
{
|
||||
Mailbox *mb;
|
||||
|
@ -161,9 +170,9 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
|||
mb = E_NEW(Mailbox, 1);
|
||||
mb->inst = inst;
|
||||
mb->config = cb;
|
||||
mb->server = NULL;
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
mb->cmd = 0;
|
||||
mb->server = NULL;
|
||||
inst->mboxes = evas_list_append(inst->mboxes, mb);
|
||||
|
||||
if (cb->type == MAIL_TYPE_MDIR)
|
||||
|
@ -185,19 +194,23 @@ _gc_shutdown(E_Gadcon_Client *gcc)
|
|||
{
|
||||
Instance *inst;
|
||||
|
||||
if (add_handler) ecore_event_handler_del(add_handler);
|
||||
if (data_handler) ecore_event_handler_del(data_handler);
|
||||
if (del_handler) ecore_event_handler_del(del_handler);
|
||||
|
||||
inst = gcc->data;
|
||||
if (inst->check_timer) ecore_timer_del(inst->check_timer);
|
||||
|
||||
while (inst->mboxes)
|
||||
{
|
||||
Mailbox *mb;
|
||||
|
||||
mb = inst->mboxes->data;
|
||||
if (mb->monitor) ecore_file_monitor_del(mb->monitor);
|
||||
if (mb->add_handler) ecore_event_handler_del(mb->add_handler);
|
||||
if (mb->data_handler) ecore_event_handler_del(mb->data_handler);
|
||||
if (mb->del_handler) ecore_event_handler_del(mb->del_handler);
|
||||
if (mb->server) ecore_con_server_del(mb->server);
|
||||
mb->server = NULL;
|
||||
mb->cmd = 0;
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
inst->mboxes = evas_list_remove_list(inst->mboxes, inst->mboxes);
|
||||
free(mb);
|
||||
}
|
||||
|
@ -239,17 +252,12 @@ _gc_icon(Evas *evas)
|
|||
static void
|
||||
_mail_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Instance *inst;
|
||||
Evas_Event_Mouse_Down *ev;
|
||||
Config_Item *ci;
|
||||
Instance *inst = data;
|
||||
Evas_Event_Mouse_Down *ev = event_info;
|
||||
Evas_List *l;
|
||||
|
||||
inst = data;
|
||||
if (!inst) return;
|
||||
|
||||
ci = _mail_config_item_get(inst->gcc->id);
|
||||
|
||||
ev = event_info;
|
||||
if ((ev->button == 3) && (!mail_config->menu))
|
||||
{
|
||||
E_Menu *mn, *sn;
|
||||
|
@ -305,26 +313,26 @@ _mail_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
ev->timestamp);
|
||||
evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL);
|
||||
}
|
||||
else if ((ev->button == 1) && (inst))
|
||||
else if (ev->button == 1)
|
||||
_mail_cb_check(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_mail_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Instance *inst;
|
||||
Instance *inst = data;
|
||||
|
||||
inst = data;
|
||||
if (!inst) return;
|
||||
edje_object_signal_emit(inst->mail_obj, "label_active", "");
|
||||
}
|
||||
|
||||
static void
|
||||
_mail_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Instance *inst;
|
||||
Instance *inst = data;
|
||||
Config_Item *ci;
|
||||
|
||||
inst = data;
|
||||
if (!inst) return;
|
||||
ci = _mail_config_item_get(inst->gcc->id);
|
||||
if (!ci->show_label)
|
||||
edje_object_signal_emit(inst->mail_obj, "label_passive", "");
|
||||
|
@ -341,10 +349,10 @@ _mail_menu_cb_post(void *data, E_Menu *m)
|
|||
static void
|
||||
_mail_menu_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Instance *inst;
|
||||
Instance *inst = data;
|
||||
Config_Item *ci;
|
||||
|
||||
inst = data;
|
||||
if (!inst) return;
|
||||
ci = _mail_config_item_get(inst->gcc->id);
|
||||
_config_mail_module(ci);
|
||||
}
|
||||
|
@ -535,20 +543,20 @@ _mail_free(Mail *mail)
|
|||
static int
|
||||
_mail_cb_check(void *data)
|
||||
{
|
||||
Instance *inst;
|
||||
Instance *inst = data;
|
||||
Evas_List *l;
|
||||
Ecore_Con_Type type;
|
||||
|
||||
inst = data;
|
||||
if (!inst->mboxes) return;
|
||||
Ecore_Con_Server *server;
|
||||
|
||||
if (!inst) return 1;
|
||||
if (!inst->mboxes) return 1;
|
||||
|
||||
for (l = inst->mboxes; l; l = l->next)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Config_Box *cb;
|
||||
|
||||
mb = l->data;
|
||||
mb->server = NULL;
|
||||
mb->inst = inst;
|
||||
|
||||
cb = mb->config;
|
||||
|
@ -556,62 +564,61 @@ _mail_cb_check(void *data)
|
|||
if (cb->port <= 0) continue;
|
||||
if (cb->type > 1) continue;
|
||||
|
||||
if (!mb->add_handler)
|
||||
mb->add_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, _mail_server_add, mb);
|
||||
if (!mb->del_handler)
|
||||
mb->del_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, _mail_server_del, mb);
|
||||
if (!mb->data_handler)
|
||||
mb->data_handler = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, _mail_server_data, mb);
|
||||
|
||||
type = ECORE_CON_REMOTE_SYSTEM;
|
||||
if (cb->ssl)
|
||||
type |= ECORE_CON_USE_SSL;
|
||||
mb->server = ecore_con_server_connect(type, cb->host, cb->port, mb);
|
||||
server = ecore_con_server_connect(type, cb->host, cb->port, inst);
|
||||
mb->server = server;
|
||||
mb->state = STATE_CONNECTED;
|
||||
mb->cmd = 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_mail_server_add(void *data, int type, void *event)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Mailbox *mb;
|
||||
Ecore_Con_Event_Server_Add *ev;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return 1;
|
||||
Ecore_Con_Event_Server_Add *ev = event;
|
||||
|
||||
ev = event;
|
||||
if ((!mb->server) || (mb->server != ev->server)) return 1;
|
||||
if (!inst) return 1;
|
||||
if (!inst->mboxes) return 1;
|
||||
|
||||
mb = _mail_find_mailbox(inst, ev->server);
|
||||
if (!mb) return 1;
|
||||
|
||||
mb->state = STATE_CONNECTED;
|
||||
mb->cmd = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_mail_server_del(void *data, int type, void *event)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Mailbox *mb;
|
||||
Config_Box *cb;
|
||||
Ecore_Con_Event_Server_Del *ev;
|
||||
Ecore_Con_Event_Server_Del *ev = event;
|
||||
|
||||
mb = data;
|
||||
if (!inst) return 1;
|
||||
if (!inst->mboxes) return 1;
|
||||
|
||||
mb = _mail_find_mailbox(inst, ev->server);
|
||||
if (!mb) return 1;
|
||||
|
||||
ev = event;
|
||||
if ((!mb->server) || (mb->server != ev->server)) return 1;
|
||||
|
||||
|
||||
cb = mb->config;
|
||||
if (!cb->host) return 1;
|
||||
|
||||
if (mb->state == STATE_DISCONNECTED)
|
||||
printf("Cannot Connect to %s\n", cb->host);
|
||||
else
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
|
||||
ecore_con_server_del(mb->server);
|
||||
ecore_con_server_del(ev->server);
|
||||
mb->server = NULL;
|
||||
mb->cmd = 0;
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -619,65 +626,68 @@ _mail_server_del(void *data, int type, void *event)
|
|||
static int
|
||||
_mail_server_data(void *data, int type, void *event)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Mailbox *mb;
|
||||
Config_Box *cb;
|
||||
Ecore_Con_Event_Server_Data *ev;
|
||||
|
||||
mb = data;
|
||||
Ecore_Con_Event_Server_Data *ev = event;
|
||||
int ret;
|
||||
|
||||
if (!inst) return 1;
|
||||
if (!inst->mboxes) return 1;
|
||||
|
||||
mb = _mail_find_mailbox(inst, ev->server);
|
||||
if (!mb) return 1;
|
||||
|
||||
ev = event;
|
||||
if ((!mb->server) || (mb->server != ev->server)) return 1;
|
||||
|
||||
|
||||
cb = mb->config;
|
||||
if (cb->type == MAIL_TYPE_POP)
|
||||
return _mail_parse_pop(mb, ev);
|
||||
else if (cb->type == MAIL_TYPE_IMAP)
|
||||
return _mail_parse_imap(mb, ev);
|
||||
if (!cb) return 1;
|
||||
|
||||
return 1;
|
||||
if (cb->type == MAIL_TYPE_POP)
|
||||
ret = _mail_parse_pop(mb, ev);
|
||||
else if (cb->type == MAIL_TYPE_IMAP)
|
||||
ret = _mail_parse_imap(mb, ev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
_mail_parse_pop(void *data, void *data2)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
Config_Box *cb;
|
||||
Ecore_Con_Event_Server_Data *ev;
|
||||
Ecore_Con_Event_Server_Data *ev = data2;
|
||||
char in[2048], out[2048];
|
||||
int len;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
|
||||
cb = mb->config;
|
||||
|
||||
ev = data2;
|
||||
if (!ev) return;
|
||||
if ((!mb->server) || (mb->server != ev->server)) return;
|
||||
|
||||
cb = mb->config;
|
||||
|
||||
len = sizeof(in) -1;
|
||||
len = (((len) > (ev->size)) ? ev->size : len);
|
||||
memcpy(in, ev->data, len);
|
||||
in[len] = 0;
|
||||
|
||||
|
||||
if (!strncmp(in, "-ERR", 4))
|
||||
{
|
||||
printf("ERROR: %s\n", in);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
ecore_con_server_del(mb->server);
|
||||
ecore_con_server_del(ev->server);
|
||||
mb->server = NULL;
|
||||
mb->cmd = 0;
|
||||
return 0;
|
||||
}
|
||||
else if (strncmp(in, "+OK", 3))
|
||||
{
|
||||
printf("Unexpected reply: %s\n", in);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
ecore_con_server_del(mb->server);
|
||||
ecore_con_server_del(ev->server);
|
||||
mb->server = NULL;
|
||||
mb->cmd = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (mb->state == STATE_CONNECTED)
|
||||
mb->state++;
|
||||
|
||||
|
@ -685,17 +695,17 @@ _mail_parse_pop(void *data, void *data2)
|
|||
{
|
||||
case STATE_SERVER_READY:
|
||||
len = snprintf(out, sizeof(out), "USER %s\r\n", cb->user);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_USER_OK;
|
||||
break;
|
||||
case STATE_USER_OK:
|
||||
len = snprintf(out, sizeof(out), "PASS %s\r\n", cb->pass);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_PASS_OK;
|
||||
break;
|
||||
case STATE_PASS_OK:
|
||||
len = snprintf(out, sizeof(out), "STAT\r\n");
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_STATUS_OK;
|
||||
break;
|
||||
case STATE_STATUS_OK:
|
||||
|
@ -712,8 +722,9 @@ _mail_parse_pop(void *data, void *data2)
|
|||
|
||||
_mail_set_text(mb->inst);
|
||||
|
||||
ecore_con_server_del(ev->server);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
ecore_con_server_del(mb->server);
|
||||
mb->cmd = 0;
|
||||
mb->server = NULL;
|
||||
if ((cb->use_exec) && (cb->exec != NULL))
|
||||
{
|
||||
|
@ -734,23 +745,20 @@ _mail_parse_pop(void *data, void *data2)
|
|||
static int
|
||||
_mail_parse_imap(void *data, void *data2)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
Config_Box *cb;
|
||||
Ecore_Con_Event_Server_Data *ev;
|
||||
Ecore_Con_Event_Server_Data *ev = data2;
|
||||
char in[2048], out[2048];
|
||||
char *spc;
|
||||
size_t slen;
|
||||
int len;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
|
||||
cb = mb->config;
|
||||
|
||||
ev = data2;
|
||||
if (!ev) return;
|
||||
if ((!mb->server) || (mb->server != ev->server)) return;
|
||||
|
||||
cb = mb->config;
|
||||
|
||||
len = sizeof(in) -1;
|
||||
len = (((len) > (ev->size)) ? ev->size : len);
|
||||
memcpy(in, ev->data, len);
|
||||
|
@ -762,19 +770,21 @@ _mail_parse_imap(void *data, void *data2)
|
|||
if ((slen > 5) && (!strncmp(spc + 1, "NO ", 3)))
|
||||
{
|
||||
len = snprintf(out, sizeof(out), "A%03i LOGOUT", ++mb->cmd);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
printf("Imap Failure: %s\n", spc + 4);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
mb->cmd = 0;
|
||||
mb->server = NULL;
|
||||
return 0;
|
||||
}
|
||||
else if ((slen > 6) && (!strncmp(spc + 1, "BAD ", 4)))
|
||||
{
|
||||
len = snprintf(out, sizeof(out), "A%03i LOGOUT", ++mb->cmd);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
printf("Imap Bad Command: %s\n", spc + 5);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
mb->cmd = 0;
|
||||
mb->server = NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -786,12 +796,12 @@ _mail_parse_imap(void *data, void *data2)
|
|||
{
|
||||
case STATE_SERVER_READY:
|
||||
len = snprintf(out, sizeof(out), "A%03i LOGIN %s %s\r\n", ++mb->cmd, cb->user, cb->pass);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_LOGGED_IN;
|
||||
break;
|
||||
case STATE_LOGGED_IN:
|
||||
len = snprintf(out, sizeof(out), "A%03i STATUS %s (MESSAGES UNSEEN)\r\n",++mb->cmd, cb->new_path);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_STATUS_OK;
|
||||
break;
|
||||
case STATE_STATUS_OK:
|
||||
|
@ -807,10 +817,11 @@ _mail_parse_imap(void *data, void *data2)
|
|||
|
||||
_mail_set_text(mb->inst);
|
||||
|
||||
len = snprintf(out, sizeof(out), "A%03i LOGOUT", ++mb->cmd);
|
||||
ecore_con_server_send(ev->server, out, len);
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
mb->cmd = 0;
|
||||
len = snprintf(out, sizeof(out), "A%03i LOGOUT", ++mb->cmd);
|
||||
ecore_con_server_send(mb->server, out, len);
|
||||
mb->server = NULL;
|
||||
if ((cb->use_exec) && (cb->exec != NULL))
|
||||
{
|
||||
if (mb->num_new <= 0) break;
|
||||
|
@ -823,6 +834,7 @@ _mail_parse_imap(void *data, void *data2)
|
|||
break;
|
||||
case STATE_DISCONNECTED:
|
||||
mb->server = NULL;
|
||||
mb->cmd = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -833,16 +845,17 @@ _mail_parse_imap(void *data, void *data2)
|
|||
static void
|
||||
_mail_mbox_check(void *data, Ecore_File_Monitor *monitor, Ecore_File_Event event, const char *path)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
Config_Box *cb;
|
||||
FILE *f;
|
||||
char buf[1024];
|
||||
int total = 0, unread = 0;
|
||||
int header;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
|
||||
cb = mb->config;
|
||||
if (!cb->new_path) return;
|
||||
|
||||
if (!(f = fopen(cb->new_path, "r")))
|
||||
return;
|
||||
|
@ -875,9 +888,8 @@ _mail_mbox_check(void *data, Ecore_File_Monitor *monitor, Ecore_File_Event event
|
|||
static void
|
||||
_mail_mdir_check(void *data, Ecore_File_Monitor *monitor, Ecore_File_Event event, const char *path)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
|
||||
mb->has_mail = 0;
|
||||
|
@ -915,17 +927,13 @@ _mail_mdir_get_files(const char *path)
|
|||
static void
|
||||
_mail_set_text(void *data)
|
||||
{
|
||||
Instance *inst;
|
||||
Instance *inst = data;
|
||||
Evas_List *l;
|
||||
char buf[4096];
|
||||
int count = 0;
|
||||
|
||||
inst = data;
|
||||
if (!inst) return;
|
||||
|
||||
edje_object_part_text_set(inst->mail->mail_obj, "name", "");
|
||||
edje_object_signal_emit(inst->mail->mail_obj, "no_mail", "");
|
||||
edje_object_part_text_set(inst->mail->mail_obj, "new_label", "");
|
||||
|
||||
for (l = inst->mboxes; l; l = l->next)
|
||||
{
|
||||
Mailbox *mb;
|
||||
|
@ -935,24 +943,24 @@ _mail_set_text(void *data)
|
|||
cb = mb->config;
|
||||
if (mb->has_mail)
|
||||
{
|
||||
count++;
|
||||
edje_object_part_text_set(inst->mail->mail_obj, "name", cb->user);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d/%d", mb->num_new, mb->num_total);
|
||||
edje_object_part_text_set(inst->mail->mail_obj, "new_label", buf);
|
||||
|
||||
edje_object_signal_emit(inst->mail->mail_obj, "new_mail", "");
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (count > 0)
|
||||
edje_object_signal_emit(inst->mail->mail_obj, "new_mail", "");
|
||||
else
|
||||
edje_object_signal_emit(inst->mail->mail_obj, "no_mail", "");
|
||||
}
|
||||
|
||||
static int
|
||||
_mail_cb_exe_exit(void *data, int type, void *event)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
mb->exe = NULL;
|
||||
ecore_event_handler_del(mb->exit_handler);
|
||||
|
@ -1045,11 +1053,9 @@ _mail_box_deleted(const char *ci_name, const char *box_name)
|
|||
(!strcmp(mb->config->name, cb->name)))
|
||||
{
|
||||
if (mb->monitor) ecore_file_monitor_del(mb->monitor);
|
||||
if (mb->add_handler) ecore_event_handler_del(mb->add_handler);
|
||||
if (mb->data_handler) ecore_event_handler_del(mb->data_handler);
|
||||
if (mb->del_handler) ecore_event_handler_del(mb->del_handler);
|
||||
if (mb->server) ecore_con_server_del(mb->server);
|
||||
mb->server = NULL;
|
||||
mb->state = STATE_DISCONNECTED;
|
||||
mb->cmd = 0;
|
||||
inst->mboxes = evas_list_remove(inst->mboxes, mb);
|
||||
free(mb);
|
||||
break;
|
||||
|
@ -1099,10 +1105,9 @@ _mail_config_updated(const char *id)
|
|||
static void
|
||||
_mail_menu_cb_exec(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Mailbox *mb;
|
||||
Mailbox *mb = data;
|
||||
Config_Box *cb;
|
||||
|
||||
mb = data;
|
||||
if (!mb) return;
|
||||
if (mb->exe) return;
|
||||
cb = mb->config;
|
||||
|
@ -1110,3 +1115,25 @@ _mail_menu_cb_exec(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
mb->exit_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _mail_cb_exe_exit, mb);
|
||||
mb->exe = ecore_exe_run(cb->exec, mb);
|
||||
}
|
||||
|
||||
static Mailbox *
|
||||
_mail_find_mailbox(void *data, void *data2)
|
||||
{
|
||||
Instance *inst = data;
|
||||
Ecore_Con_Server *serv = data2;
|
||||
Evas_List *l;
|
||||
Mailbox *mb;
|
||||
|
||||
if (!inst) return NULL;
|
||||
if (!serv) return NULL;
|
||||
|
||||
for (l = inst->mboxes; l; l = l->next)
|
||||
{
|
||||
mb = l->data;
|
||||
if (!mb) continue;
|
||||
if (!mb->server) continue;
|
||||
if (mb->server != serv) continue;
|
||||
return mb;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue