add protos
2002-01-13 JP Rosevear <jpr@ximian.com> * gui/alarm-notify/save.h: add protos * gui/alarm-notify/save.c (save_blessed_program): records a program as blessed (is_blessed_program): checks to see if a program is blessed * gui/alarm-notify/alarm-queue.c (procedure_notification_dialog): popup a dialog notifying the user that is a program and let them not see the dialog about this program again (procedure_notification): use above svn path=/trunk/; revision=15313
This commit is contained in:
@ -1,3 +1,16 @@
|
||||
2002-01-13 JP Rosevear <jpr@ximian.com>
|
||||
|
||||
* gui/alarm-notify/save.h: add protos
|
||||
|
||||
* gui/alarm-notify/save.c (save_blessed_program): records a
|
||||
program as blessed
|
||||
(is_blessed_program): checks to see if a program is blessed
|
||||
|
||||
* gui/alarm-notify/alarm-queue.c (procedure_notification_dialog):
|
||||
popup a dialog notifying the user that is a program and let them
|
||||
not see the dialog about this program again
|
||||
(procedure_notification): use above
|
||||
|
||||
2002-01-11 Damon Chaplin <damon@ximian.com>
|
||||
|
||||
* gui/e-timezone-entry.c:
|
||||
|
||||
@ -23,16 +23,21 @@
|
||||
#endif
|
||||
|
||||
#include <glib.h>
|
||||
#include <liboaf/liboaf.h>
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <gtk/gtkbox.h>
|
||||
#include <gtk/gtklabel.h>
|
||||
#include <gtk/gtkcheckbutton.h>
|
||||
#include <libgnome/gnome-defs.h>
|
||||
#include <libgnome/gnome-i18n.h>
|
||||
#include <gtk/gtksignal.h>
|
||||
#include <liboaf/liboaf.h>
|
||||
#include <libgnome/gnome-exec.h>
|
||||
#include <libgnome/gnome-sound.h>
|
||||
#include <libgnomeui/gnome-dialog.h>
|
||||
#include <libgnomeui/gnome-dialog-util.h>
|
||||
#include <libgnomeui/gnome-dialog.h>
|
||||
#include <libgnomeui/gnome-stock.h>
|
||||
#include <libgnomeui/gnome-uidefs.h>
|
||||
#include <bonobo/bonobo-object.h>
|
||||
#include <cal-util/timeutil.h>
|
||||
#include "alarm.h"
|
||||
#include "alarm-notify-dialog.h"
|
||||
@ -735,6 +740,49 @@ mail_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id)
|
||||
}
|
||||
|
||||
/* Performs notification of a procedure alarm */
|
||||
static gboolean
|
||||
procedure_notification_dialog (const char *cmd, const char *url)
|
||||
{
|
||||
GtkWidget *dialog, *label, *checkbox;
|
||||
char *str;
|
||||
int btn;
|
||||
|
||||
if (is_blessed_program (url))
|
||||
return TRUE;
|
||||
|
||||
dialog = gnome_dialog_new (_("Warning"),
|
||||
GNOME_STOCK_BUTTON_YES,
|
||||
GNOME_STOCK_BUTTON_NO,
|
||||
NULL);
|
||||
|
||||
str = g_strdup_printf (_("An Evolution Calendar reminder is about to trigger. "
|
||||
"This reminder is configured to run the following program:\n\n"
|
||||
" %s\n\n"
|
||||
"Are you sure you want to run this program?"),
|
||||
cmd);
|
||||
label = gtk_label_new (str);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_widget_show (label);
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox),
|
||||
label, TRUE, TRUE, 4);
|
||||
g_free (str);
|
||||
|
||||
checkbox = gtk_check_button_new_with_label
|
||||
(_("Do not ask me about this program again."));
|
||||
gtk_widget_show (checkbox);
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox),
|
||||
checkbox, TRUE, TRUE, 4);
|
||||
|
||||
/* Run the dialog */
|
||||
btn = gnome_dialog_run (GNOME_DIALOG (dialog));
|
||||
if (btn == GNOME_YES && gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)))
|
||||
save_blessed_program (url);
|
||||
gnome_dialog_close (GNOME_DIALOG (dialog));
|
||||
|
||||
return (btn == GNOME_YES);
|
||||
}
|
||||
|
||||
static void
|
||||
procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id)
|
||||
{
|
||||
@ -744,8 +792,7 @@ procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id
|
||||
CalComponentText description;
|
||||
icalattach *attach;
|
||||
const char *url;
|
||||
char *cmd, *str;
|
||||
GtkWidget *dialog;
|
||||
char *cmd;
|
||||
int result;
|
||||
|
||||
comp = cqa->alarms->comp;
|
||||
@ -772,25 +819,15 @@ procedure_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id
|
||||
g_assert (url != NULL);
|
||||
|
||||
/* Ask for confirmation before executing the stuff */
|
||||
|
||||
if (description.value)
|
||||
cmd = g_strconcat (url, " ", description.value, NULL);
|
||||
else
|
||||
cmd = (char *) url;
|
||||
|
||||
str = g_strdup_printf (_("An Evolution Calendar reminder is about to trigger.\n"
|
||||
"This reminder is configured to run the following program:\n\n"
|
||||
" %s\n\n"
|
||||
"Are you sure you want to run this program?"),
|
||||
cmd);
|
||||
|
||||
dialog = gnome_question_dialog_modal (str, NULL, NULL);
|
||||
g_free (str);
|
||||
|
||||
result = 0;
|
||||
if (gnome_dialog_run (GNOME_DIALOG (dialog)) == GNOME_YES)
|
||||
if (procedure_notification_dialog (cmd, url))
|
||||
result = gnome_execute_shell (NULL, cmd);
|
||||
|
||||
|
||||
if (cmd != (char *) url)
|
||||
g_free (cmd);
|
||||
|
||||
|
||||
@ -35,6 +35,8 @@
|
||||
#define KEY_LAST_NOTIFICATION_TIME "/Calendar/AlarmNotify/LastNotificationTime"
|
||||
#define KEY_NUM_CALENDARS_TO_LOAD "/Calendar/AlarmNotify/NumCalendarsToLoad"
|
||||
#define BASE_KEY_CALENDAR_TO_LOAD "/Calendar/AlarmNotify/CalendarToLoad"
|
||||
#define KEY_NUM_BLESSED_PROGRAMS "/Calendar/AlarmNotify/NumBlessedPrograms"
|
||||
#define BASE_KEY_BLESSED_PROGRAM "/Calendar/AlarmNotify/BlessedProgram"
|
||||
|
||||
|
||||
|
||||
@ -160,8 +162,8 @@ save_calendars_to_load (GPtrArray *uris)
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
bonobo_config_set_long (db, KEY_NUM_CALENDARS_TO_LOAD, len, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
g_warning ("Cannot save config key %s -- %s", KEY_NUM_CALENDARS_TO_LOAD, ev._repo_id);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", KEY_NUM_CALENDARS_TO_LOAD, BONOBO_EX_ID (&ev));
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
const char *uri;
|
||||
@ -171,8 +173,8 @@ save_calendars_to_load (GPtrArray *uris)
|
||||
|
||||
key = g_strdup_printf ("%s%d", BASE_KEY_CALENDAR_TO_LOAD, i);
|
||||
bonobo_config_set_string (db, key, uri, &ev);
|
||||
if (ev._major != CORBA_NO_EXCEPTION)
|
||||
g_warning ("Cannot save config key %s -- %s", key, ev._repo_id);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", key, BONOBO_EX_ID (&ev));
|
||||
g_free (key);
|
||||
}
|
||||
|
||||
@ -223,3 +225,91 @@ get_calendars_to_load (void)
|
||||
|
||||
return uris;
|
||||
}
|
||||
|
||||
/**
|
||||
* save_blessed_program:
|
||||
* @program: a program name
|
||||
*
|
||||
* Saves a program name as "blessed"
|
||||
**/
|
||||
void
|
||||
save_blessed_program (const char *program)
|
||||
{
|
||||
Bonobo_ConfigDatabase db;
|
||||
CORBA_Environment ev;
|
||||
char *key;
|
||||
int len;
|
||||
|
||||
g_return_if_fail (program != NULL);
|
||||
|
||||
db = get_config_db ();
|
||||
if (db == CORBA_OBJECT_NIL)
|
||||
return;
|
||||
|
||||
/* Up the number saved */
|
||||
len = bonobo_config_get_long_with_default (db, KEY_NUM_BLESSED_PROGRAMS, 0, NULL);
|
||||
len++;
|
||||
|
||||
bonobo_config_set_long (db, KEY_NUM_BLESSED_PROGRAMS, len, &ev);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", KEY_NUM_BLESSED_PROGRAMS, BONOBO_EX_ID (&ev));
|
||||
|
||||
/* Save the program name */
|
||||
key = g_strdup_printf ("%s%d", BASE_KEY_BLESSED_PROGRAM, len - 1);
|
||||
bonobo_config_set_string (db, key, program, &ev);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", key, BONOBO_EX_ID (&ev));
|
||||
g_free (key);
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
|
||||
discard_config_db (db);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_blessed_program:
|
||||
* @program: a program name
|
||||
*
|
||||
* Checks to see if a program is blessed
|
||||
*
|
||||
* Return value: TRUE if program is blessed, FALSE otherwise
|
||||
**/
|
||||
gboolean
|
||||
is_blessed_program (const char *program)
|
||||
{
|
||||
Bonobo_ConfigDatabase db;
|
||||
int len, i;
|
||||
|
||||
g_return_val_if_fail (program != NULL, FALSE);
|
||||
|
||||
db = get_config_db ();
|
||||
if (db == CORBA_OBJECT_NIL)
|
||||
return FALSE;
|
||||
|
||||
/* Getting the default value below is not necessarily an error, as we
|
||||
* may not have saved the list of calendar yet.
|
||||
*/
|
||||
|
||||
len = bonobo_config_get_long_with_default (db, KEY_NUM_BLESSED_PROGRAMS, 0, NULL);
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
char *key, *value;
|
||||
gboolean used_default;
|
||||
|
||||
key = g_strdup_printf ("%s%d", BASE_KEY_BLESSED_PROGRAM, i);
|
||||
value = bonobo_config_get_string_with_default (db, key, "", &used_default);
|
||||
if (used_default)
|
||||
g_message ("get_calendars_to_load(): Could not read calendar name %d", i);
|
||||
|
||||
if (value != NULL && !strcmp (value, program)) {
|
||||
g_free (key);
|
||||
g_free (value);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
g_free (key);
|
||||
g_free (value);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -33,4 +33,7 @@ time_t get_saved_notification_time (void);
|
||||
void save_calendars_to_load (GPtrArray *uris);
|
||||
GPtrArray *get_calendars_to_load (void);
|
||||
|
||||
void save_blessed_program (const char *program);
|
||||
gboolean is_blessed_program (const char *program);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user