diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/e-itip-control.c | 70 | ||||
-rw-r--r-- | calendar/gui/e-itip-control.glade | 76 |
2 files changed, 119 insertions, 27 deletions
diff --git a/calendar/gui/e-itip-control.c b/calendar/gui/e-itip-control.c index b28ee1a2b1..93825513dd 100644 --- a/calendar/gui/e-itip-control.c +++ b/calendar/gui/e-itip-control.c @@ -21,8 +21,8 @@ #include <cal-client/cal-client.h> -#define DEFAULT_WIDTH 450 -#define DEFAULT_HEIGHT 350 +#define DEFAULT_WIDTH 400 +#define DEFAULT_HEIGHT 300 extern gchar *evolution_dir; @@ -33,6 +33,7 @@ struct _EItipControlPrivate { GtkWidget *main_frame; GtkWidget *organizer_entry, *dtstart_label, *dtend_label; GtkWidget *summary_entry, *description_box, *message_text; + GtkWidget *button_box; GtkWidget *address_entry; GtkWidget *add_button; GtkWidget *loading_window; @@ -64,7 +65,7 @@ get_icalparam_by_type (icalproperty *prop, icalparameter_kind kind) /******** * find_attendee() searches through the attendee properties of `comp' - * and returns the one whose value is the same as `address' if such + * and returns the one the value of which is the same as `address' if such * a property exists. Otherwise, it will return NULL. ********/ static icalproperty * @@ -132,11 +133,21 @@ itip_control_destroy_cb (GtkObject *object, static void itip_control_size_request_cb (GtkWidget *widget, GtkRequisition *requisition) { + + /* gtk_widget_set (GTK_WIDGET (widget), "width", DEFAULT_WIDTH, NULL); */ + /* gtk_widget_set (GTK_WIDGET (widget), "height", DEFAULT_HEIGHT, NULL); */ requisition->width = DEFAULT_WIDTH; requisition->height = DEFAULT_HEIGHT; } static void +itip_control_size_allocation_cb (GtkWidget *widget, GtkRequisition *requisition) +{ + widget->requisition.height = requisition->height; + widget->requisition.width = requisition->width; +} + +static void cal_loaded_cb (GtkObject *object, CalClientGetStatus status, gpointer data) { CalClient *client = CAL_CLIENT (object); @@ -155,7 +166,7 @@ cal_loaded_cb (GtkObject *object, CalClientGetStatus status, gpointer data) /* We have success. */ GtkWidget *dialog; - dialog = gnome_ok_dialog("Component successfully added."); + dialog = gnome_ok_dialog("Component successfully updated."); gnome_dialog_run (GNOME_DIALOG(dialog)); } } @@ -287,6 +298,26 @@ pstream_load (BonoboPersistStream *ps, const Bonobo_Stream stream, priv->comp = icalcomponent_get_first_component (priv->main_comp, ICAL_ANY_COMPONENT); + +#if 0 + { + FILE *fp; + + fp = fopen ("evo.debug", "w"); + + fputs ("The raw vCalendar data:\n\n", fp); + fputs (priv->vcalendar, fp); + + fputs ("The main component:\n\n", fp); + fputs (icalcomponent_as_ical_string (priv->main_comp), fp); + + fputs ("The child component:\n\n", fp); + fputs (icalcomponent_as_ical_string (priv->comp), fp); + + fclose (fp); + } +#endif + if (priv->comp == NULL) { g_printerr ("e-itip-control.c: I could not extract a proper component from\n" " the vCalendar data.\n"); @@ -392,11 +423,23 @@ pstream_load (BonoboPersistStream *ps, const Bonobo_Stream stream, prop = icalcomponent_get_first_property (priv->main_comp, ICAL_METHOD_PROPERTY); switch (icalproperty_get_method (prop)) { case ICAL_METHOD_PUBLISH: + { + GtkWidget *button; + sprintf (message, "%s has published calendar information, " - "which you can add to your own calendar." + "which you can add to your own calendar. " "No reply is necessary.", priv->from_address); + + button = gtk_button_new_with_label ("Add to Calendar"); + gtk_box_pack_start (GTK_BOX (priv->button_box), button, FALSE, FALSE, 3); + gtk_widget_show (button); + + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (add_button_clicked_cb), priv); + break; + } case ICAL_METHOD_REQUEST: { /* I'll check if I have to rsvp. */ @@ -419,6 +462,22 @@ pstream_load (BonoboPersistStream *ps, const Bonobo_Stream stream, (priv->organizer ? priv->organizer : "an unknown person"), (rsvp ? "should" : "don't have to") ); + if (rsvp) { + GtkWidget *accept_button, *decline_button, *tentative_button; + + accept_button = gtk_button_new_with_label ("Accept"); + decline_button = gtk_button_new_with_label ("Decline"); + tentative_button = gtk_button_new_with_label ("Tentative"); + + gtk_box_pack_start (GTK_BOX (priv->button_box), accept_button, FALSE, FALSE, 3); + gtk_box_pack_start (GTK_BOX (priv->button_box), decline_button, FALSE, FALSE, 3); + gtk_box_pack_start (GTK_BOX (priv->button_box), tentative_button, FALSE, FALSE, 3); + + gtk_widget_show (accept_button); + gtk_widget_show (decline_button); + gtk_widget_show (tentative_button); + } + } break; default: @@ -540,6 +599,7 @@ e_itip_control_factory (BonoboGenericFactory *Factory, void *closure) priv->summary_entry = glade_xml_get_widget (priv->xml, "summary_entry"); priv->description_box = glade_xml_get_widget (priv->xml, "description_box"); /* priv->add_button = glade_xml_get_widget (priv->xml, "add_button"); */ + priv->button_box = glade_xml_get_widget (priv->xml, "button_box"); priv->address_entry = glade_xml_get_widget (priv->xml, "address_entry"); priv->message_text = glade_xml_get_widget (priv->xml, "message_text"); diff --git a/calendar/gui/e-itip-control.glade b/calendar/gui/e-itip-control.glade index 6233f7b409..481874368a 100644 --- a/calendar/gui/e-itip-control.glade +++ b/calendar/gui/e-itip-control.glade @@ -381,42 +381,74 @@ </widget> <widget> - <class>GtkScrolledWindow</class> - <name>scrolledwindow3</name> - <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy> - <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> - <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> - <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + <class>GtkHBox</class> + <name>hbox3</name> + <homogeneous>False</homogeneous> + <spacing>0</spacing> <child> <padding>0</padding> <expand>True</expand> - <fill>True</fill> + <fill>False</fill> </child> <widget> - <class>GtkText</class> - <name>message_text</name> - <can_focus>True</can_focus> - <editable>False</editable> - <text></text> + <class>GtkScrolledWindow</class> + <name>scrolledwindow3</name> + <border_width>3</border_width> + <width>365</width> + <hscrollbar_policy>GTK_POLICY_NEVER</hscrollbar_policy> + <vscrollbar_policy>GTK_POLICY_AUTOMATIC</vscrollbar_policy> + <hupdate_policy>GTK_UPDATE_CONTINUOUS</hupdate_policy> + <vupdate_policy>GTK_UPDATE_CONTINUOUS</vupdate_policy> + <child> + <padding>0</padding> + <expand>False</expand> + <fill>False</fill> + </child> + + <widget> + <class>GtkText</class> + <name>message_text</name> + <can_focus>True</can_focus> + <editable>False</editable> + <text></text> + </widget> + </widget> + + <widget> + <class>GtkLabel</class> + <name>label12</name> + <label></label> + <justify>GTK_JUSTIFY_CENTER</justify> + <wrap>False</wrap> + <xalign>0.5</xalign> + <yalign>0.5</yalign> + <xpad>0</xpad> + <ypad>0</ypad> + <child> + <padding>0</padding> + <expand>True</expand> + <fill>False</fill> + </child> </widget> </widget> <widget> - <class>GtkHButtonBox</class> + <class>GtkHBox</class> <name>button_box</name> - <height>35</height> - <layout_style>GTK_BUTTONBOX_DEFAULT_STYLE</layout_style> - <spacing>30</spacing> - <child_min_width>85</child_min_width> - <child_min_height>27</child_min_height> - <child_ipad_x>7</child_ipad_x> - <child_ipad_y>0</child_ipad_y> + <border_width>3</border_width> + <height>30</height> + <homogeneous>False</homogeneous> + <spacing>8</spacing> <child> <padding>0</padding> - <expand>True</expand> - <fill>True</fill> + <expand>False</expand> + <fill>False</fill> </child> + + <widget> + <class>Placeholder</class> + </widget> </widget> </widget> </widget> |