aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/alarm-notify
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/alarm-notify')
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.c308
-rw-r--r--calendar/gui/alarm-notify/alarm-notify-dialog.h18
-rw-r--r--calendar/gui/alarm-notify/alarm-notify.c2
-rw-r--r--calendar/gui/alarm-notify/alarm-queue.c105
4 files changed, 108 insertions, 325 deletions
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.c b/calendar/gui/alarm-notify/alarm-notify-dialog.c
index 3b81bad8f1..ee625c96f9 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.c
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.c
@@ -22,8 +22,6 @@
#include <config.h>
#include <stdio.h>
#include <string.h>
-#include <gtk/gtktreeview.h>
-#include <gtk/gtkcellrenderertext.h>
#include <gtk/gtkdialog.h>
#include <gtk/gtkimage.h>
#include <gtk/gtklabel.h>
@@ -44,65 +42,31 @@
#include <e-util/e-icon-factory.h>
-
-enum {
- ALARM_DISPLAY_COLUMN,
- ALARM_SUMMARY_COLUMN,
- ALARM_DESCRIPTION_COLUMN,
- ALARM_LOCATION_COLUMN,
-
- ALARM_START_COLUMN,
- ALARM_END_COLUMN,
-
- ALARM_FUNCINFO_COLUMN,
-
- N_ALARM_COLUMNS
-};
-
/* The useful contents of the alarm notify dialog */
-
-typedef struct {
- AlarmNotifyFunc func;
- gpointer func_data;
-} AlarmFuncInfo;
-
typedef struct {
GladeXML *xml;
GtkWidget *dialog;
+ GtkWidget *title;
GtkWidget *snooze_time;
GtkWidget *minutes_label;
GtkWidget *description;
GtkWidget *location;
- GtkWidget *treeview;
- GtkWidget *scrolledwindow;
-
- AlarmFuncInfo *cur_funcinfo;
-
+ GtkWidget *start;
+ GtkWidget *end;
+
+ AlarmNotifyFunc func;
+ gpointer func_data;
} AlarmNotify;
enum {
- AN_RESPONSE_EDIT = 0,
+ AN_RESPONSE_EDIT = 0,
AN_RESPONSE_SNOOZE = 1
};
static void
-tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data);
-
-static void
-fill_in_labels (AlarmNotify *an, const gchar *summary, const gchar *description,
- const gchar *location, time_t occur_start, time_t occur_end);
-
-
-
-AlarmNotify *an = NULL;
-gboolean have_one = FALSE;
-
-
-
-static void
an_update_minutes_label (GtkSpinButton *sb, gpointer data)
{
AlarmNotify *an;
@@ -122,31 +86,20 @@ dialog_response_cb (GtkDialog *dialog, guint response_id, gpointer user_data)
{
int snooze_timeout;
AlarmNotify *an = user_data;
- GtkTreeIter iter;
- GtkTreeModel *model = NULL;
- AlarmFuncInfo *funcinfo = NULL;
- GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &funcinfo, -1);
-
- g_return_if_fail (funcinfo);
switch (response_id) {
case AN_RESPONSE_EDIT:
- (* funcinfo->func) (ALARM_NOTIFY_EDIT, -1, funcinfo->func_data);
+ (* an->func) (ALARM_NOTIFY_EDIT, -1, an->func_data);
break;
case AN_RESPONSE_SNOOZE:
snooze_timeout = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (an->snooze_time));
- (* funcinfo->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, funcinfo->func_data);
+ (* an->func) (ALARM_NOTIFY_SNOOZE, snooze_timeout, an->func_data);
break;
case GTK_RESPONSE_CLOSE:
case GTK_RESPONSE_DELETE_EVENT:
- (* funcinfo->func) (ALARM_NOTIFY_CLOSE, -1, funcinfo->func_data);
+ (* an->func) (ALARM_NOTIFY_CLOSE, -1, an->func_data);
break;
}
-
- return;
}
static void
@@ -159,203 +112,124 @@ dialog_destroyed_cb (GtkWidget *dialog, gpointer user_data)
}
/**
- * notified_alarms_dialog_new:
+ * alarm_notify_dialog:
+ * @trigger: Trigger time for the alarm.
+ * @occur_start: Start of occurrence time for the event.
+ * @occur_end: End of occurrence time for the event.
+ * @vtype: Type of the component which corresponds to the alarm.
+ * @summary: Short summary of the appointment
+ * @description: Long description of the appointment
+ * @location: Location of the appointment
+ * @func: Function to be called when a dialog action is invoked.
+ * @func_data: Closure data for @func.
+ *
+ * Runs the alarm notification dialog. The specified @func will be used to
+ * notify the client about result of the actions in the dialog.
*
- * Return value: a new dialog in which you can add alarm notifications
+ * Return value: a pointer to the dialog widget created or NULL if there is an error.
**/
-AlarmNotificationsDialog *
-notified_alarms_dialog_new (void)
+GtkWidget *
+alarm_notify_dialog (time_t trigger, time_t occur_start, time_t occur_end,
+ ECalComponentVType vtype, const char *summary,
+ const char *description, const char *location,
+ AlarmNotifyFunc func, gpointer func_data)
{
+ AlarmNotify *an;
GtkWidget *image;
+ icaltimezone *current_zone;
+ char *title;
+ char *start, *end;
char *icon_path;
GList *icon_list;
- GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
- AlarmNotificationsDialog *na = NULL;
- AlarmNotify *an = g_new0 (AlarmNotify, 1);
- GtkTreeViewColumn *column = NULL;
- GtkTreeSelection *selection = NULL;
- GtkTreeModel *model = GTK_TREE_MODEL (gtk_list_store_new (
- N_ALARM_COLUMNS,
-
- G_TYPE_STRING, /* Display */
- G_TYPE_STRING, /* Summary */
- G_TYPE_STRING, /* Description */
- G_TYPE_STRING, /* Location */
-
- G_TYPE_POINTER, /* Start */
- G_TYPE_POINTER, /* End */
-
- G_TYPE_POINTER /* FuncInfo*/));
-
+
+ g_return_val_if_fail (trigger != -1, NULL);
+
+ /* Only VEVENTs or VTODOs can have alarms */
+ g_return_val_if_fail (vtype == E_CAL_COMPONENT_EVENT || vtype == E_CAL_COMPONENT_TODO, NULL);
+ g_return_val_if_fail (summary != NULL, NULL);
+ g_return_val_if_fail (description != NULL, NULL);
+ g_return_val_if_fail (location != NULL, NULL);
+ g_return_val_if_fail (func != NULL, NULL);
+
+ an = g_new0 (AlarmNotify, 1);
+
+ an->func = func;
+ an->func_data = func_data;
+
an->xml = glade_xml_new (EVOLUTION_GLADEDIR "/alarm-notify.glade", NULL, NULL);
if (!an->xml) {
g_message ("alarm_notify_dialog(): Could not load the Glade XML file!");
g_free (an);
return NULL;
}
-
+
an->dialog = glade_xml_get_widget (an->xml, "alarm-notify");
+ an->title = glade_xml_get_widget (an->xml, "title-label");
an->snooze_time = glade_xml_get_widget (an->xml, "snooze-time");
an->minutes_label = glade_xml_get_widget (an->xml, "minutes-label");
an->description = glade_xml_get_widget (an->xml, "description-label");
an->location = glade_xml_get_widget (an->xml, "location-label");
- an->treeview = glade_xml_get_widget (an->xml, "appointments-treeview");
- an->scrolledwindow = glade_xml_get_widget (an->xml, "treeview-scrolledwindow");
+ an->start = glade_xml_get_widget (an->xml, "start-label");
+ an->end = glade_xml_get_widget (an->xml, "end-label");
- if (!(an->dialog && an->scrolledwindow && an->treeview && an->snooze_time
- && an->description && an->location)) {
+ if (!(an->dialog && an->title && an->snooze_time
+ && an->description && an->location && an->start && an->end)) {
g_message ("alarm_notify_dialog(): Could not find all widgets in Glade file!");
g_object_unref (an->xml);
g_free (an);
return NULL;
}
- gtk_tree_view_set_model (GTK_TREE_VIEW(an->treeview), model);
-
- column = gtk_tree_view_column_new_with_attributes (_("Start time"),
- renderer, "text", ALARM_DISPLAY_COLUMN, NULL);
-
- gtk_tree_view_column_set_attributes (column, renderer,
- "markup", ALARM_DISPLAY_COLUMN, NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (an->treeview), column);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (an->treeview));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
- g_signal_connect (G_OBJECT (selection), "changed",
- G_CALLBACK (tree_selection_changed_cb), an);
-
gtk_widget_realize (an->dialog);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->vbox), 0);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (an->dialog)->action_area), 12);
- image = glade_xml_get_widget (an->xml, "alarm-image");
+
+ image = glade_xml_get_widget (an->xml, "alarm-image");
icon_path = e_icon_factory_get_icon_filename ("stock_alarm", E_ICON_SIZE_DIALOG);
gtk_image_set_from_file (GTK_IMAGE (image), icon_path);
g_free (icon_path);
-
- g_signal_connect (G_OBJECT (an->dialog), "response", G_CALLBACK (dialog_response_cb), an);
- g_signal_connect (G_OBJECT (an->dialog), "destroy", G_CALLBACK (dialog_destroyed_cb), an);
-
- if (!GTK_WIDGET_REALIZED (an->dialog))
- gtk_widget_realize (an->dialog);
- icon_list = e_icon_factory_get_icon_list ("stock_alarm");
- if (icon_list) {
- gtk_window_set_icon_list (GTK_WINDOW (an->dialog), icon_list);
- g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
- g_list_free (icon_list);
- }
-
- /* Set callback for updating the snooze "minutes" label */
- g_signal_connect (G_OBJECT (an->snooze_time), "value_changed",
- G_CALLBACK (an_update_minutes_label), an);
-
-
- na = g_new0 (AlarmNotificationsDialog, 1);
-
- na->treeview = an->treeview;
- na->dialog = an->dialog;
-
- return na;
-}
-
-
-/**
- * add_alarm_to_notified_alarms_dialog:
- * @na: Pointer to the dialog-info
- * @trigger: Trigger time for the alarm.
- * @occur_start: Start of occurrence time for the event.
- * @occur_end: End of occurrence time for the event.
- * @vtype: Type of the component which corresponds to the alarm.
- * @summary: Short summary of the appointment
- * @description: Long description of the appointment
- * @location: Location of the appointment
- * @func: Function to be called when a dialog action is invoked.
- * @func_data: Closure data for @func.
- *
- * The specified @func will be used to notify the client about result of
- * the actions in the dialog.
- *
- * Return value: the iter in the treeview of the dialog
- **/
-
-GtkTreeIter
-add_alarm_to_notified_alarms_dialog (AlarmNotificationsDialog *na, time_t trigger,
- time_t occur_start, time_t occur_end,
- ECalComponentVType vtype, const char *summary,
- const char *description, const char *location,
- AlarmNotifyFunc func, gpointer func_data)
-{
- GtkTreeIter iter;
- GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (na->treeview));
- AlarmFuncInfo *funcinfo = NULL;
- gchar *to_display = NULL, *start, *end;
- icaltimezone *current_zone;
-
- g_return_val_if_fail (trigger != -1, iter);
- /* Only VEVENTs or VTODOs can have alarms */
- g_return_val_if_fail (vtype == E_CAL_COMPONENT_EVENT || vtype == E_CAL_COMPONENT_TODO, iter);
- g_return_val_if_fail (summary != NULL, iter);
- g_return_val_if_fail (description != NULL, iter);
- g_return_val_if_fail (location != NULL, iter);
- g_return_val_if_fail (func != NULL, iter);
-
- funcinfo = g_new0 (AlarmFuncInfo, 1);
- funcinfo->func = func;
- funcinfo->func_data = func_data;
-
- gtk_list_store_append (GTK_LIST_STORE(model), &iter);
+ /* Title */
+
+ gtk_window_set_title (GTK_WINDOW (an->dialog), summary);
+
+ /* Set the widget contents */
+
+ title = g_strdup_printf ("<big><b>%s</b></big>", summary);
+ gtk_label_set_markup (GTK_LABEL (an->title), title);
+ g_free (title);
+
+ gtk_label_set_text (GTK_LABEL (an->description), description);
+ gtk_label_set_text (GTK_LABEL (an->location), location);
+
+ /* Stringize the times */
current_zone = config_data_get_timezone ();
+
start = timet_to_str_with_zone (occur_start, current_zone);
+ gtk_label_set_text (GTK_LABEL (an->start), start);
+
end = timet_to_str_with_zone (occur_end, current_zone);
- to_display = g_strdup_printf (_("<big><b>%s</b></big>\n%s until %s"),
- summary, start, end);
- g_free (start);
- g_free (end);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter,
- ALARM_DISPLAY_COLUMN, to_display, -1);
- g_free (to_display);
-
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_SUMMARY_COLUMN, summary, -1);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_DESCRIPTION_COLUMN, description, -1);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_LOCATION_COLUMN, location, -1);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_START_COLUMN, occur_start, -1);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_END_COLUMN, occur_end, -1);
- gtk_list_store_set (GTK_LIST_STORE(model), &iter, ALARM_FUNCINFO_COLUMN, funcinfo, -1);
-
- return iter;
-}
+ gtk_label_set_text (GTK_LABEL (an->end), end);
-static void
-tree_selection_changed_cb (GtkTreeSelection *selection, gpointer user_data)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
- {
- AlarmNotify *an = user_data;
- gchar *summary, *description, *location;
- time_t occur_start, occur_end;
-
- gtk_tree_model_get (model, &iter, ALARM_SUMMARY_COLUMN, &summary, -1);
- gtk_tree_model_get (model, &iter, ALARM_DESCRIPTION_COLUMN, &description, -1);
- gtk_tree_model_get (model, &iter, ALARM_LOCATION_COLUMN, &location, -1);
- gtk_tree_model_get (model, &iter, ALARM_START_COLUMN, &occur_start, -1);
- gtk_tree_model_get (model, &iter, ALARM_END_COLUMN, &occur_end, -1);\
- gtk_tree_model_get (model, &iter, ALARM_FUNCINFO_COLUMN, &an->cur_funcinfo, -1);
-
- fill_in_labels (an, summary, description, location, occur_start, occur_end);
- }
-}
+ /* Set callback for updating the snooze "minutes" label */
+ g_signal_connect (G_OBJECT (an->snooze_time), "value_changed",
+ G_CALLBACK (an_update_minutes_label), an);
+ /* Run! */
+
+ if (!GTK_WIDGET_REALIZED (an->dialog))
+ gtk_widget_realize (an->dialog);
+ icon_list = e_icon_factory_get_icon_list ("stock_alarm");
+ if (icon_list) {
+ gtk_window_set_icon_list (GTK_WINDOW (an->dialog), icon_list);
+ g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
+ g_list_free (icon_list);
+ }
+ g_signal_connect (G_OBJECT (an->dialog), "response", G_CALLBACK (dialog_response_cb), an);
+ g_signal_connect (G_OBJECT (an->dialog), "destroy", G_CALLBACK (dialog_destroyed_cb), an);
+ gtk_widget_show (an->dialog);
-static void
-fill_in_labels (AlarmNotify *an, const gchar *summary, const gchar *description,
- const gchar *location, time_t occur_start, time_t occur_end)
-{
- gtk_label_set_text (GTK_LABEL (an->description), description);
- gtk_label_set_text (GTK_LABEL (an->location), location);
+ return an->dialog;
}
diff --git a/calendar/gui/alarm-notify/alarm-notify-dialog.h b/calendar/gui/alarm-notify/alarm-notify-dialog.h
index 7c6b65870f..cf01f76af9 100644
--- a/calendar/gui/alarm-notify/alarm-notify-dialog.h
+++ b/calendar/gui/alarm-notify/alarm-notify-dialog.h
@@ -25,9 +25,6 @@
#include <glib.h>
#include <libecal/e-cal-component.h>
#include <gtk/gtkwidget.h>
-#include <gtk/gtktreemodel.h>
-#include <gtk/gtktreeselection.h>
-#include <gtk/gtkliststore.h>
@@ -37,25 +34,12 @@ typedef enum {
ALARM_NOTIFY_EDIT
} AlarmNotifyResult;
-typedef struct _AlarmNotificationsDialog AlarmNotificationsDialog;
-struct _AlarmNotificationsDialog
-{
- GtkWidget *dialog;
- GtkWidget *treeview;
-};
-
typedef void (* AlarmNotifyFunc) (AlarmNotifyResult result, int snooze_mins, gpointer data);
-AlarmNotificationsDialog *
-notified_alarms_dialog_new (void);
-
-GtkTreeIter
-add_alarm_to_notified_alarms_dialog (AlarmNotificationsDialog *na, time_t trigger,
- time_t occur_start, time_t occur_end,
+GtkWidget *alarm_notify_dialog (time_t trigger, time_t occur_start, time_t occur_end,
ECalComponentVType vtype, const char *summary,
const char *description, const char *location,
AlarmNotifyFunc func, gpointer func_data);
-
#endif
diff --git a/calendar/gui/alarm-notify/alarm-notify.c b/calendar/gui/alarm-notify/alarm-notify.c
index 51aac05cdd..60f9c3fded 100644
--- a/calendar/gui/alarm-notify/alarm-notify.c
+++ b/calendar/gui/alarm-notify/alarm-notify.c
@@ -285,7 +285,7 @@ AlarmNotify *
alarm_notify_new (void)
{
AlarmNotify *an;
-
+
an = g_object_new (TYPE_ALARM_NOTIFY,
"poa", bonobo_poa_get_threaded (ORBIT_THREAD_HINT_PER_REQUEST, NULL),
NULL);
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c
index 0f42e0abb0..b0b83d5b8e 100644
--- a/calendar/gui/alarm-notify/alarm-queue.c
+++ b/calendar/gui/alarm-notify/alarm-queue.c
@@ -52,13 +52,9 @@
#include "config-data.h"
#include "util.h"
#include "e-util/e-popup.h"
-#include "e-util/e-error.h"
-/* The dialog with alarm nofications */
-static AlarmNotificationsDialog *alarm_notifications_dialog = NULL;
-
/* Whether the queueing system has been initialized */
static gboolean alarm_queue_inited;
@@ -127,8 +123,6 @@ typedef struct {
static gpointer midnight_refresh_id = NULL;
static time_t midnight = 0;
-static void
-remove_client_alarms (ClientAlarms *ca);
static void display_notification (time_t trigger, CompQueuedAlarms *cqa,
gpointer alarm_id, gboolean use_description);
static void audio_notification (time_t trigger, CompQueuedAlarms *cqa, gpointer alarm_id);
@@ -689,7 +683,7 @@ edit_component (ECal *client, ECalComponent *comp)
0, NULL, &ev);
if (BONOBO_EX (&ev)) {
- e_error_run (NULL, "editor-error", bonobo_exception_get_text (&ev));
+ g_message (G_STRLOC ": Could not activate the component editor factory");
CORBA_exception_free (&ev);
return;
}
@@ -706,7 +700,7 @@ edit_component (ECal *client, ECalComponent *comp)
GNOME_Evolution_Calendar_CompEditorFactory_editExisting (factory, uri, (char *) uid, corba_type, &ev);
if (BONOBO_EX (&ev))
- e_error_run (NULL, "editor-error", bonobo_exception_get_text (&ev));
+ g_message (G_STRLOC ": Exception while editing the component");
CORBA_exception_free (&ev);
@@ -728,7 +722,7 @@ typedef struct {
ECalView *query;
GtkWidget *tray_icon;
GtkWidget *image;
- GtkTreeIter iter;
+ GtkWidget *alarm_dialog;
} TrayIconData;
static void
@@ -761,7 +755,7 @@ static void
notify_dialog_cb (AlarmNotifyResult result, int snooze_mins, gpointer data)
{
TrayIconData *tray_data = data;
-
+
g_signal_handlers_disconnect_matched (tray_data->query, G_SIGNAL_MATCH_FUNC,
0, 0, NULL, on_dialog_objs_removed_cb, NULL);
@@ -769,86 +763,39 @@ notify_dialog_cb (AlarmNotifyResult result, int snooze_mins, gpointer data)
case ALARM_NOTIFY_SNOOZE:
create_snooze (tray_data->cqa, tray_data->alarm_id, snooze_mins);
tray_data->cqa = NULL;
-
- if (alarm_notifications_dialog) {
- GtkTreeSelection *selection =
- gtk_tree_view_get_selection (
- GTK_TREE_VIEW (alarm_notifications_dialog->treeview));
- GtkTreeIter iter;
- GtkTreeModel *model = NULL;
-
- /* We can also use tray_data->iter */
- if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
- if (!gtk_tree_model_get_iter_first (model, &iter)) {
- /* We removed the last one */
- gtk_widget_destroy (alarm_notifications_dialog->dialog);
- g_free (alarm_notifications_dialog);
- alarm_notifications_dialog = NULL;
- } else {
- /* Select the first */
- gtk_tree_selection_select_iter (selection, &iter);
- }
- }
-
- }
-
break;
case ALARM_NOTIFY_EDIT:
edit_component (tray_data->client, tray_data->comp);
-
- gtk_widget_destroy (alarm_notifications_dialog->dialog);
- g_free (alarm_notifications_dialog);
- alarm_notifications_dialog = NULL;
-
- gtk_widget_destroy (tray_data->tray_icon);
-
break;
case ALARM_NOTIFY_CLOSE:
-
-
- if (alarm_notifications_dialog) {
- GtkTreeIter iter;
- GtkTreeModel *model =
- gtk_tree_view_get_model (
- GTK_TREE_VIEW (alarm_notifications_dialog->treeview));
- gboolean valid = gtk_tree_model_get_iter_first (model, &iter);
-
- /* Maybe we should warn about this first? */
- while (valid) {
- gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
- valid = gtk_tree_model_iter_next (model, &iter);
- }
-
- gtk_widget_destroy (alarm_notifications_dialog->dialog);
- g_free (alarm_notifications_dialog);
- alarm_notifications_dialog = NULL;
- }
-
- gtk_widget_destroy (tray_data->tray_icon);
-
+ /* Do nothing */
break;
default:
g_assert_not_reached ();
}
- return;
+ gtk_widget_destroy (tray_data->tray_icon);
}
static gint
tray_icon_destroyed_cb (GtkWidget *tray, gpointer user_data)
{
TrayIconData *tray_data = user_data;
-
+
g_signal_handlers_disconnect_matched (tray_data->query, G_SIGNAL_MATCH_FUNC,
0, 0, NULL, on_dialog_objs_removed_cb, NULL);
if (tray_data->cqa != NULL)
remove_queued_alarm (tray_data->cqa, tray_data->alarm_id, TRUE, TRUE);
+ if (tray_data->alarm_dialog != NULL) {
+ gtk_widget_destroy (tray_data->alarm_dialog);
+ tray_data->alarm_dialog = NULL;
+ }
+
if (tray_data->summary != NULL) {
g_free (tray_data->summary);
tray_data->summary = NULL;
@@ -882,28 +829,11 @@ static gboolean
open_alarm_dialog (TrayIconData *tray_data)
{
QueuedAlarm *qa;
-
+
qa = lookup_queued_alarm (tray_data->cqa, tray_data->alarm_id);
if (qa) {
-
gtk_widget_hide (tray_data->tray_icon);
-
- if (!alarm_notifications_dialog)
- alarm_notifications_dialog = notified_alarms_dialog_new ();
-
- if (alarm_notifications_dialog) {
-
- GtkTreeSelection *selection = NULL;
- GtkTreeModel *model = NULL;
-
- selection = gtk_tree_view_get_selection (
- GTK_TREE_VIEW (alarm_notifications_dialog->treeview));
- model = gtk_tree_view_get_model (
- GTK_TREE_VIEW(alarm_notifications_dialog->treeview));
-
- tray_data->iter = add_alarm_to_notified_alarms_dialog (
- alarm_notifications_dialog,
- tray_data->trigger,
+ tray_data->alarm_dialog = alarm_notify_dialog (tray_data->trigger,
qa->instance->occur_start,
qa->instance->occur_end,
e_cal_component_get_vtype (tray_data->comp),
@@ -911,11 +841,6 @@ open_alarm_dialog (TrayIconData *tray_data)
tray_data->description,
tray_data->location,
notify_dialog_cb, tray_data);
-
- gtk_tree_selection_select_iter (selection, &tray_data->iter);
-
- }
-
}
return TRUE;
@@ -1111,7 +1036,7 @@ display_notification (time_t trigger, CompQueuedAlarms *cqa,
if (!config_data_get_notify_with_tray ()) {
tray_data->blink_id = -1;
open_alarm_dialog (tray_data);
- gtk_window_stick (GTK_WINDOW (alarm_notifications_dialog->dialog));
+ gtk_window_stick (GTK_WINDOW (tray_data->alarm_dialog));
} else {
tray_data->blink_id = g_timeout_add (500, tray_icon_blink_cb, tray_data);
gtk_widget_show (tray_icon);