diff options
author | Isaque Galdino <igaldino@gmail.com> | 2017-02-21 22:48:30 -0300 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2017-03-01 19:21:10 -0300 |
commit | 0e2efa043412e77fdcd753bf617561379d424b37 (patch) | |
tree | 897baad80b8f0b1ab89d451786eff8834c0bba69 | |
parent | e543cf32dab3199c2c67fdb529046018cd1f3208 (diff) | |
download | gnome-calendar-wip/igaldino/flowbox-year-view.tar.gz |
date-chooser: Option to don't show other monthswip/igaldino/flowbox-year-view
Currently GcalDateChooser shows current month's days and the last days
from previous month and first days from the next one with they are on
the same week the current month start or end.
This is fine we are showing only one month, but if you are showing the
whole year, e.g. year-view, that is not so nice.
Therefore, this change GcalDateChooser to have an option to hide other
months' days.
-rw-r--r-- | src/gcal-date-chooser.c | 39 | ||||
-rw-r--r-- | src/gcal-date-chooser.h | 5 | ||||
-rw-r--r-- | src/views/gcal-year-view.c | 1 |
3 files changed, 45 insertions, 0 deletions
diff --git a/src/gcal-date-chooser.c b/src/gcal-date-chooser.c index e9b212e7..37e37d9c 100644 --- a/src/gcal-date-chooser.c +++ b/src/gcal-date-chooser.c @@ -52,6 +52,7 @@ struct _GcalDateChooser gboolean no_month_change; gboolean show_month_only; gboolean show_selected_day; + gboolean show_other_months; GcalDateChooserDayOptionsCallback day_options_cb; gpointer day_options_data; @@ -77,6 +78,7 @@ enum PROP_NO_MONTH_CHANGE, PROP_SHOW_MONTH_ONLY, PROP_SHOW_SELECTED_DAY, + PROP_SHOW_OTHER_MONTHS, NUM_PROPERTIES }; @@ -141,6 +143,8 @@ calendar_compute_days (GcalDateChooser *self) date = g_date_time_new_local (other_year, other_month, day, 1, 1, 1); gcal_date_chooser_day_set_date (d, date); gcal_date_chooser_day_set_other_month (d, TRUE); + if (!self->show_other_months) + gtk_widget_hide (GTK_WIDGET (d)); g_date_time_unref (date); day++; } @@ -184,6 +188,8 @@ calendar_compute_days (GcalDateChooser *self) date = g_date_time_new_local (other_year, other_month, day, 1, 1, 1); gcal_date_chooser_day_set_date (d, date); gcal_date_chooser_day_set_other_month (d, TRUE); + if (!self->show_other_months) + gtk_widget_hide (GTK_WIDGET (d)); g_date_time_unref (date); day++; } @@ -391,6 +397,10 @@ calendar_set_property (GObject *obj, gcal_date_chooser_set_show_selected_day (self, g_value_get_boolean (value)); break; + case PROP_SHOW_OTHER_MONTHS: + gcal_date_chooser_set_show_other_months (self, g_value_get_boolean (value)); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec); break; @@ -435,6 +445,10 @@ calendar_get_property (GObject *obj, g_value_set_boolean (value, self->show_selected_day); break; + case PROP_SHOW_OTHER_MONTHS: + g_value_set_boolean (value, self->show_other_months); + break; + default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, property_id, pspec); break; @@ -575,6 +589,12 @@ gcal_date_chooser_class_init (GcalDateChooserClass *class) TRUE, G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + properties[PROP_SHOW_OTHER_MONTHS] = g_param_spec_boolean ("show-other-months", + "Show Other Months' days", + "If TRUE, it will display other months' days", + TRUE, + G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY); + g_object_class_install_properties (object_class, NUM_PROPERTIES, properties); signals[MONTH_CHANGED] = g_signal_new ("month-changed", @@ -617,6 +637,7 @@ gcal_date_chooser_init (GcalDateChooser *self) self->no_month_change = FALSE; self->show_month_only = FALSE; self->show_selected_day = TRUE; + self->show_other_months = TRUE; self->date = g_date_time_new_now_local (); g_date_time_get_ymd (self->date, &self->this_year, NULL, NULL); @@ -841,6 +862,24 @@ gcal_date_chooser_get_show_selected_day (GcalDateChooser *self) } void +gcal_date_chooser_set_show_other_months (GcalDateChooser *self, + gboolean setting) +{ + if (self->show_other_months == setting) + return; + + self->show_other_months = setting; + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SHOW_OTHER_MONTHS]); +} + +gboolean +gcal_date_chooser_get_show_other_months (GcalDateChooser *self) +{ + return self->show_other_months; +} + +void gcal_date_chooser_set_date (GcalDateChooser *self, GDateTime *date) { diff --git a/src/gcal-date-chooser.h b/src/gcal-date-chooser.h index dc77cf43..415e7297 100644 --- a/src/gcal-date-chooser.h +++ b/src/gcal-date-chooser.h @@ -82,6 +82,11 @@ gboolean gcal_date_chooser_get_show_selected_day (GcalDateChoose void gcal_date_chooser_set_show_selected_day (GcalDateChooser *self, gboolean setting); +gboolean gcal_date_chooser_get_show_other_months (GcalDateChooser *self); + +void gcal_date_chooser_set_show_other_months (GcalDateChooser *self, + gboolean setting); + G_END_DECLS #endif /* __GCAL_DATE_CHOOSER_H__ */ diff --git a/src/views/gcal-year-view.c b/src/views/gcal-year-view.c index 0aeec1d5..7c2a5970 100644 --- a/src/views/gcal-year-view.c +++ b/src/views/gcal-year-view.c @@ -1974,6 +1974,7 @@ gcal_year_view_init (GcalYearView *self) gtk_widget_set_visible (month, TRUE); gcal_date_chooser_set_show_month_only (GCAL_DATE_CHOOSER (month), TRUE); gcal_date_chooser_set_show_day_names (GCAL_DATE_CHOOSER (month), FALSE); + gcal_date_chooser_set_show_other_months (GCAL_DATE_CHOOSER (month), FALSE); gtk_container_add (GTK_CONTAINER (self->flowbox), month); } |