diff options
author | Christopher Davis <christopherdavis@gnome.org> | 2022-07-07 14:06:57 -0400 |
---|---|---|
committer | Christopher Davis <christopherdavis@gnome.org> | 2022-07-07 14:09:07 -0400 |
commit | 2459126456d5fffb569899b79739c0d7bfe6e155 (patch) | |
tree | a9fe7f3de07e12908546de0111b57902a7d92dce | |
parent | 905128cc6903b37e8672c2945076932fbd6918ec (diff) | |
download | gnome-calendar-wip/cdavis/date-selector-tweaks.tar.gz |
event-editor: Make DateSelector an AdwEntryRowwip/cdavis/date-selector-tweaks
Also adjust placement of it in the editor dialog,
and place the time selector in an AdwActionRow below.
-rw-r--r-- | src/gui/event-editor/gcal-date-selector.c | 30 | ||||
-rw-r--r-- | src/gui/event-editor/gcal-date-selector.h | 3 | ||||
-rw-r--r-- | src/gui/event-editor/gcal-date-selector.ui | 44 | ||||
-rw-r--r-- | src/gui/event-editor/gcal-schedule-section.ui | 64 |
4 files changed, 58 insertions, 83 deletions
diff --git a/src/gui/event-editor/gcal-date-selector.c b/src/gui/event-editor/gcal-date-selector.c index f3a18a97..88e0501e 100644 --- a/src/gui/event-editor/gcal-date-selector.c +++ b/src/gui/event-editor/gcal-date-selector.c @@ -29,7 +29,7 @@ struct _GcalDateSelector { - GtkEntry parent; + AdwEntryRow parent; /* widgets */ GtkWidget *date_chooser; @@ -38,7 +38,7 @@ struct _GcalDateSelector GSettings *settings; }; -G_DEFINE_TYPE (GcalDateSelector, gcal_date_selector, GTK_TYPE_ENTRY); +G_DEFINE_TYPE (GcalDateSelector, gcal_date_selector, ADW_TYPE_ENTRY_ROW); enum { @@ -98,20 +98,6 @@ parse_date (GcalDateSelector *self) } static void -icon_pressed_cb (GcalDateSelector *self, - GtkEntryIconPosition position, - GdkEvent *event) -{ - GdkRectangle icon_bounds; - - gtk_entry_get_icon_area (GTK_ENTRY (self), position, &icon_bounds); - - gtk_popover_set_pointing_to (GTK_POPOVER (self->date_selector_popover), &icon_bounds); - - gtk_popover_popup (GTK_POPOVER (self->date_selector_popover)); -} - -static void on_contains_focus_changed_cb (GtkEventControllerFocus *focus_controller, GParamSpec *pspec, GcalDateSelector *self) @@ -205,16 +191,15 @@ gcal_date_selector_set_property (GObject *object, } static void -gcal_date_selector_activate (GtkEntry *entry) +gcal_date_selector_activate (GcalDateSelector *self) { - parse_date (GCAL_DATE_SELECTOR (entry)); + parse_date (GCAL_DATE_SELECTOR (self)); } static void gcal_date_selector_class_init (GcalDateSelectorClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - GtkEntryClass *entry_class = GTK_ENTRY_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); g_type_ensure (GCAL_TYPE_DATE_CHOOSER); @@ -226,8 +211,6 @@ gcal_date_selector_class_init (GcalDateSelectorClass *klass) widget_class->focus = gcal_date_selector_focus; widget_class->size_allocate = gcal_date_selector_size_allocate; - entry_class->activate = gcal_date_selector_activate; - /** * GcalDateSelector::date: * @@ -247,7 +230,6 @@ gcal_date_selector_class_init (GcalDateSelectorClass *klass) gtk_widget_class_bind_template_child (widget_class, GcalDateSelector, date_selector_popover); gtk_widget_class_bind_template_callback (widget_class, calendar_day_selected); - gtk_widget_class_bind_template_callback (widget_class, icon_pressed_cb); gtk_widget_class_bind_template_callback (widget_class, on_contains_focus_changed_cb); } @@ -263,6 +245,10 @@ gcal_date_selector_init (GcalDateSelector *self) self->date_chooser, "show-week-numbers", G_SETTINGS_BIND_DEFAULT); + + g_signal_connect_swapped (gtk_editable_get_delegate (GTK_EDITABLE (self)), + "activate", G_CALLBACK (gcal_date_selector_activate), + self); } /* Public API */ diff --git a/src/gui/event-editor/gcal-date-selector.h b/src/gui/event-editor/gcal-date-selector.h index 7da46bf9..13f364e7 100644 --- a/src/gui/event-editor/gcal-date-selector.h +++ b/src/gui/event-editor/gcal-date-selector.h @@ -20,12 +20,13 @@ #define __GCAL_DATE_SELECTOR_H__ #include <gtk/gtk.h> +#include <libadwaita-1/adwaita.h> G_BEGIN_DECLS #define GCAL_TYPE_DATE_SELECTOR (gcal_date_selector_get_type ()) -G_DECLARE_FINAL_TYPE (GcalDateSelector, gcal_date_selector, GCAL, DATE_SELECTOR, GtkEntry) +G_DECLARE_FINAL_TYPE (GcalDateSelector, gcal_date_selector, GCAL, DATE_SELECTOR, AdwEntryRow) GtkWidget* gcal_date_selector_new (void); diff --git a/src/gui/event-editor/gcal-date-selector.ui b/src/gui/event-editor/gcal-date-selector.ui index 250cfd2c..6b937cca 100644 --- a/src/gui/event-editor/gcal-date-selector.ui +++ b/src/gui/event-editor/gcal-date-selector.ui @@ -1,11 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <interface> - <template class="GcalDateSelector" parent="GtkEntry"> - <property name="width-chars">11</property> - <property name="max-width-chars">11</property> - <property name="secondary-icon-name">pan-down-symbolic</property> + <template class="GcalDateSelector" parent="AdwEntryRow"> <property name="input-hints">no-emoji</property> - <signal name="icon-press" handler="icon_pressed_cb" object="GcalDateSelector" swapped="no"/> <child> <object class="GtkEventControllerFocus"> @@ -13,21 +9,31 @@ </object> </child> - <child> - <object class="GtkPopover" id="date_selector_popover"> - <property name="position">bottom</property> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <child> - <object class="GcalDateChooser" id="date_chooser"> - <property name="show_events">False</property> - <property name="show_selected_week">False</property> - <property name="show_week_numbers">True</property> - <signal name="day-selected" handler="calendar_day_selected" object="GcalDateSelector" swapped="yes"/> + <child type="suffix"> + <object class="GtkMenuButton" id="date_selector_button"> + <property name="valign">center</property> + <property name="icon-name">x-office-calendar-symbolic</property> + <property name="tooltip-text" translatable="yes">Pick Date</property> + <property name="popover"> + <object class="GtkPopover" id="date_selector_popover"> + <property name="position">bottom</property> + <property name="margin-top">12</property> + <property name="margin-bottom">12</property> + <property name="margin-start">12</property> + <property name="margin-end">12</property> + <child> + <object class="GcalDateChooser" id="date_chooser"> + <property name="show_events">False</property> + <property name="show_selected_week">False</property> + <property name="show_week_numbers">True</property> + <signal name="day-selected" handler="calendar_day_selected" object="GcalDateSelector" swapped="yes"/> + </object> + </child> </object> - </child> + </property> + <style> + <class name="flat"/> + </style> </object> </child> diff --git a/src/gui/event-editor/gcal-schedule-section.ui b/src/gui/event-editor/gcal-schedule-section.ui index 60683e0e..896c4422 100644 --- a/src/gui/event-editor/gcal-schedule-section.ui +++ b/src/gui/event-editor/gcal-schedule-section.ui @@ -43,24 +43,20 @@ </child> <child> - <object class="GtkBox"> - <property name="hexpand">True</property> - <property name="halign">center</property> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="spacing">6</property> + <object class="GcalDateSelector" id="start_date_selector"> + <property name="title" translatable="yes">Start Date</property> + <signal name="notify::date" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> + </object> + </child> - <child> - <object class="GcalDateSelector" id="start_date_selector"> - <property name="valign">center</property> - <signal name="notify::date" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> - </object> - </child> + <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">Time</property> <child> <object class="GcalTimeSelector" id="start_time_selector"> + <property name="margin-top">12</property> + <property name="margin-bottom">12</property> <signal name="notify::time" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> </object> </child> @@ -86,24 +82,21 @@ </child> <child> - <object class="GtkBox"> - <property name="hexpand">True</property> - <property name="halign">center</property> - <property name="margin-top">12</property> - <property name="margin-bottom">12</property> - <property name="margin-start">12</property> - <property name="margin-end">12</property> - <property name="spacing">6</property> + <object class="GcalDateSelector" id="end_date_selector"> + <property name="valign">center</property> + <property name="title" translatable="yes">End Date</property> + <signal name="notify::date" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> + </object> + </child> - <child> - <object class="GcalDateSelector" id="end_date_selector"> - <property name="valign">center</property> - <signal name="notify::date" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> - </object> - </child> + <child> + <object class="AdwActionRow"> + <property name="title" translatable="yes">Time</property> <child> <object class="GcalTimeSelector" id="end_time_selector"> + <property name="margin-top">12</property> + <property name="margin-bottom">12</property> <signal name="notify::time" handler="sync_datetimes" object="GcalScheduleSection" swapped="yes" /> </object> </child> @@ -183,18 +176,9 @@ <!-- End Repeat Date --> <child> - <object class="AdwActionRow"> - <property name="visible" bind-source="until_date_selector" bind-property="visible" bind-flags="default|sync-create" /> + <object class = "GcalDateSelector" id="until_date_selector"> + <property name="visible">False</property> <property name="title" translatable="yes">End Repeat Date</property> - <property name="activatable-widget">until_date_selector</property> - - <child> - <object class = "GcalDateSelector" id="until_date_selector"> - <property name="visible">False</property> - <property name="valign">center</property> - </object> - </child> - </object> </child> @@ -216,9 +200,7 @@ <object class="GtkSizeGroup"> <property name="mode">horizontal</property> <widgets> - <widget name="end_date_selector" /> <widget name="end_time_selector" /> - <widget name="start_date_selector" /> <widget name="start_time_selector" /> </widgets> </object> |