summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Davis <christopherdavis@gnome.org>2022-07-07 14:06:57 -0400
committerChristopher Davis <christopherdavis@gnome.org>2022-07-07 14:09:07 -0400
commit2459126456d5fffb569899b79739c0d7bfe6e155 (patch)
treea9fe7f3de07e12908546de0111b57902a7d92dce
parent905128cc6903b37e8672c2945076932fbd6918ec (diff)
downloadgnome-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.c30
-rw-r--r--src/gui/event-editor/gcal-date-selector.h3
-rw-r--r--src/gui/event-editor/gcal-date-selector.ui44
-rw-r--r--src/gui/event-editor/gcal-schedule-section.ui64
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>