enlightenment-module-mail/src/mdir.c

111 lines
2.0 KiB
C
Raw Normal View History

#include <e.h>
#include "e_mod_main.h"
#include "mdir.h"
static Eina_List *mdirs;
2006-07-17 17:03:04 -07:00
static void _mail_mdir_check_mail (void *data, Ecore_File_Monitor * monitor,
Ecore_File_Event event, const char *path);
static int _mail_mdir_get_files (const char *path);
void
2006-07-17 17:03:04 -07:00
_mail_mdir_add_mailbox (void *data, void *data2)
{
2006-07-17 17:03:04 -07:00
MdirClient *mc;
Config_Box *cb;
cb = data2;
if (!cb)
return;
mc = E_NEW (MdirClient, 1);
mc->config = cb;
mc->data = data;
mc->config->num_new = 0;
mc->config->num_total = 0;
mc->monitor =
ecore_file_monitor_add (cb->new_path, _mail_mdir_check_mail, mc);
mdirs = eina_list_append (mdirs, mc);
}
void
2006-07-17 17:03:04 -07:00
_mail_mdir_del_mailbox (void *data)
{
2006-07-17 17:03:04 -07:00
Config_Box *cb;
Eina_List *l;
2006-07-17 17:03:04 -07:00
cb = data;
if (!cb)
return;
for (l = mdirs; l; l = l->next)
{
MdirClient *mc;
mc = l->data;
if (!mc)
continue;
if (mc->config != cb)
continue;
mdirs = eina_list_remove (mdirs, mc);
2006-07-17 17:03:04 -07:00
free (mc);
mc = NULL;
break;
}
}
void
2006-07-17 17:03:04 -07:00
_mail_mdir_shutdown ()
{
2006-07-17 17:03:04 -07:00
if (!mdirs)
return;
while (mdirs)
{
MdirClient *mc;
mc = mdirs->data;
if (mc->monitor)
ecore_file_monitor_del (mc->monitor);
mdirs = eina_list_remove_list (mdirs, mdirs);
2006-07-17 17:03:04 -07:00
free (mc);
mc = NULL;
}
}
/* PRIVATES */
2006-07-17 17:03:04 -07:00
static void
_mail_mdir_check_mail (void *data, Ecore_File_Monitor * monitor,
Ecore_File_Event event, const char *path)
{
2006-07-17 17:03:04 -07:00
MdirClient *mc;
2006-07-17 17:03:04 -07:00
mc = data;
if (!mc)
return;
2006-07-17 17:03:04 -07:00
mc->config->num_total = _mail_mdir_get_files (mc->config->cur_path);
mc->config->num_new = _mail_mdir_get_files (mc->config->new_path);
_mail_set_text (mc->data);
if ((mc->config->num_new > 0) && (mc->config->use_exec)
&& (mc->config->exec))
_mail_start_exe (mc->config);
}
2006-07-17 17:03:04 -07:00
static int
_mail_mdir_get_files (const char *path)
{
Eina_List *l;
2006-07-17 17:03:04 -07:00
char *item;
int i = 0;
l = ecore_file_ls (path);
EINA_LIST_FREE(l, item)
2006-07-17 17:03:04 -07:00
{
if (!((!strcmp (item, ".")) || (!strcmp (item, ".."))))
2006-07-17 17:03:04 -07:00
i++;
free(item);
2006-07-17 17:03:04 -07:00
}
return i;
}