/* Callback used when the alarm options button is clicked */ static void show_options (Dialog *dialog) { gboolean repeat; char *email; e_cal_component_alarm_set_action (dialog->alarm, e_dialog_option_menu_get (dialog->action, action_map)); repeat = !e_cal_get_static_capability (dialog->ecal, CAL_STATIC_CAPABILITY_NO_ALARM_REPEAT); if (e_cal_get_static_capability (dialog->ecal, CAL_STATIC_CAPABILITY_NO_EMAIL_ALARMS) || e_cal_get_alarm_email_address (dialog->ecal, &email, NULL)) { if (!alarm_options_dialog_run (dialog->toplevel, dialog->alarm, email, repeat)) g_message (G_STRLOC ": not create the alarm options dialog"); } }
/* fill_component handler for the alarm page */ static void dialog_to_alarm (Dialog *dialog) { ECalComponentAlarmTrigger trigger; ECalComponentAlarmAction action; /* Fill out the alarm */ memset (&trigger, 0, sizeof (ECalComponentAlarmTrigger)); trigger.type = e_dialog_combo_box_get (dialog->time_combo, time_map); if (e_dialog_combo_box_get (dialog->relative_combo, relative_map) == BEFORE) trigger.u.rel_duration.is_neg = 1; else trigger.u.rel_duration.is_neg = 0; switch (e_dialog_combo_box_get (dialog->value_units_combo, value_map)) { case MINUTES: trigger.u.rel_duration.minutes = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON (dialog->interval_value)); break; case HOURS: trigger.u.rel_duration.hours = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON (dialog->interval_value)); break; case DAYS: trigger.u.rel_duration.days = gtk_spin_button_get_value_as_int ( GTK_SPIN_BUTTON (dialog->interval_value)); break; default: g_return_if_reached (); } e_cal_component_alarm_set_trigger (dialog->alarm, trigger); action = e_dialog_combo_box_get (dialog->action_combo, action_map); e_cal_component_alarm_set_action (dialog->alarm, action); /* Repeat stuff */ repeat_widgets_to_alarm (dialog, dialog->alarm); /* Options */ switch (action) { case E_CAL_COMPONENT_ALARM_NONE: g_return_if_reached (); break; case E_CAL_COMPONENT_ALARM_AUDIO: aalarm_widgets_to_alarm (dialog, dialog->alarm); break; case E_CAL_COMPONENT_ALARM_DISPLAY: dalarm_widgets_to_alarm (dialog, dialog->alarm); break; case E_CAL_COMPONENT_ALARM_EMAIL: malarm_widgets_to_alarm (dialog, dialog->alarm); break; case E_CAL_COMPONENT_ALARM_PROCEDURE: palarm_widgets_to_alarm (dialog, dialog->alarm); break; case E_CAL_COMPONENT_ALARM_UNKNOWN: break; default: g_return_if_reached (); } }