set the new-mail-notify command.

2001-12-12  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-config.c (mail_config_set_new_mail_notification_command):
	set the new-mail-notify command.
	(mail_config_get_new_mail_notification_command): get the
	new-mail-notify command.
	(mail_config_set_new_mail_notification): set the
	new-mail-notification action.
	(mail_config_get_new_mail_notification): get the
	new-mail-notification action.
	(mail_config_write_on_exit): save the new-mail-notification
	settings.
	(config_read): Read in the new-mail-notification settings.

	* mail-ops.c (mail_execute_shell_command): New function to execute
	a shell command async. Will be used for playing sounds on new mail
	or whatever.

svn path=/trunk/; revision=15005
This commit is contained in:
Jeffrey Stedfast
2001-12-12 21:14:30 +00:00
committed by Jeffrey Stedfast
parent 39d4313c30
commit 3622e520dd
5 changed files with 134 additions and 6 deletions

View File

@ -1,3 +1,21 @@
2001-12-12 Jeffrey Stedfast <fejj@ximian.com>
* mail-config.c (mail_config_set_new_mail_notification_command):
set the new-mail-notify command.
(mail_config_get_new_mail_notification_command): get the
new-mail-notify command.
(mail_config_set_new_mail_notification): set the
new-mail-notification action.
(mail_config_get_new_mail_notification): get the
new-mail-notification action.
(mail_config_write_on_exit): save the new-mail-notification
settings.
(config_read): Read in the new-mail-notification settings.
* mail-ops.c (mail_execute_shell_command): New function to execute
a shell command async. Will be used for playing sounds on new mail
or whatever.
2001-12-11 Jon Trowbridge <trow@ximian.com>
* mail-identify.c (mail_identify_mime_part): Fixed for

View File

@ -106,6 +106,9 @@ typedef struct {
gboolean filter_log;
char *filter_log_path;
MailConfigNewMailNotification notify;
char *notify_command;
} MailConfig;
static MailConfig *config = NULL;
@ -607,6 +610,14 @@ config_read (void)
config->filter_log_path = bonobo_config_get_string (
config->db, "/Mail/Filters/log_path", NULL);
/* New Mail Notification */
config->notify = bonobo_config_get_long_with_default (
config->db, "/Mail/Notify/new_mail_notification",
MAIL_CONFIG_NEW_MAIL_NOTIFICATION_NONE, NULL);
config->notify_command = bonobo_config_get_string (
config->db, "/Mail/Notify/new_mail_notification_command", NULL);
}
#define bonobo_config_set_string_wrapper(db, path, val, ev) bonobo_config_set_string (db, path, val ? val : "", ev)
@ -887,6 +898,13 @@ mail_config_write_on_exit (void)
bonobo_config_set_string_wrapper (config->db, "/Mail/Filters/log_path",
config->filter_log_path, NULL);
/* New Mail Notification */
bonobo_config_set_long (config->db, "/Mail/Notify/new_mail_notification",
config->notify, NULL);
bonobo_config_set_string_wrapper (config->db, "/Mail/Notify/new_mail_notification_command",
config->notify_command, NULL);
if (config->threaded_hash)
g_hash_table_foreach_remove (config->threaded_hash, hash_save_state, "Threads");
@ -1610,6 +1628,30 @@ mail_config_set_default_charset (const char *charset)
config->default_charset = g_strdup (charset);
}
MailConfigNewMailNotification
mail_config_get_new_mail_notification (void)
{
return config->notify;
}
void
mail_config_set_new_mail_notification (MailConfigNewMailNotification type)
{
config->notify = type;
}
const char *
mail_config_get_new_mail_notification_command (void)
{
return config->notify_command;
}
void
mail_config_set_new_mail_notification_command (const char *command)
{
g_free (config->notify_command);
config->notify_command = g_strdup (command);
}
gboolean
mail_config_find_account (const MailConfigAccount *account)

View File

@ -87,6 +87,12 @@ typedef enum {
MAIL_CONFIG_DISPLAY_MAX
} MailConfigDisplayStyle;
typedef enum {
MAIL_CONFIG_NEW_MAIL_NOTIFICATION_NONE,
MAIL_CONFIG_NEW_MAIL_NOTIFICATION_BEEP,
MAIL_CONFIG_NEW_MAIL_NOTIFICATION_COMMAND,
} MailConfigNewMailNotification;
/* Identities */
MailConfigIdentity *identity_copy (const MailConfigIdentity *id);
void identity_destroy (MailConfigIdentity *id);
@ -175,6 +181,11 @@ void mail_config_set_default_forward_style (MailConfigForwardS
MailConfigDisplayStyle mail_config_get_message_display_style (void);
void mail_config_set_message_display_style (MailConfigDisplayStyle style);
MailConfigNewMailNotification mail_config_get_new_mail_notification (void);
void mail_config_set_new_mail_notification (MailConfigNewMailNotification type);
const char *mail_config_get_new_mail_notification_command (void);
void mail_config_set_new_mail_notification_command (const char *command);
const char *mail_config_get_default_charset (void);
void mail_config_set_default_charset (const char *charset);

View File

@ -30,6 +30,7 @@
/* #include <ctype.h> */
#include <errno.h>
#include <gnome.h>
#include <gal/util/e-util.h>
#include <gal/widgets/e-unicode.h>
#include <gal/util/e-unicode-i18n.h>
@ -2170,3 +2171,57 @@ mail_store_set_offline (CamelStore *store, gboolean offline,
e_thread_put(mail_thread_queued, (EMsg *)m);
}
/* ** Execute Shell Command ***************************************************** */
struct _execute_shell_command_msg {
struct _mail_msg msg;
char *command;
};
static char *execute_shell_command_desc (struct _mail_msg *mm, int done)
{
struct _execute_shell_command_msg *m = (struct _execute_shell_command_msg *) mm;
char *msg;
msg = g_strdup_printf (_("Executing shell command: %s"), m->command);
return msg;
}
static void execute_shell_command_do (struct _mail_msg *mm)
{
struct _execute_shell_command_msg *m = (struct _execute_shell_command_msg *) mm;
gnome_execute_shell (NULL, m->command);
}
static void execute_shell_command_free (struct _mail_msg *mm)
{
struct _execute_shell_command_msg *m = (struct _execute_shell_command_msg *) mm;
g_free (m->command);
}
static struct _mail_msg_op execute_shell_command_op = {
execute_shell_command_desc,
execute_shell_command_do,
NULL,
execute_shell_command_free,
};
void
mail_execute_shell_command (const char *command)
{
struct _execute_shell_command_msg *m;
if (command == NULL)
return;
m = mail_msg_new (&execute_shell_command_op, NULL, sizeof (*m));
m->command = g_strdup (command);
e_thread_put (mail_thread_queued, (EMsg *) m);
}

View File

@ -150,6 +150,8 @@ void mail_store_set_offline (CamelStore *store, gboolean offline,
void (*done)(CamelStore *, void *data),
void *data);
void mail_execute_shell_command (const char *command);
#ifdef __cplusplus
}
#endif /* __cplusplus */