diff options
Diffstat (limited to 'src/indicator-datetime.c')
-rw-r--r-- | src/indicator-datetime.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/indicator-datetime.c b/src/indicator-datetime.c index 618d00d..46ed0d9 100644 --- a/src/indicator-datetime.c +++ b/src/indicator-datetime.c @@ -85,6 +85,7 @@ struct _IndicatorDatetimePrivate { gboolean custom_show_seconds; gboolean show_week_numbers; + gboolean show_calendar; gint week_start; guint idle_measure; @@ -112,7 +113,8 @@ enum { PROP_SHOW_DAY, PROP_SHOW_DATE, PROP_CUSTOM_TIME_FORMAT, - PROP_SHOW_WEEK_NUMBERS + PROP_SHOW_WEEK_NUMBERS, + PROP_SHOW_CALENDAR }; typedef struct _indicator_item_t indicator_item_t; @@ -132,6 +134,7 @@ struct _indicator_item_t { #define PROP_SHOW_DATE_S "show-date" #define PROP_CUSTOM_TIME_FORMAT_S "custom-time-format" #define PROP_SHOW_WEEK_NUMBERS_S "show-week-numbers" +#define PROP_SHOW_CALENDAR_S "show-calendar" #define INDICATOR_DATETIME_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), INDICATOR_DATETIME_TYPE, IndicatorDatetimePrivate)) @@ -250,6 +253,13 @@ indicator_datetime_class_init (IndicatorDatetimeClass *klass) "Shows the week numbers in the monthly calendar in indicator-datetime's menu.", FALSE, /* default */ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (object_class, + PROP_SHOW_CALENDAR, + g_param_spec_boolean(PROP_SHOW_CALENDAR_S, + "Whether to show the calendar.", + "Shows the monthly calendar in indicator-datetime's menu.", + TRUE, /* default */ + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); return; } @@ -319,6 +329,11 @@ indicator_datetime_init (IndicatorDatetime *self) self, PROP_SHOW_WEEK_NUMBERS_S, G_SETTINGS_BIND_DEFAULT); + g_settings_bind(self->priv->settings, + SETTINGS_SHOW_CALENDAR_S, + self, + PROP_SHOW_CALENDAR_S, + G_SETTINGS_BIND_DEFAULT); } else { g_warning("Unable to get settings for '" SETTINGS_INTERFACE "'"); } @@ -564,6 +579,13 @@ set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec } break; } + case PROP_SHOW_CALENDAR: { + if (g_value_get_boolean(value) != self->priv->show_calendar) { + self->priv->show_calendar = g_value_get_boolean(value); + gtk_widget_set_visible (GTK_WIDGET (self->priv->ido_calendar), self->priv->show_calendar); + } + break; + } default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); return; @@ -625,6 +647,9 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe case PROP_SHOW_WEEK_NUMBERS: g_value_set_boolean(value, self->priv->show_week_numbers); break; + case PROP_SHOW_CALENDAR: + g_value_set_boolean(value, self->priv->show_calendar); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); return; @@ -1254,7 +1279,9 @@ new_calendar_item (DbusmenuMenuitem * newitem, else flags &= ~GTK_CALENDAR_SHOW_WEEK_NUMBERS; ido_calendar_menu_item_set_display_options (self->priv->ido_calendar, flags); - + + gtk_widget_set_visible (GTK_WIDGET (self->priv->ido_calendar), self->priv->show_calendar); + dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, GTK_MENU_ITEM(ido), parent); g_signal_connect_after(ido, "month-changed", G_CALLBACK(month_changed_cb), (gpointer)newitem); return TRUE; |