aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-03-20 08:32:47 +0800
committerMichael Meeks <michael.meeks@novell.com>2010-04-07 19:12:47 +0800
commit260032a9ff49e78d4081b40e5f7102d2928fc572 (patch)
treebacfca6371a7d1642f817ce1dc7f6b6f5496dc06 /calendar/gui
parentffe2f1e1ee96502cf1d3305e16f82d4063fffedc (diff)
downloadgsoc2013-evolution-260032a9ff49e78d4081b40e5f7102d2928fc572.tar.gz
gsoc2013-evolution-260032a9ff49e78d4081b40e5f7102d2928fc572.tar.zst
gsoc2013-evolution-260032a9ff49e78d4081b40e5f7102d2928fc572.zip
Add extensions to configure calender widgets.
Make ECalendarItem, ECalendarView, ECalModel, EDateEdit, EMeetingStore, and EMeetingTimeSelector extensible and register extensions to automatically bind every instance to the appropriate EShellSettings. Conflicts: calendar/gui/gnome-cal.c modules/calendar/e-cal-shell-content.c
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/dialogs/comp-editor-util.c26
-rw-r--r--calendar/gui/dialogs/comp-editor-util.h6
-rw-r--r--calendar/gui/dialogs/event-editor.c13
-rw-r--r--calendar/gui/dialogs/event-page.c2
-rw-r--r--calendar/gui/dialogs/memo-page.c1
-rw-r--r--calendar/gui/dialogs/recurrence-page.c34
-rw-r--r--calendar/gui/dialogs/schedule-page.c16
-rw-r--r--calendar/gui/dialogs/task-details-page.c1
-rw-r--r--calendar/gui/dialogs/task-editor.c13
-rw-r--r--calendar/gui/dialogs/task-page.c2
-rw-r--r--calendar/gui/e-cal-model-calendar.c8
-rw-r--r--calendar/gui/e-cal-model-calendar.h4
-rw-r--r--calendar/gui/e-cal-model-memos.c8
-rw-r--r--calendar/gui/e-cal-model-memos.h2
-rw-r--r--calendar/gui/e-cal-model-tasks.c30
-rw-r--r--calendar/gui/e-cal-model-tasks.h2
-rw-r--r--calendar/gui/e-cal-model.c81
-rw-r--r--calendar/gui/e-cal-model.h2
-rw-r--r--calendar/gui/e-calendar-view.c7
-rw-r--r--calendar/gui/e-day-view.c48
-rw-r--r--calendar/gui/e-meeting-store.c51
-rw-r--r--calendar/gui/e-meeting-time-sel.c7
-rw-r--r--calendar/gui/e-week-view.c10
-rw-r--r--calendar/gui/gnome-cal.c61
-rw-r--r--calendar/gui/gnome-cal.h5
25 files changed, 51 insertions, 389 deletions
diff --git a/calendar/gui/dialogs/comp-editor-util.c b/calendar/gui/dialogs/comp-editor-util.c
index 271ac5a8cc..cd16b46974 100644
--- a/calendar/gui/dialogs/comp-editor-util.c
+++ b/calendar/gui/dialogs/comp-editor-util.c
@@ -209,7 +209,6 @@ comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label)
/**
* comp_editor_new_date_edit:
- * @shell_settings: an #EShellSettings
* @show_date: Whether to show a date picker in the widget.
* @show_time: Whether to show a time picker in the widget.
* @make_time_insensitive: Whether the time field is made insensitive rather
@@ -221,15 +220,12 @@ comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label)
* Return value: A newly-created #EDateEdit widget.
**/
GtkWidget *
-comp_editor_new_date_edit (EShellSettings *shell_settings,
- gboolean show_date,
+comp_editor_new_date_edit (gboolean show_date,
gboolean show_time,
gboolean make_time_insensitive)
{
EDateEdit *dedit;
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
dedit = E_DATE_EDIT (e_date_edit_new ());
e_date_edit_set_show_date (dedit, show_date);
@@ -240,29 +236,9 @@ comp_editor_new_date_edit (EShellSettings *shell_settings,
e_date_edit_set_make_time_insensitive (dedit, FALSE);
#endif
- comp_editor_bind_date_edit_settings (GTK_WIDGET (dedit), shell_settings);
-
return GTK_WIDGET (dedit);
}
-void
-comp_editor_bind_date_edit_settings (GtkWidget *dateedit, EShellSettings *shell_settings)
-{
- g_return_if_fail (dateedit != NULL);
- g_return_if_fail (E_IS_DATE_EDIT (dateedit));
-
- if (!shell_settings)
- shell_settings = e_shell_get_shell_settings (e_shell_get_default ());
-
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- dateedit, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- dateedit, "week-start-day");
-}
-
/* Returns the current time, for EDateEdit widgets and ECalendar items in the
dialogs.
FIXME: Should probably use the timezone from somewhere in the component
diff --git a/calendar/gui/dialogs/comp-editor-util.h b/calendar/gui/dialogs/comp-editor-util.h
index 78a8bab33f..6eeb8c5410 100644
--- a/calendar/gui/dialogs/comp-editor-util.h
+++ b/calendar/gui/dialogs/comp-editor-util.h
@@ -26,7 +26,6 @@
#define _COMP_EDITOR_UTIL_H_
#include <gtk/gtk.h>
-#include <shell/e-shell-settings.h>
#include "comp-editor-page.h"
#include "../e-meeting-attendee.h"
@@ -35,13 +34,10 @@ void comp_editor_free_dates (CompEditorPageDates *dates);
void comp_editor_date_label (CompEditorPageDates *dates, GtkWidget *label);
-GtkWidget * comp_editor_new_date_edit (EShellSettings *shell_settings,
- gboolean show_date,
+GtkWidget * comp_editor_new_date_edit (gboolean show_date,
gboolean show_time,
gboolean make_time_insensitive);
-void comp_editor_bind_date_edit_settings (GtkWidget *dateedit, EShellSettings *shell_settings);
-
struct tm comp_editor_get_current_time (GtkObject *object, gpointer data);
gchar *comp_editor_strip_categories (const gchar *categories);
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index 23256adff0..1a5f6d67fd 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -363,25 +363,12 @@ static void
event_editor_constructed (GObject *object)
{
EventEditorPrivate *priv;
- EShellSettings *shell_settings;
- EShell *shell;
priv = EVENT_EDITOR_GET_PRIVATE (object);
- shell = comp_editor_get_shell (COMP_EDITOR (object));
- shell_settings = e_shell_get_shell_settings (shell);
-
e_binding_new (
object, "client",
priv->model, "client");
-
- e_binding_new (
- shell_settings, "cal-free-busy-template",
- priv->model, "free-busy-template");
-
- e_binding_new (
- shell_settings, "cal-timezone",
- priv->model, "timezone");
}
static void
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c
index 7d79a2bfb7..a74cb64991 100644
--- a/calendar/gui/dialogs/event-page.c
+++ b/calendar/gui/dialogs/event-page.c
@@ -2219,7 +2219,6 @@ get_widgets (EventPage *epage)
/* Glade's visibility flag doesn't seem to work for custom widgets */
priv->start_time = GW ("start-time");
- comp_editor_bind_date_edit_settings (priv->start_time, NULL);
gtk_widget_show (priv->start_time);
priv->time_hour = GW ("time-hour");
@@ -2228,7 +2227,6 @@ get_widgets (EventPage *epage)
priv->end_time_combo = GW ("end-time-combobox");
priv->end_time = GW ("end-time");
- comp_editor_bind_date_edit_settings (priv->end_time, NULL);
gtk_widget_show_all (priv->time_hour);
gtk_widget_hide (priv->end_time);
diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c
index f5c6a26400..269caba5d6 100644
--- a/calendar/gui/dialogs/memo-page.c
+++ b/calendar/gui/dialogs/memo-page.c
@@ -813,7 +813,6 @@ get_widgets (MemoPage *mpage)
#undef GW
e_util_set_source_combo_box_list (priv->source_selector, "/apps/evolution/memos/sources");
- comp_editor_bind_date_edit_settings (priv->start_date, NULL);
completion = e_category_completion_new ();
gtk_entry_set_completion (GTK_ENTRY (priv->categories), completion);
diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c
index 4d3e0af1f0..578f98929c 100644
--- a/calendar/gui/dialogs/recurrence-page.c
+++ b/calendar/gui/dialogs/recurrence-page.c
@@ -1340,8 +1340,6 @@ static void
make_ending_until_special (RecurrencePage *rpage)
{
RecurrencePagePrivate *priv = rpage->priv;
- EShell *shell;
- EShellSettings *shell_settings;
CompEditor *editor;
CompEditorFlags flags;
EDateEdit *de;
@@ -1353,13 +1351,9 @@ make_ending_until_special (RecurrencePage *rpage)
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
flags = comp_editor_get_flags (editor);
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
-
/* Create the widget */
- priv->ending_date_edit = comp_editor_new_date_edit (
- shell_settings, TRUE, FALSE, FALSE);
+ priv->ending_date_edit = comp_editor_new_date_edit (TRUE, FALSE, FALSE);
de = E_DATE_EDIT (priv->ending_date_edit);
gtk_container_add (GTK_CONTAINER (priv->ending_special),
@@ -2088,14 +2082,10 @@ create_exception_dialog (RecurrencePage *rpage, const gchar *title, GtkWidget **
RecurrencePagePrivate *priv;
GtkWidget *dialog, *toplevel;
CompEditor *editor;
- EShell *shell;
- EShellSettings *shell_settings;
priv = rpage->priv;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
toplevel = gtk_widget_get_toplevel (priv->main);
dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (toplevel),
@@ -2104,7 +2094,7 @@ create_exception_dialog (RecurrencePage *rpage, const gchar *title, GtkWidget **
GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
NULL);
- *date_edit = comp_editor_new_date_edit (shell_settings, TRUE, FALSE, TRUE);
+ *date_edit = comp_editor_new_date_edit (TRUE, FALSE, TRUE);
gtk_widget_show (*date_edit);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), *date_edit, FALSE, TRUE, 6);
@@ -2260,8 +2250,6 @@ static void
init_widgets (RecurrencePage *rpage)
{
RecurrencePagePrivate *priv;
- EShell *shell;
- EShellSettings *shell_settings;
CompEditor *editor;
ECalendar *ecal;
GtkAdjustment *adj;
@@ -2271,22 +2259,12 @@ init_widgets (RecurrencePage *rpage)
priv = rpage->priv;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (rpage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
/* Recurrence preview */
priv->preview_calendar = e_calendar_new ();
ecal = E_CALENDAR (priv->preview_calendar);
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- ecal->calitem, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- ecal->calitem, "week-start-day");
-
g_signal_connect((ecal->calitem), "date_range_changed",
G_CALLBACK (preview_date_range_changed_cb),
rpage);
@@ -2423,12 +2401,6 @@ GtkWidget *make_exdate_date_edit (void);
GtkWidget *
make_exdate_date_edit (void)
{
- EShell *shell;
- EShellSettings *shell_settings;
-
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
-
- return comp_editor_new_date_edit (shell_settings, TRUE, TRUE, FALSE);
+ return comp_editor_new_date_edit (TRUE, TRUE, FALSE);
}
diff --git a/calendar/gui/dialogs/schedule-page.c b/calendar/gui/dialogs/schedule-page.c
index 32b6dffab8..2e13cba1b9 100644
--- a/calendar/gui/dialogs/schedule-page.c
+++ b/calendar/gui/dialogs/schedule-page.c
@@ -380,13 +380,9 @@ SchedulePage *
schedule_page_construct (SchedulePage *spage, EMeetingStore *ems)
{
SchedulePagePrivate *priv = spage->priv;
- EShellSettings *shell_settings;
- EShell *shell;
CompEditor *editor;
editor = comp_editor_page_get_editor (COMP_EDITOR_PAGE (spage));
- shell = comp_editor_get_shell (editor);
- shell_settings = e_shell_get_shell_settings (shell);
priv->builder = gtk_builder_new ();
e_load_ui_builder_definition (priv->builder, "schedule-page.ui");
@@ -412,18 +408,6 @@ schedule_page_construct (SchedulePage *spage, EMeetingStore *ems)
gtk_widget_show (GTK_WIDGET (priv->sel));
gtk_box_pack_start (GTK_BOX (priv->main), GTK_WIDGET (priv->sel), TRUE, TRUE, 6);
- e_binding_new (
- shell_settings, "cal-show-week-numbers",
- priv->sel, "show-week-numbers");
-
- e_binding_new (
- shell_settings, "cal-use-24-hour-format",
- priv->sel, "use-24-hour-format");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- priv->sel, "week-start-day");
-
if (!init_widgets (spage)) {
g_message ("schedule_page_construct(): "
"Could not initialize the widgets!");
diff --git a/calendar/gui/dialogs/task-details-page.c b/calendar/gui/dialogs/task-details-page.c
index 4a5b5b094e..c549633eb5 100644
--- a/calendar/gui/dialogs/task-details-page.c
+++ b/calendar/gui/dialogs/task-details-page.c
@@ -474,7 +474,6 @@ get_widgets (TaskDetailsPage *tdpage)
priv->date_completed_label = GW ("date_completed_label");
priv->completed_date = GW ("completed-date");
- comp_editor_bind_date_edit_settings (priv->completed_date, NULL);
gtk_widget_show (priv->completed_date);
priv->url_label = GW ("url_label");
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
index a3d4baec46..7aaa3c5afe 100644
--- a/calendar/gui/dialogs/task-editor.c
+++ b/calendar/gui/dialogs/task-editor.c
@@ -202,25 +202,12 @@ static void
task_editor_constructed (GObject *object)
{
TaskEditorPrivate *priv;
- EShellSettings *shell_settings;
- EShell *shell;
priv = TASK_EDITOR_GET_PRIVATE (object);
- shell = comp_editor_get_shell (COMP_EDITOR (object));
- shell_settings = e_shell_get_shell_settings (shell);
-
e_binding_new (
object, "client",
priv->model, "client");
-
- e_binding_new (
- shell_settings, "cal-free-busy-template",
- priv->model, "free-busy-template");
-
- e_binding_new (
- shell_settings, "cal-timezone",
- priv->model, "timezone");
}
static void
diff --git a/calendar/gui/dialogs/task-page.c b/calendar/gui/dialogs/task-page.c
index 33413250ad..623260cf46 100644
--- a/calendar/gui/dialogs/task-page.c
+++ b/calendar/gui/dialogs/task-page.c
@@ -1360,10 +1360,8 @@ get_widgets (TaskPage *tpage)
/* Glade's visibility flag doesn't seem to work for custom widgets */
priv->due_date = e_builder_get_widget (priv->builder, "due-date");
- comp_editor_bind_date_edit_settings (priv->due_date, NULL);
gtk_widget_show (priv->due_date);
priv->start_date = e_builder_get_widget (priv->builder, "start-date");
- comp_editor_bind_date_edit_settings (priv->start_date, NULL);
gtk_widget_show (priv->start_date);
priv->timezone = e_builder_get_widget (priv->builder, "timezone");
diff --git a/calendar/gui/e-cal-model-calendar.c b/calendar/gui/e-cal-model-calendar.c
index 6df5588dae..778b72de21 100644
--- a/calendar/gui/e-cal-model-calendar.c
+++ b/calendar/gui/e-cal-model-calendar.c
@@ -525,11 +525,7 @@ ecmc_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
* e_cal_model_calendar_new
*/
ECalModel *
-e_cal_model_calendar_new (EShellSettings *shell_settings)
+e_cal_model_calendar_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_CALENDAR,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_CALENDAR, NULL);
}
diff --git a/calendar/gui/e-cal-model-calendar.h b/calendar/gui/e-cal-model-calendar.h
index f1027032cb..6e3b3fe617 100644
--- a/calendar/gui/e-cal-model-calendar.h
+++ b/calendar/gui/e-cal-model-calendar.h
@@ -71,8 +71,8 @@ struct _ECalModelCalendarClass {
ECalModelClass parent_class;
};
-GType e_cal_model_calendar_get_type (void);
-ECalModel * e_cal_model_calendar_new (EShellSettings *shell_settings);
+GType e_cal_model_calendar_get_type (void);
+ECalModel * e_cal_model_calendar_new (void);
G_END_DECLS
diff --git a/calendar/gui/e-cal-model-memos.c b/calendar/gui/e-cal-model-memos.c
index 41f63700c8..38e55ef71a 100644
--- a/calendar/gui/e-cal-model-memos.c
+++ b/calendar/gui/e-cal-model-memos.c
@@ -261,11 +261,7 @@ ecmm_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
* e_cal_model_memos_new
*/
ECalModel *
-e_cal_model_memos_new (EShellSettings *shell_settings)
+e_cal_model_memos_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_MEMOS,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_MEMOS, NULL);
}
diff --git a/calendar/gui/e-cal-model-memos.h b/calendar/gui/e-cal-model-memos.h
index b58faa539b..3977bbe0cb 100644
--- a/calendar/gui/e-cal-model-memos.h
+++ b/calendar/gui/e-cal-model-memos.h
@@ -71,7 +71,7 @@ struct _ECalModelMemosClass {
};
GType e_cal_model_memos_get_type (void);
-ECalModel * e_cal_model_memos_new (EShellSettings *shell_settings);
+ECalModel * e_cal_model_memos_new (void);
G_END_DECLS
diff --git a/calendar/gui/e-cal-model-tasks.c b/calendar/gui/e-cal-model-tasks.c
index e6fd01e9c9..c69e7452b9 100644
--- a/calendar/gui/e-cal-model-tasks.c
+++ b/calendar/gui/e-cal-model-tasks.c
@@ -133,27 +133,6 @@ cal_model_tasks_finalize (GObject *object)
}
static void
-cal_model_tasks_constructed (GObject *object)
-{
- ECalModel *model;
- EShellSettings *shell_settings;
-
- model = E_CAL_MODEL (object);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-tasks-color-due-today",
- model, "color-due-today");
-
- e_binding_new (
- shell_settings, "cal-tasks-color-overdue",
- model, "color-overdue");
-
- /* Chain up to parent's constructed() method. */
- G_OBJECT_CLASS (e_cal_model_tasks_parent_class)->constructed (object);
-}
-
-static void
e_cal_model_tasks_class_init (ECalModelTasksClass *class)
{
GObjectClass *object_class;
@@ -166,7 +145,6 @@ e_cal_model_tasks_class_init (ECalModelTasksClass *class)
object_class->set_property = cal_model_tasks_set_property;
object_class->get_property = cal_model_tasks_get_property;
object_class->finalize = cal_model_tasks_finalize;
- object_class->constructed = cal_model_tasks_constructed;
table_model_class = E_TABLE_MODEL_CLASS (class);
table_model_class->column_count = ecmt_column_count;
@@ -1157,13 +1135,9 @@ ecmt_fill_component_from_model (ECalModel *model, ECalModelComponent *comp_data,
}
ECalModel *
-e_cal_model_tasks_new (EShellSettings *shell_settings)
+e_cal_model_tasks_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- E_TYPE_CAL_MODEL_TASKS,
- "shell-settings", shell_settings, NULL);
+ return g_object_new (E_TYPE_CAL_MODEL_TASKS, NULL);
}
const gchar *
diff --git a/calendar/gui/e-cal-model-tasks.h b/calendar/gui/e-cal-model-tasks.h
index 056325547d..c0ceaaa2c5 100644
--- a/calendar/gui/e-cal-model-tasks.h
+++ b/calendar/gui/e-cal-model-tasks.h
@@ -79,7 +79,7 @@ struct _ECalModelTasksClass {
};
GType e_cal_model_tasks_get_type (void);
-ECalModel * e_cal_model_tasks_new (EShellSettings *shell_settings);
+ECalModel * e_cal_model_tasks_new (void);
const gchar * e_cal_model_tasks_get_color_due_today
(ECalModelTasks *model);
void e_cal_model_tasks_set_color_due_today
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index 1004d1b2a0..eaa5df68e1 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -35,7 +35,7 @@
#include "e-cal-model.h"
#include "itip-utils.h"
#include "misc.h"
-#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-util.h"
#define E_CAL_MODEL_GET_PRIVATE(obj) \
@@ -54,8 +54,6 @@ typedef struct {
} ECalModelClient;
struct _ECalModelPrivate {
- EShellSettings *shell_settings;
-
/* The list of clients we are managing. Each element is of type ECalModelClient */
GList *clients;
@@ -128,7 +126,6 @@ static void remove_client (ECalModel *model, ECalModelClient *client_data);
enum {
PROP_0,
PROP_DEFAULT_CLIENT,
- PROP_SHELL_SETTINGS,
PROP_TIMEZONE,
PROP_USE_24_HOUR_FORMAT,
PROP_WEEK_START_DAY
@@ -147,17 +144,9 @@ enum {
static gpointer parent_class;
static guint signals[LAST_SIGNAL];
-G_DEFINE_TYPE (ECalModel, e_cal_model, E_TABLE_MODEL_TYPE)
-
-static void
-cal_model_set_shell_settings (ECalModel *cal_model,
- EShellSettings *shell_settings)
-{
- g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings));
- g_return_if_fail (cal_model->priv->shell_settings == NULL);
-
- cal_model->priv->shell_settings = g_object_ref (shell_settings);
-}
+G_DEFINE_TYPE_WITH_CODE (
+ ECalModel, e_cal_model, E_TABLE_MODEL_TYPE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
cal_model_set_property (GObject *object,
@@ -172,12 +161,6 @@ cal_model_set_property (GObject *object,
g_value_get_object (value));
return;
- case PROP_SHELL_SETTINGS:
- cal_model_set_shell_settings (
- E_CAL_MODEL (object),
- g_value_get_object (value));
- return;
-
case PROP_TIMEZONE:
e_cal_model_set_timezone (
E_CAL_MODEL (object),
@@ -214,13 +197,6 @@ cal_model_get_property (GObject *object,
E_CAL_MODEL (object)));
return;
- case PROP_SHELL_SETTINGS:
- g_value_set_object (
- value,
- e_cal_model_get_shell_settings (
- E_CAL_MODEL (object)));
- return;
-
case PROP_TIMEZONE:
g_value_set_pointer (
value,
@@ -253,11 +229,6 @@ cal_model_dispose (GObject *object)
priv = E_CAL_MODEL_GET_PRIVATE (object);
- if (priv->shell_settings != NULL) {
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
- }
-
if (priv->clients) {
while (priv->clients != NULL) {
ECalModelClient *client_data = (ECalModelClient *) priv->clients->data;
@@ -316,28 +287,6 @@ cal_model_finalize (GObject *object)
}
static void
-cal_model_constructed (GObject *object)
-{
- ECalModel *model;
- EShellSettings *shell_settings;
-
- model = E_CAL_MODEL (object);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-timezone",
- model, "timezone");
-
- e_binding_new (
- shell_settings, "cal-use-24-hour-format",
- model, "use-24-hour-format");
-
- e_binding_new (
- shell_settings, "cal-week-start-day",
- model, "week-start-day");
-}
-
-static void
e_cal_model_class_init (ECalModelClass *class)
{
GObjectClass *object_class;
@@ -351,7 +300,6 @@ e_cal_model_class_init (ECalModelClass *class)
object_class->get_property = cal_model_get_property;
object_class->dispose = cal_model_dispose;
object_class->finalize = cal_model_finalize;
- object_class->constructed = cal_model_constructed;
etm_class = E_TABLE_MODEL_CLASS (class);
etm_class->column_count = ecm_column_count;
@@ -381,17 +329,6 @@ e_cal_model_class_init (ECalModelClass *class)
g_object_class_install_property (
object_class,
- PROP_SHELL_SETTINGS,
- g_param_spec_object (
- "shell-settings",
- _("Shell Settings"),
- _("Application-wide settings"),
- E_TYPE_SHELL_SETTINGS,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
PROP_TIMEZONE,
g_param_spec_pointer (
"timezone",
@@ -502,6 +439,8 @@ e_cal_model_init (ECalModel *model)
model->priv->notify_modified = NULL;
model->priv->notify_removed = NULL;
model->priv->notify_lock = g_mutex_new ();
+
+ e_extensible_load_extensions (E_EXTENSIBLE (model));
}
/* ETableModel methods */
@@ -1376,14 +1315,6 @@ ecm_get_color_for_component (ECalModel *model, ECalModelComponent *comp_data)
return assigned_colors[first_empty].color;
}
-EShellSettings *
-e_cal_model_get_shell_settings (ECalModel *model)
-{
- g_return_val_if_fail (E_IS_CAL_MODEL (model), NULL);
-
- return model->priv->shell_settings;
-}
-
icalcomponent_kind
e_cal_model_get_component_kind (ECalModel *model)
{
diff --git a/calendar/gui/e-cal-model.h b/calendar/gui/e-cal-model.h
index 2d30f1877f..ee914eef67 100644
--- a/calendar/gui/e-cal-model.h
+++ b/calendar/gui/e-cal-model.h
@@ -29,7 +29,6 @@
#include <table/e-table-model.h>
#include <libecal/e-cal.h>
#include "e-cell-date-edit-text.h"
-#include <shell/e-shell-settings.h>
/* Standard GObject macros */
#define E_TYPE_CAL_MODEL \
@@ -173,7 +172,6 @@ typedef time_t (*ECalModelDefaultTimeFunc) (ECalModel *model, gpointer user_data
GType e_cal_model_get_type (void);
GType e_cal_model_component_get_type (void);
-EShellSettings *e_cal_model_get_shell_settings (ECalModel *model);
icalcomponent_kind
e_cal_model_get_component_kind (ECalModel *model);
void e_cal_model_set_component_kind (ECalModel *model,
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c
index 42e4c1cd7a..d41ef007a4 100644
--- a/calendar/gui/e-calendar-view.c
+++ b/calendar/gui/e-calendar-view.c
@@ -33,6 +33,7 @@
#include <libedataserver/e-time-utils.h>
#include <e-util/e-util.h>
#include <e-util/e-alert-dialog.h>
+#include <e-util/e-extensible.h>
#include <e-util/e-selection.h>
#include <e-util/e-datetime-format.h>
#include <e-util/e-dialog-utils.h>
@@ -104,7 +105,9 @@ static guint signals[LAST_SIGNAL];
static void calendar_view_selectable_init (ESelectableInterface *interface);
-G_DEFINE_ABSTRACT_TYPE_WITH_CODE (ECalendarView, e_calendar_view, GTK_TYPE_TABLE,
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE (
+ ECalendarView, e_calendar_view, GTK_TYPE_TABLE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
G_IMPLEMENT_INTERFACE (E_TYPE_SELECTABLE, calendar_view_selectable_init));
static void
@@ -873,6 +876,8 @@ e_calendar_view_init (ECalendarView *calendar_view)
target_list = gtk_target_list_new (NULL, 0);
e_target_list_add_calendar_targets (target_list, 0);
calendar_view->priv->paste_target_list = target_list;
+
+ e_extensible_load_extensions (E_EXTENSIBLE (calendar_view));
}
static void
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c
index 3df599f5d7..cbc71b969c 100644
--- a/calendar/gui/e-day-view.c
+++ b/calendar/gui/e-day-view.c
@@ -590,56 +590,12 @@ static void
day_view_constructed (GObject *object)
{
ECalModel *model;
- EDayView *day_view;
- EShellSettings *shell_settings;
-
- day_view = E_DAY_VIEW (object);
- model = e_calendar_view_get_model (E_CALENDAR_VIEW (day_view));
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-day-view-show-week-numbers",
- day_view->week_number_label, "visible");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-show-line",
- day_view, "marcus-bains-show-line");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-day-view-color",
- day_view, "marcus-bains-day-view-color");
-
- e_binding_new (
- shell_settings, "cal-marcus-bains-time-bar-color",
- day_view, "marcus-bains-time-bar-color");
-
- e_binding_new (
- shell_settings, "cal-time-divisions",
- day_view, "mins-per-row");
-
- e_binding_new (
- shell_settings, "cal-work-day-end-hour",
- day_view, "work-day-end-hour");
-
- e_binding_new (
- shell_settings, "cal-work-day-end-minute",
- day_view, "work-day-end-minute");
-
- e_binding_new (
- shell_settings, "cal-work-day-start-hour",
- day_view, "work-day-start-hour");
-
- e_binding_new (
- shell_settings, "cal-work-day-start-minute",
- day_view, "work-day-start-minute");
- e_binding_new (
- shell_settings, "cal-working-days-bitset",
- day_view, "working-days");
+ model = e_calendar_view_get_model (E_CALENDAR_VIEW (object));
g_signal_connect_swapped (
model, "notify::week-start-day",
- G_CALLBACK (day_view_notify_week_start_day_cb), day_view);
+ G_CALLBACK (day_view_notify_week_start_day_cb), object);
}
static void
diff --git a/calendar/gui/e-meeting-store.c b/calendar/gui/e-meeting-store.c
index 8b9f02c5a5..28f171219e 100644
--- a/calendar/gui/e-meeting-store.c
+++ b/calendar/gui/e-meeting-store.c
@@ -31,6 +31,7 @@
#include <libecal/e-cal-util.h>
#include <libecal/e-cal-time-util.h>
#include <libedataserver/e-data-server-util.h>
+#include <e-util/e-extensible.h>
#include "itip-utils.h"
#include "e-meeting-utils.h"
#include "e-meeting-attendee.h"
@@ -87,7 +88,13 @@ enum {
PROP_TIMEZONE
};
-static gpointer parent_class;
+/* Forward Declarations */
+static void ems_tree_model_init (GtkTreeModelIface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (
+ EMeetingStore, e_meeting_store, GTK_TYPE_LIST_STORE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL)
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, ems_tree_model_init))
static icalparameter_cutype
text_to_type (const gchar *type)
@@ -624,15 +631,14 @@ meeting_store_finalize (GObject *object)
g_mutex_free (priv->mutex);
/* Chain up to parent's finalize() method. */
- G_OBJECT_CLASS (parent_class)->finalize (object);
+ G_OBJECT_CLASS (e_meeting_store_parent_class)->finalize (object);
}
static void
-meeting_store_class_init (GObjectClass *class)
+e_meeting_store_class_init (EMeetingStoreClass *class)
{
GObjectClass *object_class;
- parent_class = g_type_class_peek_parent (class);
g_type_class_add_private (class, sizeof (EMeetingStorePrivate));
object_class = G_OBJECT_CLASS (class);
@@ -671,7 +677,7 @@ meeting_store_class_init (GObjectClass *class)
}
static void
-meeting_store_init (EMeetingStore *store)
+e_meeting_store_init (EMeetingStore *store)
{
store->priv = E_MEETING_STORE_GET_PRIVATE (store);
@@ -682,41 +688,8 @@ meeting_store_init (EMeetingStore *store)
store->priv->mutex = g_mutex_new ();
store->priv->num_queries = 0;
-}
-
-GType
-e_meeting_store_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static const GTypeInfo type_info = {
- sizeof (EMeetingStoreClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) meeting_store_class_init,
- (GClassFinalizeFunc) NULL,
- NULL, /* class_data */
- sizeof (EMeetingStore),
- 0, /* n_preallocs */
- (GInstanceInitFunc) meeting_store_init,
- NULL /* value_table */
- };
-
- static const GInterfaceInfo tree_model_info = {
- (GInterfaceInitFunc) ems_tree_model_init,
- NULL,
- NULL
- };
-
- type = g_type_register_static (
- GTK_TYPE_LIST_STORE, "EMeetingStore", &type_info, 0);
-
- g_type_add_interface_static (
- type, GTK_TYPE_TREE_MODEL, &tree_model_info);
- }
- return type;
+ e_extensible_load_extensions (E_EXTENSIBLE (store));
}
GObject *
diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c
index 19a572d6d8..72f531bc0f 100644
--- a/calendar/gui/e-meeting-time-sel.c
+++ b/calendar/gui/e-meeting-time-sel.c
@@ -40,6 +40,7 @@
#include "misc/e-dateedit.h"
#include "e-util/e-binding.h"
+#include "e-util/e-extensible.h"
#include "e-util/e-util.h"
#include "e-meeting-utils.h"
@@ -203,7 +204,9 @@ static void row_deleted_cb (GtkTreeModel *model, GtkTreePath *path, gpointer dat
static void free_busy_template_changed_cb (EMeetingTimeSelector *mts);
-G_DEFINE_TYPE (EMeetingTimeSelector, e_meeting_time_selector, GTK_TYPE_TABLE)
+G_DEFINE_TYPE_WITH_CODE (
+ EMeetingTimeSelector, e_meeting_time_selector, GTK_TYPE_TABLE,
+ G_IMPLEMENT_INTERFACE (E_TYPE_EXTENSIBLE, NULL))
static void
meeting_time_selector_set_property (GObject *object,
@@ -391,6 +394,8 @@ e_meeting_time_selector_init (EMeetingTimeSelector * mts)
mts->fb_refresh_not = 0;
mts->style_change_idle_id = 0;
+
+ e_extensible_load_extensions (E_EXTENSIBLE (mts));
}
void
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index c319520924..23cc8e6654 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -522,19 +522,9 @@ week_view_constructed (GObject *object)
{
ECalModel *model;
ECalendarView *calendar_view;
- EShellSettings *shell_settings;
calendar_view = E_CALENDAR_VIEW (object);
model = e_calendar_view_get_model (calendar_view);
- shell_settings = e_cal_model_get_shell_settings (model);
-
- e_binding_new (
- shell_settings, "cal-compress-weekend",
- object, "compress-weekend");
-
- e_binding_new (
- shell_settings, "cal-show-event-end-times",
- object, "show-event-end-times");
g_signal_connect_swapped (
model, "notify::week-start-day",
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 670512bb43..aca3064531 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -76,8 +76,6 @@ static GHashTable *non_intrusive_error_table = NULL;
/* Private part of the GnomeCalendar structure */
struct _GnomeCalendarPrivate {
- EShellSettings *shell_settings;
-
ECalModel *model;
/*
@@ -329,16 +327,6 @@ gnome_calendar_update_time_range (GnomeCalendar *gcal)
}
static void
-gnome_calendar_set_shell_settings (GnomeCalendar *gcal,
- EShellSettings *shell_settings)
-{
- g_return_if_fail (E_IS_SHELL_SETTINGS (shell_settings));
- g_return_if_fail (gcal->priv->shell_settings == NULL);
-
- gcal->priv->shell_settings = g_object_ref (shell_settings);
-}
-
-static void
gnome_calendar_set_property (GObject *object,
guint property_id,
const GValue *value,
@@ -351,12 +339,6 @@ gnome_calendar_set_property (GObject *object,
g_value_get_object (value));
return;
- case PROP_SHELL_SETTINGS:
- gnome_calendar_set_shell_settings (
- GNOME_CALENDAR (object),
- g_value_get_object (value));
- return;
-
case PROP_VIEW:
gnome_calendar_set_view (
GNOME_CALENDAR (object),
@@ -392,12 +374,6 @@ gnome_calendar_get_property (GObject *object,
GNOME_CALENDAR (object)));
return;
- case PROP_SHELL_SETTINGS:
- g_value_set_object (
- value, gnome_calendar_get_shell_settings (
- GNOME_CALENDAR (object)));
- return;
-
case PROP_VIEW:
g_value_set_int (
value, gnome_calendar_get_view (
@@ -424,15 +400,12 @@ static void
gnome_calendar_constructed (GObject *object)
{
GnomeCalendar *gcal = GNOME_CALENDAR (object);
- EShellSettings *shell_settings;
ECalendarView *calendar_view;
ECalModel *model;
GtkAdjustment *adjustment;
- shell_settings = gnome_calendar_get_shell_settings (gcal);
-
/* Create the model for the views. */
- model = e_cal_model_calendar_new (shell_settings);
+ model = e_cal_model_calendar_new ();
e_cal_model_set_flags (model, E_CAL_MODEL_FLAGS_EXPAND_RECURRENCES);
gcal->priv->model = model;
@@ -545,17 +518,6 @@ gnome_calendar_class_init (GnomeCalendarClass *class)
g_object_class_install_property (
object_class,
- PROP_SHELL_SETTINGS,
- g_param_spec_object (
- "shell-settings",
- _("Shell Settings"),
- _("Application-wide settings"),
- E_TYPE_SHELL_SETTINGS,
- G_PARAM_READWRITE |
- G_PARAM_CONSTRUCT_ONLY));
-
- g_object_class_install_property (
- object_class,
PROP_VIEW,
g_param_spec_int (
"view",
@@ -1492,11 +1454,6 @@ gnome_calendar_do_dispose (GObject *object)
priv = gcal->priv;
- if (priv->shell_settings != NULL) {
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
- }
-
if (priv->model != NULL) {
g_signal_handlers_disconnect_by_func (
priv->model, view_progress_cb, gcal);
@@ -1906,21 +1863,9 @@ non_intrusive_error_remove(GtkWidget *w, gpointer data)
}
GtkWidget *
-gnome_calendar_new (EShellSettings *shell_settings)
+gnome_calendar_new (void)
{
- g_return_val_if_fail (E_IS_SHELL_SETTINGS (shell_settings), NULL);
-
- return g_object_new (
- GNOME_TYPE_CALENDAR,
- "shell-settings", shell_settings, NULL);
-}
-
-EShellSettings *
-gnome_calendar_get_shell_settings (GnomeCalendar *gcal)
-{
- g_return_val_if_fail (GNOME_IS_CALENDAR (gcal), NULL);
-
- return gcal->priv->shell_settings;
+ return g_object_new (GNOME_TYPE_CALENDAR, NULL);
}
ECalendar *
diff --git a/calendar/gui/gnome-cal.h b/calendar/gui/gnome-cal.h
index 4fa36b1446..52047a0e19 100644
--- a/calendar/gui/gnome-cal.h
+++ b/calendar/gui/gnome-cal.h
@@ -31,7 +31,6 @@
#include <gtk/gtk.h>
#include <misc/e-calendar.h>
#include <libecal/e-cal.h>
-#include <shell/e-shell-settings.h>
#include "e-cal-model.h"
@@ -113,10 +112,8 @@ struct _GnomeCalendarClass {
};
GType gnome_calendar_get_type (void);
-GtkWidget * gnome_calendar_new (EShellSettings *shell_settings);
+GtkWidget * gnome_calendar_new (void);
void gnome_calendar_dispose (GnomeCalendar *gcal);
-EShellSettings *gnome_calendar_get_shell_settings
- (GnomeCalendar *gcal);
ECalendar * gnome_calendar_get_date_navigator
(GnomeCalendar *gcal);
void gnome_calendar_set_date_navigator