diff options
-rw-r--r-- | data/ui/calendar-management-dialog.ui | 27 | ||||
-rw-r--r-- | data/ui/new-calendar-page.ui | 19 | ||||
-rw-r--r-- | src/gui/calendar-management/gcal-calendar-management-dialog.c | 27 | ||||
-rw-r--r-- | src/gui/calendar-management/gcal-new-calendar-page.c | 50 |
4 files changed, 66 insertions, 57 deletions
diff --git a/data/ui/calendar-management-dialog.ui b/data/ui/calendar-management-dialog.ui index 4955e1a2..8b75a303 100644 --- a/data/ui/calendar-management-dialog.ui +++ b/data/ui/calendar-management-dialog.ui @@ -55,33 +55,6 @@ </child> </object> </child> - <child> - <object class="GtkButton" id="cancel_button"> - <property name="label" translatable="yes">Cancel</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <signal name="clicked" handler="cancel_button_clicked" object="GcalCalendarManagementDialog" swapped="no"/> - </object> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkButton" id="add_button"> - <property name="label" translatable="yes">Add</property> - <property name="sensitive">False</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <signal name="clicked" handler="add_button_clicked" object="GcalCalendarManagementDialog" swapped="no"/> - <style> - <class name="suggested-action"/> - </style> - </object> - <packing> - <property name="pack_type">end</property> - <property name="position">1</property> - </packing> - </child> </object> </child> </template> diff --git a/data/ui/new-calendar-page.ui b/data/ui/new-calendar-page.ui index 0f307796..5c19659c 100644 --- a/data/ui/new-calendar-page.ui +++ b/data/ui/new-calendar-page.ui @@ -211,4 +211,23 @@ </child> </object> + <!-- Headerbar buttons --> + <object class="GtkButton" id="cancel_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Cancel</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_cancel_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" /> + </object> + <object class="GtkButton" id="add_button"> + <property name="visible">True</property> + <property name="label" translatable="yes">Add</property> + <property name="sensitive">False</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="on_add_button_clicked_cb" object="GcalNewCalendarPage" swapped="no" /> + <style> + <class name="suggested-action"/> + </style> + </object> </interface> diff --git a/src/gui/calendar-management/gcal-calendar-management-dialog.c b/src/gui/calendar-management/gcal-calendar-management-dialog.c index a36c57d9..8f9e4669 100644 --- a/src/gui/calendar-management/gcal-calendar-management-dialog.c +++ b/src/gui/calendar-management/gcal-calendar-management-dialog.c @@ -57,9 +57,7 @@ struct _GcalCalendarManagementDialog { GtkDialog parent; - GtkWidget *add_button; GtkWidget *back_button; - GtkWidget *cancel_button; GtkWidget *headerbar; GtkWidget *notebook; GtkWidget *stack; @@ -86,9 +84,6 @@ typedef enum GCAL_ACCOUNT_TYPE_NOT_SUPPORTED } GcalAccountType; -static void add_button_clicked (GtkWidget *button, - gpointer user_data); - static void action_widget_activated (GtkWidget *widget, gpointer user_data); @@ -102,10 +97,6 @@ static void calendar_visible_check_toggled (GObject *ob GParamSpec *pspec, gpointer user_data); -static void cancel_button_clicked (GtkWidget *button, - gpointer user_data); - - static void on_file_activated (GSimpleAction *action, GVariant *param, gpointer user_data); @@ -223,15 +214,6 @@ calendar_visible_check_toggled (GObject *object, } static void -cancel_button_clicked (GtkWidget *button, - gpointer user_data) -{ - GcalCalendarManagementDialog *self = GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data); - - gcal_calendar_management_dialog_set_mode (self, GCAL_CALENDAR_MANAGEMENT_MODE_NORMAL); -} - -static void response_signal (GtkDialog *dialog, gint response_id, gpointer user_data) @@ -340,7 +322,7 @@ calendar_file_selected (GtkFileChooser *button, gcal_calendar_management_dialog_set_source (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), source); gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), GCAL_CALENDAR_MANAGEMENT_MODE_CREATE); - gtk_widget_set_sensitive (self->add_button, TRUE); + //gtk_widget_set_sensitive (self->add_button, TRUE); } static void @@ -404,7 +386,7 @@ on_local_activated (GSimpleAction *action, gcal_calendar_management_dialog_set_source (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), source); gcal_calendar_management_dialog_set_mode (GCAL_CALENDAR_MANAGEMENT_DIALOG (user_data), GCAL_CALENDAR_MANAGEMENT_MODE_CREATE); - gtk_widget_set_sensitive (self->add_button, TRUE); + //gtk_widget_set_sensitive (self->add_button, TRUE); } static void @@ -598,9 +580,7 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k /* bind things for/from the template class */ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass), "/org/gnome/calendar/calendar-management-dialog.ui"); - gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, add_button); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, back_button); - gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, cancel_button); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, headerbar); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, stack); @@ -609,7 +589,6 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k gtk_widget_class_bind_template_callback (widget_class, back_button_clicked); gtk_widget_class_bind_template_callback (widget_class, calendar_file_selected); gtk_widget_class_bind_template_callback (widget_class, calendar_visible_check_toggled); - gtk_widget_class_bind_template_callback (widget_class, cancel_button_clicked); gtk_widget_class_bind_template_callback (widget_class, response_signal); } @@ -645,8 +624,6 @@ gcal_calendar_management_dialog_set_mode (GcalCalendarManagementDialog *dial gtk_header_bar_set_subtitle (GTK_HEADER_BAR (dialog->headerbar), NULL); gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (dialog->headerbar), FALSE); gtk_stack_set_visible_child (GTK_STACK (dialog->stack), GTK_WIDGET (dialog->pages[GCAL_PAGE_NEW_CALENDAR])); - gtk_widget_set_visible (dialog->add_button, TRUE); - gtk_widget_set_visible (dialog->cancel_button, TRUE); break; case GCAL_CALENDAR_MANAGEMENT_MODE_EDIT: diff --git a/src/gui/calendar-management/gcal-new-calendar-page.c b/src/gui/calendar-management/gcal-new-calendar-page.c index 04aaf3ec..55c5968d 100644 --- a/src/gui/calendar-management/gcal-new-calendar-page.c +++ b/src/gui/calendar-management/gcal-new-calendar-page.c @@ -33,7 +33,9 @@ struct _GcalNewCalendarPage { GtkBox parent; + GtkWidget *add_button; GtkEntry *calendar_address_entry; + GtkWidget *cancel_button; GtkWidget *credentials_cancel_button; GtkWidget *credentials_connect_button; GtkWidget *credentials_dialog; @@ -210,7 +212,7 @@ discover_sources_cb (GObject *source, &error)) { /* Don't add an source with errors */ - //gtk_widget_set_sensitive (self->add_button, FALSE); + gtk_widget_set_sensitive (self->add_button, FALSE); /* * If it's the first try and things went wrong, retry with the user @@ -378,8 +380,7 @@ validate_url_cb (GcalNewCalendarPage *self) if (is_file) { self->remote_sources = g_list_append (self->remote_sources, source); - //gtk_widget_set_sensitive (self->add_button, source != NULL); - + gtk_widget_set_sensitive (self->add_button, source != NULL); return FALSE; } @@ -501,6 +502,13 @@ on_url_entry_text_changed_cb (GtkEntry *entry, GCAL_EXIT; } +static void +on_cancel_button_clicked_cb (GtkWidget *button, + GcalCalendarManagementPage *page) +{ + gcal_calendar_management_page_switch_page (page, "calendars", NULL); +} + /* * GcalCalendarManagementPage iface @@ -519,17 +527,45 @@ gcal_new_calendar_page_get_title (GcalCalendarManagementPage *page) } static void +gcal_new_calendar_page_activate (GcalCalendarManagementPage *page, + gpointer page_data) +{ + GcalNewCalendarPage *self; + GtkHeaderBar *headerbar; + + GCAL_ENTRY; + + self = GCAL_NEW_CALENDAR_PAGE (page); + headerbar = gcal_calendar_management_page_get_titlebar (page); + + gtk_header_bar_pack_start (headerbar, self->cancel_button); + gtk_header_bar_pack_end (headerbar, self->add_button); + gtk_header_bar_set_show_close_button (headerbar, FALSE); + + GCAL_EXIT; +} +static void gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page) { - GcalNewCalendarPage *self = GCAL_NEW_CALENDAR_PAGE (page); + GcalNewCalendarPage *self; + GtkHeaderBar *headerbar; - //g_clear_object (&self->source); + GCAL_ENTRY; + + self = GCAL_NEW_CALENDAR_PAGE (page); + headerbar = gcal_calendar_management_page_get_titlebar (page); + + gtk_container_remove (GTK_CONTAINER (headerbar), self->cancel_button); + gtk_container_remove (GTK_CONTAINER (headerbar), self->add_button); + gtk_header_bar_set_show_close_button (headerbar, TRUE); if (self->remote_sources) { g_list_free_full (self->remote_sources, g_object_unref); self->remote_sources = NULL; } + + GCAL_EXIT; } static void @@ -537,6 +573,7 @@ gcal_calendar_management_page_iface_init (GcalCalendarManagementPageInterface *i { iface->get_name = gcal_new_calendar_page_get_name; iface->get_title = gcal_new_calendar_page_get_title; + iface->activate = gcal_new_calendar_page_activate; iface->deactivate = gcal_new_calendar_page_deactivate; } @@ -607,7 +644,9 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/new-calendar-page.ui"); + gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, add_button); gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, calendar_address_entry); + gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, cancel_button); gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_cancel_button); gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_connect_button); gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, credentials_dialog); @@ -617,6 +656,7 @@ gcal_new_calendar_page_class_init (GcalNewCalendarPageClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalNewCalendarPage, web_sources_revealer); gtk_widget_class_bind_template_callback (widget_class, on_calendar_address_activated_cb); + gtk_widget_class_bind_template_callback (widget_class, on_cancel_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_credential_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_credential_entry_activate_cb); gtk_widget_class_bind_template_callback (widget_class, on_url_entry_text_changed_cb); |