calendar-row: Add APIs
Since the calendar row widget is becoming an expandable widget, several APIs were added to the widget: - `gcal_calendar_row_get_calendar` - `gcal_calendar_row_add_suffix` - `gcal_calendar_row_get_first_suffix_child` - `gcal_calendar_row_add_header_class` - `gcal_calendar_row_remove_header_class` Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
f8c5751174
commit
7e63f5f7e2
@@ -2,8 +2,7 @@ using Gtk 4.0;
|
|||||||
using Adw 1;
|
using Adw 1;
|
||||||
|
|
||||||
template $GcalCalendarRow: Adw.PreferencesRow {
|
template $GcalCalendarRow: Adw.PreferencesRow {
|
||||||
child: Box {
|
child: Box header_box {
|
||||||
orientation: horizontal;
|
|
||||||
spacing: 6;
|
spacing: 6;
|
||||||
|
|
||||||
Image color_image {
|
Image color_image {
|
||||||
@@ -18,10 +17,19 @@ template $GcalCalendarRow: Adw.PreferencesRow {
|
|||||||
label: bind template.title;
|
label: bind template.title;
|
||||||
}
|
}
|
||||||
|
|
||||||
Image visibility_image {
|
Box {
|
||||||
|
spacing: 6;
|
||||||
halign: end;
|
halign: end;
|
||||||
hexpand: true;
|
hexpand: true;
|
||||||
icon-name: "eye-not-looking-symbolic";
|
|
||||||
|
Image visibility_image {
|
||||||
|
icon-name: "eye-not-looking-symbolic";
|
||||||
|
}
|
||||||
|
|
||||||
|
Box suffix {
|
||||||
|
spacing: 6;
|
||||||
|
visible: false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ struct _GcalCalendarRow
|
|||||||
{
|
{
|
||||||
AdwPreferencesRow parent;
|
AdwPreferencesRow parent;
|
||||||
|
|
||||||
|
GtkBox *suffix;
|
||||||
|
GtkBox *header_box;
|
||||||
GtkImage *color_image;
|
GtkImage *color_image;
|
||||||
GtkImage *visibility_image;
|
GtkImage *visibility_image;
|
||||||
GcalCalendar *calendar;
|
GcalCalendar *calendar;
|
||||||
@@ -122,7 +124,7 @@ gcal_calendar_row_get_property (GObject *object,
|
|||||||
switch (prop_id)
|
switch (prop_id)
|
||||||
{
|
{
|
||||||
case PROP_CALENDAR:
|
case PROP_CALENDAR:
|
||||||
g_value_set_object (value, self->calendar);
|
g_value_set_object (value, gcal_calendar_row_get_calendar (self));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -170,6 +172,8 @@ gcal_calendar_row_class_init (GcalCalendarRowClass *klass)
|
|||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/common/gcal-calendar-row.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/ui/common/gcal-calendar-row.ui");
|
||||||
|
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, suffix);
|
||||||
|
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, header_box);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, color_image);
|
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, color_image);
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, visibility_image);
|
gtk_widget_class_bind_template_child (widget_class, GcalCalendarRow, visibility_image);
|
||||||
}
|
}
|
||||||
@@ -187,3 +191,82 @@ gcal_calendar_row_new (GcalCalendar *calendar)
|
|||||||
"calendar", calendar,
|
"calendar", calendar,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_row_get_calendar:
|
||||||
|
* @self: a #GcalCalendarRow
|
||||||
|
*
|
||||||
|
* Gets calendar from row.
|
||||||
|
*
|
||||||
|
* Returns: (transfer none): a #GcalCalendar
|
||||||
|
*/
|
||||||
|
GcalCalendar*
|
||||||
|
gcal_calendar_row_get_calendar (GcalCalendarRow *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GCAL_IS_CALENDAR_ROW (self), NULL);
|
||||||
|
|
||||||
|
return self->calendar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_row_add_suffix:
|
||||||
|
* @self: a #GcalCalendarRow
|
||||||
|
* @widget: a #GtkWidget
|
||||||
|
*
|
||||||
|
* Adds a suffix widget to @self.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_calendar_row_add_suffix (GcalCalendarRow *self,
|
||||||
|
GtkWidget *widget)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_CALENDAR_ROW (self));
|
||||||
|
g_return_if_fail (GTK_IS_WIDGET (widget));
|
||||||
|
g_return_if_fail (gtk_widget_get_parent (widget) == NULL);
|
||||||
|
|
||||||
|
gtk_widget_set_visible (GTK_WIDGET (self->suffix), TRUE);
|
||||||
|
gtk_box_append (self->suffix, widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_row_get_first_suffix_child:
|
||||||
|
* @self: a #GcalCalendarRow
|
||||||
|
*
|
||||||
|
* Gets the first child suffix widget.
|
||||||
|
*
|
||||||
|
* Returns: (transfer none): a #GtkWidget
|
||||||
|
*/
|
||||||
|
GtkWidget*
|
||||||
|
gcal_calendar_row_get_first_suffix_child (GcalCalendarRow *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GCAL_IS_CALENDAR_ROW (self), NULL);
|
||||||
|
|
||||||
|
return gtk_widget_get_first_child (GTK_WIDGET (self->suffix));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_row_add_header_class:
|
||||||
|
* @self: a #GcalCalendarRow
|
||||||
|
*
|
||||||
|
* Adds `header` CSS class to @header_box
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_calendar_row_add_header_class (GcalCalendarRow *self)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_CALENDAR_ROW (self));
|
||||||
|
|
||||||
|
gtk_widget_add_css_class (GTK_WIDGET (self->header_box), "header");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_calendar_row_remove_header_class:
|
||||||
|
* @self: a #GcalCalendarRow
|
||||||
|
*
|
||||||
|
* Removes `header` CSS class from @header_box
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_calendar_row_remove_header_class (GcalCalendarRow *self)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_CALENDAR_ROW (self));
|
||||||
|
|
||||||
|
gtk_widget_remove_css_class (GTK_WIDGET (self->header_box), "header");
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,4 +30,15 @@ G_DECLARE_FINAL_TYPE (GcalCalendarRow, gcal_calendar_row, GCAL, CALENDAR_ROW, Ad
|
|||||||
|
|
||||||
GtkWidget* gcal_calendar_row_new (GcalCalendar *calendar);
|
GtkWidget* gcal_calendar_row_new (GcalCalendar *calendar);
|
||||||
|
|
||||||
|
GcalCalendar* gcal_calendar_row_get_calendar (GcalCalendarRow *self);
|
||||||
|
|
||||||
|
void gcal_calendar_row_add_suffix (GcalCalendarRow *self,
|
||||||
|
GtkWidget *widget);
|
||||||
|
|
||||||
|
GtkWidget* gcal_calendar_row_get_first_suffix_child (GcalCalendarRow *self);
|
||||||
|
|
||||||
|
void gcal_calendar_row_add_header_class (GcalCalendarRow *self);
|
||||||
|
|
||||||
|
void gcal_calendar_row_remove_header_class (GcalCalendarRow *self);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user