summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaque Galdino <igaldino@gmail.com>2017-02-21 22:48:30 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2017-03-01 19:21:10 -0300
commit0e2efa043412e77fdcd753bf617561379d424b37 (patch)
tree897baad80b8f0b1ab89d451786eff8834c0bba69
parente543cf32dab3199c2c67fdb529046018cd1f3208 (diff)
downloadgnome-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.c39
-rw-r--r--src/gcal-date-chooser.h5
-rw-r--r--src/views/gcal-year-view.c1
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);
}