calendar-management-dialog: Port to GTK4

Subclass AdwWindow. Adjust the API to return GtkHeaderBar
instead of HdyHeaderBar.
This commit is contained in:
Georges Basile Stavracas Neto
2022-02-11 09:18:38 -03:00
parent e3196644bb
commit 2b834b27ff
8 changed files with 40 additions and 45 deletions
@@ -54,11 +54,12 @@ typedef enum
struct _GcalCalendarManagementDialog struct _GcalCalendarManagementDialog
{ {
HdyWindow parent; AdwWindow parent;
HdyHeaderBar *headerbar; GtkHeaderBar *headerbar;
GtkWidget *notebook; GtkWidget *notebook;
GtkWidget *stack; GtkWidget *stack;
AdwWindowTitle *window_title;
/* flags */ /* flags */
ESource *source; ESource *source;
@@ -76,7 +77,7 @@ static void on_page_switched_cb (GcalCalendarMa
GcalCalendar *calendar, GcalCalendar *calendar,
GcalCalendarManagementDialog *self); GcalCalendarManagementDialog *self);
G_DEFINE_TYPE (GcalCalendarManagementDialog, gcal_calendar_management_dialog, HDY_TYPE_WINDOW) G_DEFINE_TYPE (GcalCalendarManagementDialog, gcal_calendar_management_dialog, ADW_TYPE_WINDOW)
enum enum
{ {
@@ -114,8 +115,8 @@ set_page (GcalCalendarManagementDialog *self,
gtk_stack_set_visible_child (GTK_STACK (self->stack), GTK_WIDGET (page)); gtk_stack_set_visible_child (GTK_STACK (self->stack), GTK_WIDGET (page));
gcal_calendar_management_page_activate (page, calendar); gcal_calendar_management_page_activate (page, calendar);
hdy_header_bar_set_title (self->headerbar, adw_window_title_set_title (self->window_title,
gcal_calendar_management_page_get_title (page)); gcal_calendar_management_page_get_title (page));
break; break;
} }
@@ -268,6 +269,7 @@ gcal_calendar_management_dialog_class_init (GcalCalendarManagementDialogClass *k
gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, headerbar); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, headerbar);
gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, stack); gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, stack);
gtk_widget_class_bind_template_child (widget_class, GcalCalendarManagementDialog, window_title);
} }
static void static void
@@ -276,10 +278,10 @@ gcal_calendar_management_dialog_init (GcalCalendarManagementDialog *self)
gtk_widget_init_template (GTK_WIDGET (self)); gtk_widget_init_template (GTK_WIDGET (self));
} }
HdyHeaderBar* GtkHeaderBar*
gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self) gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self)
{ {
g_return_val_if_fail (GCAL_IS_CALENDAR_MANAGEMENT_DIALOG (self), NULL); g_return_val_if_fail (GCAL_IS_CALENDAR_MANAGEMENT_DIALOG (self), NULL);
return HDY_HEADER_BAR (self->headerbar); return self->headerbar;
} }
@@ -23,7 +23,7 @@
#include "gcal-manager.h" #include "gcal-manager.h"
#include <libecal/libecal.h> #include <libecal/libecal.h>
#include <handy.h> #include <adwaita.h>
G_BEGIN_DECLS G_BEGIN_DECLS
@@ -34,8 +34,8 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GcalCalendarManagementDialog, G_DECLARE_FINAL_TYPE (GcalCalendarManagementDialog,
gcal_calendar_management_dialog, gcal_calendar_management_dialog,
GCAL, CALENDAR_MANAGEMENT_DIALOG, GCAL, CALENDAR_MANAGEMENT_DIALOG,
HdyWindow) AdwWindow)
HdyHeaderBar* gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self); GtkHeaderBar* gcal_calendar_management_dialog_get_titlebar (GcalCalendarManagementDialog *self);
G_END_DECLS G_END_DECLS
@@ -1,39 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.1 -->
<interface> <interface>
<requires lib="gtk+" version="3.15"/> <template class="GcalCalendarManagementDialog" parent="AdwWindow">
<template class="GcalCalendarManagementDialog" parent="HdyWindow"> <property name="title" translatable="yes">Calendar Settings</property>
<property name="width_request">450</property> <property name="width_request">450</property>
<property name="can_focus">False</property>
<property name="border_width">0</property>
<property name="default_width">550</property> <property name="default_width">550</property>
<property name="default_height">500</property> <property name="default_height">500</property>
<property name="type_hint">dialog</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="destroy_with_parent">True</property> <property name="destroy_with_parent">True</property>
<property name="modal">True</property> <property name="hide-on-close">True</property>
<child> <child>
<object class="HdyDeck"> <object class="AdwLeaflet">
<property name="visible">True</property> <property name="can-unfold">False</property>
<child> <child>
<object class="GtkBox" id="vbox"> <object class="GtkBox" id="vbox">
<property name="visible">True</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<child> <child>
<object class="HdyHeaderBar" id="headerbar"> <object class="GtkHeaderBar" id="headerbar">
<property name="visible">True</property> <property name="show-title-buttons">True</property>
<property name="title" translatable="yes">Calendar Settings</property> <property name="title-widget">
<property name="show_close_button">True</property> <object class="AdwWindowTitle" id="window_title" />
</property>
</object> </object>
</child> </child>
<child> <child>
<object class="GtkOverlay" id="overlay"> <object class="GtkOverlay" id="overlay">
<property name="visible">True</property>
<child> <child>
<object class="GtkStack" id="stack"> <object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="hexpand">True</property> <property name="hexpand">True</property>
<property name="vexpand">True</property> <property name="vexpand">True</property>
<property name="vhomogeneous">False</property> <property name="vhomogeneous">False</property>
@@ -108,13 +108,13 @@ gcal_calendar_management_page_switch_page (GcalCalendarManagementPage *self,
g_signal_emit (self, signals[SWITCH_PAGE], 0, page_name, calendar); g_signal_emit (self, signals[SWITCH_PAGE], 0, page_name, calendar);
} }
HdyHeaderBar* GtkHeaderBar*
gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self) gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self)
{ {
GtkWidget *toplevel; GtkNative *native;
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self)); native = gtk_widget_get_native (GTK_WIDGET (self));
g_assert (toplevel != NULL); g_assert (native != NULL);
return gcal_calendar_management_dialog_get_titlebar (GCAL_CALENDAR_MANAGEMENT_DIALOG (toplevel)); return gcal_calendar_management_dialog_get_titlebar (GCAL_CALENDAR_MANAGEMENT_DIALOG (native));
} }
@@ -61,6 +61,6 @@ void gcal_calendar_management_page_switch_page (GcalCalendarMa
const gchar *page_name, const gchar *page_name,
GcalCalendar *calendar); GcalCalendar *calendar);
HdyHeaderBar* gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self); GtkHeaderBar* gcal_calendar_management_page_get_titlebar (GcalCalendarManagementPage *self);
G_END_DECLS G_END_DECLS
@@ -307,11 +307,11 @@ gcal_edit_calendar_page_activate (GcalCalendarManagementPage *page,
GcalCalendar *calendar) GcalCalendar *calendar)
{ {
GcalEditCalendarPage *self; GcalEditCalendarPage *self;
HdyHeaderBar *headerbar; GtkHeaderBar *headerbar;
self = GCAL_EDIT_CALENDAR_PAGE (page); self = GCAL_EDIT_CALENDAR_PAGE (page);
headerbar = gcal_calendar_management_page_get_titlebar (page); headerbar = gcal_calendar_management_page_get_titlebar (page);
hdy_header_bar_pack_start (headerbar, self->back_button); gtk_header_bar_pack_start (headerbar, self->back_button);
setup_calendar (self, calendar); setup_calendar (self, calendar);
} }
@@ -320,14 +320,14 @@ static void
gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page) gcal_edit_calendar_page_deactivate (GcalCalendarManagementPage *page)
{ {
GcalEditCalendarPage *self; GcalEditCalendarPage *self;
HdyHeaderBar *headerbar; GtkHeaderBar *headerbar;
GcalManager *manager; GcalManager *manager;
GCAL_ENTRY; GCAL_ENTRY;
self = GCAL_EDIT_CALENDAR_PAGE (page); self = GCAL_EDIT_CALENDAR_PAGE (page);
headerbar = gcal_calendar_management_page_get_titlebar (page); headerbar = gcal_calendar_management_page_get_titlebar (page);
gtk_container_remove (GTK_CONTAINER (headerbar), self->back_button); gtk_header_bar_remove (headerbar, self->back_button);
update_calendar (self); update_calendar (self);
@@ -518,16 +518,16 @@ gcal_new_calendar_page_activate (GcalCalendarManagementPage *page,
GcalCalendar *calendar) GcalCalendar *calendar)
{ {
GcalNewCalendarPage *self; GcalNewCalendarPage *self;
HdyHeaderBar *headerbar; GtkHeaderBar *headerbar;
GCAL_ENTRY; GCAL_ENTRY;
self = GCAL_NEW_CALENDAR_PAGE (page); self = GCAL_NEW_CALENDAR_PAGE (page);
headerbar = gcal_calendar_management_page_get_titlebar (page); headerbar = gcal_calendar_management_page_get_titlebar (page);
hdy_header_bar_pack_start (headerbar, self->cancel_button); gtk_header_bar_pack_start (headerbar, self->cancel_button);
hdy_header_bar_pack_end (headerbar, self->add_button); gtk_header_bar_pack_end (headerbar, self->add_button);
hdy_header_bar_set_show_close_button (headerbar, FALSE); gtk_header_bar_set_show_title_buttons (headerbar, FALSE);
GCAL_EXIT; GCAL_EXIT;
} }
@@ -535,16 +535,16 @@ static void
gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page) gcal_new_calendar_page_deactivate (GcalCalendarManagementPage *page)
{ {
GcalNewCalendarPage *self; GcalNewCalendarPage *self;
HdyHeaderBar *headerbar; GtkHeaderBar *headerbar;
GCAL_ENTRY; GCAL_ENTRY;
self = GCAL_NEW_CALENDAR_PAGE (page); self = GCAL_NEW_CALENDAR_PAGE (page);
headerbar = gcal_calendar_management_page_get_titlebar (page); headerbar = gcal_calendar_management_page_get_titlebar (page);
gtk_container_remove (GTK_CONTAINER (headerbar), self->cancel_button); gtk_header_bar_remove (headerbar, self->cancel_button);
gtk_container_remove (GTK_CONTAINER (headerbar), self->add_button); gtk_header_bar_remove (headerbar, self->add_button);
hdy_header_bar_set_show_close_button (headerbar, TRUE); gtk_header_bar_set_show_title_buttons (headerbar, TRUE);
g_clear_object (&self->local_source); g_clear_object (&self->local_source);
g_clear_pointer (&self->remote_sources, g_ptr_array_unref); g_clear_pointer (&self->remote_sources, g_ptr_array_unref);
-1
View File
@@ -235,7 +235,6 @@
<object class="GcalCalendarManagementDialog" id="calendar_management_dialog"> <object class="GcalCalendarManagementDialog" id="calendar_management_dialog">
<property name="visible">False</property> <property name="visible">False</property>
<property name="transient_for">GcalWindow</property> <property name="transient_for">GcalWindow</property>
<signal name="delete-event" handler="gtk_widget_hide_on_delete" object="GcalWindow" swapped="no" />
</object> </object>
<object class="GcalEventEditorDialog" id="event_editor"> <object class="GcalEventEditorDialog" id="event_editor">
<property name="visible">False</property> <property name="visible">False</property>