aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-cal-model.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-08-19 00:59:50 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-08-19 00:59:50 +0800
commit4ffe29bdee5468655dadc306f2761e2ca5469c38 (patch)
tree28f5abf6ec354844815368c96125d1f5189ec656 /calendar/gui/e-cal-model.c
parent947e43871f38e1eb87f7556cec7992acb231e842 (diff)
downloadgsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar.gz
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar.bz2
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar.lz
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar.xz
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.tar.zst
gsoc2013-evolution-4ffe29bdee5468655dadc306f2761e2ca5469c38.zip
Centralize week-start-day tracking in calendar views.
Track the value in ECalModel instead of in GnomeCalendar, EDayView and EWeekView.
Diffstat (limited to 'calendar/gui/e-cal-model.c')
-rw-r--r--calendar/gui/e-cal-model.c98
1 files changed, 61 insertions, 37 deletions
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 377b7a6761..133f3a9234 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -88,6 +88,9 @@ struct _ECalModelPrivate {
/* Whether we display dates in 24-hour format. */
gboolean use_24_hour_format;
+ /* First day of the week: 0 (Monday) to 6 (Sunday) */
+ gint week_start_day;
+
/* callback, to retrieve start time for newly added rows by click-to-add */
ECalModelDefaultTimeFunc get_default_time;
gpointer get_default_time_user_data;
@@ -126,7 +129,8 @@ enum {
PROP_0,
PROP_SHELL_SETTINGS,
PROP_TIMEZONE,
- PROP_USE_24_HOUR_FORMAT
+ PROP_USE_24_HOUR_FORMAT,
+ PROP_WEEK_START_DAY
};
enum {
@@ -177,6 +181,12 @@ cal_model_set_property (GObject *object,
E_CAL_MODEL (object),
g_value_get_boolean (value));
return;
+
+ case PROP_WEEK_START_DAY:
+ e_cal_model_set_week_start_day (
+ E_CAL_MODEL (object),
+ g_value_get_int (value));
+ return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -209,6 +219,13 @@ cal_model_get_property (GObject *object,
e_cal_model_get_use_24_hour_format (
E_CAL_MODEL (object)));
return;
+
+ case PROP_WEEK_START_DAY:
+ g_value_set_int (
+ value,
+ e_cal_model_get_week_start_day (
+ E_CAL_MODEL (object)));
+ return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -293,12 +310,16 @@ cal_model_constructed (GObject *object)
shell_settings = e_cal_model_get_shell_settings (model);
e_binding_new (
+ G_OBJECT (shell_settings), "cal-timezone",
+ G_OBJECT (model), "timezone");
+
+ e_binding_new (
G_OBJECT (shell_settings), "cal-use-24-hour-format",
G_OBJECT (model), "use-24-hour-format");
e_binding_new (
- G_OBJECT (shell_settings), "cal-timezone",
- G_OBJECT (model), "timezone");
+ G_OBJECT (shell_settings), "cal-week-start-day",
+ G_OBJECT (model), "week-start-day");
}
static void
@@ -363,6 +384,18 @@ e_cal_model_class_init (ECalModelClass *class)
TRUE,
G_PARAM_READWRITE));
+ g_object_class_install_property (
+ object_class,
+ PROP_WEEK_START_DAY,
+ g_param_spec_int (
+ "week-start-day",
+ "Week Start Day",
+ NULL,
+ 0, /* Monday */
+ 6, /* Sunday */
+ 0,
+ G_PARAM_READWRITE));
+
signals[TIME_RANGE_CHANGED] =
g_signal_new ("time_range_changed",
G_TYPE_FROM_CLASS (class),
@@ -1279,9 +1312,6 @@ e_cal_model_get_shell_settings (ECalModel *model)
return model->priv->shell_settings;
}
-/**
- * e_cal_model_get_component_kind
- */
icalcomponent_kind
e_cal_model_get_component_kind (ECalModel *model)
{
@@ -1293,9 +1323,6 @@ e_cal_model_get_component_kind (ECalModel *model)
return priv->kind;
}
-/**
- * e_cal_model_set_component_kind
- */
void
e_cal_model_set_component_kind (ECalModel *model, icalcomponent_kind kind)
{
@@ -1307,9 +1334,6 @@ e_cal_model_set_component_kind (ECalModel *model, icalcomponent_kind kind)
priv->kind = kind;
}
-/**
- * e_cal_model_get_flags
- */
ECalModelFlags
e_cal_model_get_flags (ECalModel *model)
{
@@ -1318,9 +1342,6 @@ e_cal_model_get_flags (ECalModel *model)
return model->priv->flags;
}
-/**
- * e_cal_model_set_flags
- */
void
e_cal_model_set_flags (ECalModel *model, ECalModelFlags flags)
{
@@ -1329,9 +1350,6 @@ e_cal_model_set_flags (ECalModel *model, ECalModelFlags flags)
model->priv->flags = flags;
}
-/**
- * e_cal_model_get_timezone
- */
icaltimezone *
e_cal_model_get_timezone (ECalModel *model)
{
@@ -1340,9 +1358,6 @@ e_cal_model_get_timezone (ECalModel *model)
return model->priv->zone;
}
-/**
- * e_cal_model_set_timezone
- */
void
e_cal_model_set_timezone (ECalModel *model,
icaltimezone *zone)
@@ -1362,9 +1377,6 @@ e_cal_model_set_timezone (ECalModel *model,
g_object_notify (G_OBJECT (model), "timezone");
}
-/**
- * e_cal_model_set_default_category
- */
void
e_cal_model_set_default_category (ECalModel *model,
const gchar *default_category)
@@ -1375,9 +1387,6 @@ e_cal_model_set_default_category (ECalModel *model,
model->priv->default_category = g_strdup (default_category);
}
-/**
- * e_cal_model_get_use_24_hour_format
- */
gboolean
e_cal_model_get_use_24_hour_format (ECalModel *model)
{
@@ -1386,9 +1395,6 @@ e_cal_model_get_use_24_hour_format (ECalModel *model)
return model->priv->use_24_hour_format;
}
-/**
- * e_cal_model_set_use_24_hour_format
- */
void
e_cal_model_set_use_24_hour_format (ECalModel *model,
gboolean use_24_hour_format)
@@ -1407,9 +1413,30 @@ e_cal_model_set_use_24_hour_format (ECalModel *model,
g_object_notify (G_OBJECT (model), "use-24-hour-format");
}
-/**
- * e_cal_model_get_default_client
- */
+gint
+e_cal_model_get_week_start_day (ECalModel *model)
+{
+ g_return_val_if_fail (E_IS_CAL_MODEL (model), 0);
+
+ return model->priv->week_start_day;
+}
+
+void
+e_cal_model_set_week_start_day (ECalModel *model,
+ gint week_start_day)
+{
+ g_return_if_fail (E_IS_CAL_MODEL (model));
+ g_return_if_fail (week_start_day >= 0);
+ g_return_if_fail (week_start_day < 7);
+
+ if (model->priv->week_start_day == week_start_day)
+ return;
+
+ model->priv->week_start_day = week_start_day;
+
+ g_object_notify (G_OBJECT (model), "week-start-day");
+}
+
ECal *
e_cal_model_get_default_client (ECalModel *model)
{
@@ -1465,9 +1492,6 @@ e_cal_model_set_default_client (ECalModel *model, ECal *client)
priv->default_client = client_data->client;
}
-/**
- * e_cal_model_get_client_list
- */
GList *
e_cal_model_get_client_list (ECalModel *model)
{
@@ -1485,7 +1509,7 @@ e_cal_model_get_client_list (ECalModel *model)
}
/**
- * e_cal_model_get_client_for_uri
+ * e_cal_model_get_client_for_uri:
* @model: A calendar model.
* @uri: Uri for the client to get.
*/