diff options
Diffstat (limited to 'calendar/gui')
36 files changed, 551 insertions, 804 deletions
diff --git a/calendar/gui/alarm-notify/alarm-queue.c b/calendar/gui/alarm-notify/alarm-queue.c index 9662c6231e..ae6eb3e172 100644 --- a/calendar/gui/alarm-notify/alarm-queue.c +++ b/calendar/gui/alarm-notify/alarm-queue.c @@ -183,6 +183,25 @@ message_push (Message *msg) msg->func (msg); } +/* + * use a static ring-buffer so we can call this twice + * in a printf without getting nonsense results. + */ +static const char * +e_ctime (const time_t *timep) +{ + static char *buffer[4] = { 0, }; + static int next = 0; + const char *ret; + + g_free (buffer[next]); + ret = buffer[next++] = g_strdup (ctime (timep)); + if (next >= G_N_ELEMENTS (buffer)) + next = 0; + + return ret; +} + /* Queues an alarm trigger for midnight so that we can load the next day's worth * of alarms. */ @@ -199,7 +218,7 @@ queue_midnight_refresh (void) zone = config_data_get_timezone (); midnight = time_day_end_with_zone (time (NULL), zone); - d(printf("%s:%d (queue_midnight_refresh) - Refresh at %s \n",__FILE__, __LINE__, ctime(&midnight))); + d(printf("%s:%d (queue_midnight_refresh) - Refresh at %s \n",__FILE__, __LINE__, e_ctime(&midnight))); midnight_refresh_id = alarm_add (midnight, midnight_refresh_cb, NULL, NULL); if (!midnight_refresh_id) { @@ -471,7 +490,7 @@ add_component_alarms (ClientAlarms *ca, ECalComponentAlarms *alarms) alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, NULL); if (!alarm_id) { - d(printf("%s:%d (add_component_alarms) - Could not schedule a trigger for %s. Discarding \n",__FILE__, __LINE__, ctime(&(instance->trigger)))); + d(printf("%s:%d (add_component_alarms) - Could not schedule a trigger for %s. Discarding \n",__FILE__, __LINE__, e_ctime(&(instance->trigger)))); continue; } @@ -482,7 +501,7 @@ add_component_alarms (ClientAlarms *ca, ECalComponentAlarms *alarms) qa->snooze = FALSE; cqa->queued_alarms = g_slist_prepend (cqa->queued_alarms, qa); - d(printf("%s:%d (add_component_alarms) - Adding alarm %p %p at %s %s\n",__FILE__, __LINE__, qa, alarm_id, ctime (&(instance->trigger)), ctime(&tnow))); + d(printf("%s:%d (add_component_alarms) - Adding alarm %p %p at %s %s\n",__FILE__, __LINE__, qa, alarm_id, ctime (&(instance->trigger)), e_ctime(&tnow))); } id = e_cal_component_get_id (alarms->comp); @@ -571,7 +590,8 @@ load_alarms_for_today (ClientAlarms *ca) from = MAX (config_data_get_last_notification_time (ca->client) + 1, day_start); day_end = time_day_end_with_zone (now, zone); - d(printf("%s:%d (load_alarms_for_today) - From %s to %s\n",__FILE__, __LINE__, ctime (&from), ctime(&day_end))); + d(printf("%s:%d (load_alarms_for_today) - From %s to %s\n",__FILE__, __LINE__, + g_strdup (ctime (&from)), g_strdup (e_ctime(&day_end)))); load_alarms (ca, from, day_end); } @@ -707,7 +727,7 @@ query_objects_changed_async (struct _query_msg *msg) day_end = time_day_end_with_zone (time (NULL), zone); - d(printf("%s:%d (query_objects_changed_async) - Querying for object between %s to %s\n",__FILE__, __LINE__, ctime(&from), ctime(&day_end))); + d(printf("%s:%d (query_objects_changed_async) - Querying for object between %s to %s\n",__FILE__, __LINE__, e_ctime(&from), e_ctime(&day_end))); for (l = objects; l != NULL; l = l->next) { ECalComponentId *id; @@ -771,7 +791,7 @@ query_objects_changed_async (struct _query_msg *msg) alarm_id = alarm_add (instance->trigger, alarm_trigger_cb, cqa, NULL); if (!alarm_id) { - d(printf("%s:%d (query_objects_changed_async) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, ctime(&(instance->trigger)))); + d(printf("%s:%d (query_objects_changed_async) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, e_ctime(&(instance->trigger)))); continue; } @@ -869,14 +889,14 @@ create_snooze (CompQueuedAlarms *cqa, gpointer alarm_id, gint snooze_mins) new_id = alarm_add (t, alarm_trigger_cb, cqa, NULL); if (!new_id) { - d(printf("%s:%d (create_snooze) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, ctime(&t))); + d(printf("%s:%d (create_snooze) -Unable to schedule trigger for %s \n",__FILE__, __LINE__, e_ctime(&t))); return; } orig_qa->instance->trigger = t; orig_qa->alarm_id = new_id; orig_qa->snooze = TRUE; - d(printf("%s:%d (create_snooze) - Adding a alarm at %s\n",__FILE__, __LINE__, ctime(&t))); + d(printf("%s:%d (create_snooze) - Adding a alarm at %s\n",__FILE__, __LINE__, e_ctime(&t))); } /* Launches a component editor for a component */ @@ -1189,7 +1209,7 @@ notify_dialog_cb (AlarmNotifyResult result, gint snooze_mins, gpointer data) GtkTreeIter iter; GtkTreeModel *model = NULL; - /* We can` also use tray_data->iter */ + /* We can also use tray_data->iter */ if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_list_store_remove (GTK_LIST_STORE (model), &iter); if (!gtk_tree_model_get_iter_first (model, &iter)) { @@ -1833,7 +1853,7 @@ alarm_queue_init (gpointer data) if (config_data_get_last_notification_time (NULL) == -1) { time_t tmval = time (NULL); - d(printf("%s:%d (alarm_queue_init) - Setting last notification time to %s\n",__FILE__, __LINE__, ctime(&tmval))); + d(printf("%s:%d (alarm_queue_init) - Setting last notification time to %s\n",__FILE__, __LINE__, e_ctime(&tmval))); config_data_set_last_notification_time (NULL, tmval); } @@ -2139,7 +2159,7 @@ update_cqa (CompQueuedAlarms *cqa, ECalComponent *newcomp) from = time_day_begin_with_zone (time (NULL), zone); to = time_day_end_with_zone (time (NULL), zone); - d(printf("%s:%d (update_cqa) - Generating alarms between %s and %s\n",__FILE__, __LINE__, ctime(&from), ctime(&to))); + d(printf("%s:%d (update_cqa) - Generating alarms between %s and %s\n",__FILE__, __LINE__, e_ctime(&from), e_ctime(&to))); alarms = e_cal_util_generate_alarms_for_comp (newcomp, from, to, omit, e_cal_resolve_tzid_cb, cqa->parent_client->client, zone); diff --git a/calendar/gui/alarm-notify/alarm.c b/calendar/gui/alarm-notify/alarm.c index 14f66a68fb..a4be16bd69 100644 --- a/calendar/gui/alarm-notify/alarm.c +++ b/calendar/gui/alarm-notify/alarm.c @@ -152,7 +152,8 @@ setup_timeout (void) now = time (NULL); /* Add the time out */ - d(g_message ("Setting timeout for %d %lu %lu", diff, ar->trigger, now)); + d(g_message ("Setting timeout for %d.%2d (from now) %lu %lu", + diff / 60, diff % 60, ar->trigger, now)); d(g_message (" %s", ctime (&ar->trigger))); d(g_message (" %s", ctime (&now))); timeout_id = g_timeout_add_seconds (diff, alarm_ready_cb, NULL); diff --git a/calendar/gui/apps_evolution_calendar.schemas.in b/calendar/gui/apps_evolution_calendar.schemas.in index 38d5525b24..ea33ddc1ca 100644 --- a/calendar/gui/apps_evolution_calendar.schemas.in +++ b/calendar/gui/apps_evolution_calendar.schemas.in @@ -284,7 +284,7 @@ <applyto>/apps/evolution/calendar/display/date_navigator_pane_position</applyto> <owner>evolution-calendar</owner> <type>int</type> - <default>150</default> + <default>200</default> <locale name="C"> <short>Month view vertical pane position </short> <long>Position of the vertical pane, between the calendar lists and the date navigator calendar.</long> @@ -666,14 +666,14 @@ </schema> <schema> - <key>/schemas/apps/evolution/calendar/display/day_view_show_week_number</key> - <applyto>/apps/evolution/calendar/display/day_view_show_week_number</applyto> + <key>/schemas/apps/evolution/calendar/display/show_week_numbers</key> + <applyto>/apps/evolution/calendar/display/show_week_numbers</applyto> <owner>evolution-calendar</owner> <type>bool</type> <default>false</default> <locale name="C"> - <short>Show week number in Day and Work Week View</short> - <long>Whether to show week number in the Day and Work Week View.</long> + <short>Show week numbers in Day View, Work Week View, and Date Navigator</short> + <long>Whether to show week numbers in various places in the Calendar.</long> </locale> </schema> @@ -682,27 +682,13 @@ <applyto>/apps/evolution/calendar/display/month_scroll_by_week</applyto> <owner>evolution-calendar</owner> <type>bool</type> - <default>false</default> + <default>true</default> <locale name="C"> <short>Scroll Month View by a week</short> <long>Whether to scroll a Month View by a week, not by a month.</long> </locale> </schema> - <!-- Date navigator --> - - <schema> - <key>/schemas/apps/evolution/calendar/date_navigator/show_week_numbers</key> - <applyto>/apps/evolution/calendar/date_navigator/show_week_numbers</applyto> - <owner>evolution-calendar</owner> - <type>bool</type> - <default>false</default> - <locale name="C"> - <short>Show week numbers in date navigator</short> - <long>Whether to show week numbers in the date navigator.</long> - </locale> - </schema> - <!-- Alarm notification --> <schema> diff --git a/calendar/gui/calendar-config-keys.h b/calendar/gui/calendar-config-keys.h index 9afa8dc7e4..568e211acf 100644 --- a/calendar/gui/calendar-config-keys.h +++ b/calendar/gui/calendar-config-keys.h @@ -53,14 +53,11 @@ G_BEGIN_DECLS #define CALENDAR_CONFIG_COMPRESS_WEEKEND CALENDAR_CONFIG_PREFIX "/display/compress_weekend" #define CALENDAR_CONFIG_SHOW_EVENT_END CALENDAR_CONFIG_PREFIX "/display/show_event_end" #define CALENDAR_CONFIG_WORKING_DAYS CALENDAR_CONFIG_PREFIX "/display/working_days" -#define CALENDAR_CONFIG_DV_WEEK_NUMBER CALENDAR_CONFIG_PREFIX "/display/day_view_show_week_number" +#define CALENDAR_CONFIG_SHOW_WEEK_NUMBERS CALENDAR_CONFIG_PREFIX "/display/show_week_numbers" #define CALENDAR_CONFIG_DAY_SECOND_ZONE CALENDAR_CONFIG_PREFIX "/display/day_second_zone" #define CALENDAR_CONFIG_DAY_SECOND_ZONES_LIST CALENDAR_CONFIG_PREFIX "/display/day_second_zones" #define CALENDAR_CONFIG_DAY_SECOND_ZONES_MAX CALENDAR_CONFIG_PREFIX "/display/day_second_zones_max" -/* Date navigator settings */ -#define CALENDAR_CONFIG_DN_SHOW_WEEK_NUMBERS CALENDAR_CONFIG_PREFIX "/date_navigator/show_week_numbers" - /* Task display settings */ #define CALENDAR_CONFIG_TASKS_SELECTED_TASKS CALENDAR_CONFIG_PREFIX "/tasks/selected_tasks" #define CALENDAR_CONFIG_PRIMARY_TASKS CALENDAR_CONFIG_PREFIX "/tasks/primary_tasks" diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c index 5baf22306c..21675b4a0d 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.c +++ b/calendar/gui/dialogs/cal-prefs-dialog.c @@ -36,6 +36,7 @@ #include "e-util/e-datetime-format.h" #include "e-util/e-dialog-widgets.h" #include "e-util/e-util-private.h" +#include "shell/e-shell-utils.h" #include <glib/gi18n.h> #include <string.h> @@ -734,16 +735,11 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs, shell_settings, "cal-compress-weekend", widget, "active"); - widget = e_builder_get_widget (prefs->builder, "dnav_show_week_no"); + widget = e_builder_get_widget (prefs->builder, "show_week_numbers"); e_mutual_binding_new ( shell_settings, "cal-show-week-numbers", widget, "active"); - widget = e_builder_get_widget (prefs->builder, "dview_show_week_no"); - e_mutual_binding_new ( - shell_settings, "cal-day-view-show-week-numbers", - widget, "active"); - prefs->month_scroll_by_week = e_builder_get_widget (prefs->builder, "month_scroll_by_week"); widget = e_builder_get_widget (prefs->builder, "tasks_due_today_color"); @@ -775,16 +771,42 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs, e_mutual_binding_new ( shell_settings, "cal-free-busy-template", widget, "text"); - target = e_cal_config_target_new_prefs (ec, prefs->gconf); - e_config_set_target ((EConfig *)ec, (EConfigTarget *) target); - toplevel = e_config_create_widget ((EConfig *)ec); - gtk_container_add (GTK_CONTAINER (prefs), toplevel); /* date/time format */ table = e_builder_get_widget (prefs->builder, "datetime_format_table"); e_datetime_format_add_setup_widget (table, 0, "calendar", "table", DTFormatKindDateTime, _("Time and date:")); e_datetime_format_add_setup_widget (table, 1, "calendar", "table", DTFormatKindDate, _("Date only:")); + /* Hide senseless preferences when running in Express mode */ + e_shell_hide_widgets_for_express_mode (shell, prefs->builder, + "label_second_zone", + "hbox_second_zone", + "timezone", + "timezone_label", + "hbox_use_system_timezone", + "hbox_time_divisions", + "show_end_times", + "month_scroll_by_week", + NULL); + + /* HACK: GTK+ 2.18 and 2.20 has a GtkTable which includes row/column spacing even for empty rows/columns. + * When Evo runs in Express mode, we hide all the rows in the Time section of the calendar's General + * preferences page. However, due to that behavior in GTK+, we get a lot of extra spacing in that + * section. Since we know that in Express mode we only leave a single row visible, we'll make the + * table's row spacing equal to 0 in that case. + */ + if (e_shell_get_express_mode (shell)) { + widget = e_builder_get_widget (prefs->builder, "time"); + gtk_table_set_row_spacings (GTK_TABLE (widget), 0); + } + + /* Hook up and add the toplevel widget */ + + target = e_cal_config_target_new_prefs (ec, prefs->gconf); + e_config_set_target ((EConfig *)ec, (EConfigTarget *) target); + toplevel = e_config_create_widget ((EConfig *)ec); + gtk_container_add (GTK_CONTAINER (prefs), toplevel); + show_config (prefs); /* FIXME: weakref? */ setup_changes (prefs); diff --git a/calendar/gui/dialogs/cal-prefs-dialog.h b/calendar/gui/dialogs/cal-prefs-dialog.h index 14011d8403..1ae585a0e8 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.h +++ b/calendar/gui/dialogs/cal-prefs-dialog.h @@ -79,8 +79,6 @@ struct _CalendarPrefsDialog { GtkWidget *time_divisions; GtkWidget *show_end_times; GtkWidget *compress_weekend; - GtkWidget *dnav_show_week_no; - GtkWidget *dview_show_week_no; GtkWidget *month_scroll_by_week; GtkWidget *tasks_hide_completed; GtkWidget *tasks_hide_completed_interval; diff --git a/calendar/gui/dialogs/cal-prefs-dialog.ui b/calendar/gui/dialogs/cal-prefs-dialog.ui index d3478a2590..b94803fc43 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.ui +++ b/calendar/gui/dialogs/cal-prefs-dialog.ui @@ -1,31 +1,27 @@ <?xml version="1.0"?> <interface> + <requires lib="gtk+" version="2.16"/> + <!-- interface-requires evolution 0.0 --> + <!-- interface-naming-policy toplevel-contextual --> <object class="GtkAdjustment" id="adjustment1"> <property name="upper">9999</property> - <property name="lower">0</property> - <property name="page_increment">10</property> <property name="step_increment">1</property> - <property name="page_size">0</property> - <property name="value">0</property> + <property name="page_increment">10</property> </object> <object class="GtkAdjustment" id="adjustment2"> <property name="upper">9999</property> - <property name="lower">0</property> - <property name="page_increment">10</property> <property name="step_increment">1</property> - <property name="page_size">0</property> - <property name="value">0</property> + <property name="page_increment">10</property> </object> <object class="GtkAdjustment" id="adjustment3"> + <property name="value">1</property> <property name="upper">9999</property> - <property name="lower">0</property> - <property name="page_increment">10</property> <property name="step_increment">1</property> - <property name="page_size">0</property> - <property name="value">1</property> + <property name="page_increment">10</property> </object> <object class="GtkListStore" id="model1"> <columns> + <!-- column-name gchararray --> <column type="gchararray"/> </columns> <data> @@ -54,6 +50,7 @@ </object> <object class="GtkListStore" id="model2"> <columns> + <!-- column-name gchararray --> <column type="gchararray"/> </columns> <data> @@ -70,6 +67,7 @@ </object> <object class="GtkListStore" id="model3"> <columns> + <!-- column-name gchararray --> <column type="gchararray"/> </columns> <data> @@ -86,6 +84,7 @@ </object> <object class="GtkListStore" id="model4"> <columns> + <!-- column-name gchararray --> <column type="gchararray"/> </columns> <data> @@ -108,6 +107,7 @@ </object> <object class="GtkListStore" id="model5"> <columns> + <!-- column-name gchararray --> <column type="gchararray"/> </columns> <data> @@ -122,8 +122,6 @@ </row> </data> </object> - <!-- interface-requires gtk+ 2.16 --> - <!-- interface-naming-policy toplevel-contextual --> <object class="GtkNotebook" id="toplevel-notebook"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -164,12 +162,12 @@ <child> <object class="GtkTable" id="time"> <property name="visible">True</property> - <property name="n_rows">5</property> + <property name="n_rows">4</property> <property name="n_columns">2</property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> <child> - <object class="GtkLabel" id="label63"> + <object class="GtkLabel" id="label_second_zone"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Se_cond zone:</property> @@ -177,14 +175,14 @@ <property name="mnemonic_widget">day_second_zone</property> </object> <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkHBox" id="hbox25"> + <object class="GtkHBox" id="hbox_second_zone"> <property name="visible">True</property> <child> <object class="GtkButton" id="day_second_zone"> @@ -214,32 +212,48 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <object class="GtkLabel" id="label11"> + <object class="ETimezoneEntry" id="timezone"> + <property name="visible">True</property> + <accessibility> + <relation type="labelled-by" target="timezone_label"/> + </accessibility> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="timezone_label"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Time format:</property> + <property name="label" translatable="yes">Time _zone:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">timezone</property> </object> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkHBox" id="hbox_use_system_timezone"> <property name="visible">True</property> - <property name="spacing">6</property> <child> - <object class="GtkRadioButton" id="use_12_hour"> - <property name="label" translatable="yes">_12 hour (AM/PM)</property> + <object class="GtkCheckButton" id="use-system-tz-check"> + <property name="label" translatable="yes">Use s_ystem time zone</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> @@ -248,19 +262,14 @@ </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> <property name="position">0</property> </packing> </child> <child> - <object class="GtkRadioButton" id="use_24_hour"> - <property name="label" translatable="yes">_24 hour</property> + <object class="GtkLabel" id="system-tz-label"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - <property name="group">use_12_hour</property> + <property name="xpad">5</property> + <property name="label">(system/tz)</property> </object> <packing> <property name="expand">False</property> @@ -272,62 +281,51 @@ <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <object class="ETimezoneEntry" id="timezone"> - <property name="visible">True</property> - <accessibility> - <relation target="timezone_label" type="labelled-by"/> - </accessibility> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> + <property name="x_options">GTK_FILL</property> </packing> </child> <child> - <object class="GtkLabel" id="timezone_label"> + <object class="GtkLabel" id="label_time_format"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Time _zone:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">timezone</property> + <property name="label" translatable="yes">Time format:</property> </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkHBox" id="hbox26"> + <object class="GtkHBox" id="hbox_time_format"> <property name="visible">True</property> + <property name="spacing">6</property> <child> - <object class="GtkCheckButton" id="use-system-tz-check"> - <property name="label" translatable="yes">Use s_ystem time zone</property> + <object class="GtkRadioButton" id="use_12_hour"> + <property name="label" translatable="yes">_12 hour (AM/PM)</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> + <property name="active">True</property> <property name="draw_indicator">True</property> </object> <packing> <property name="expand">False</property> + <property name="fill">False</property> <property name="position">0</property> </packing> </child> <child> - <object class="GtkLabel" id="system-tz-label"> + <object class="GtkRadioButton" id="use_24_hour"> + <property name="label" translatable="yes">_24 hour</property> <property name="visible">True</property> - <property name="xpad">5</property> - <property name="label">(system/tz)</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="draw_indicator">True</property> + <property name="group">use_12_hour</property> </object> <packing> <property name="expand">False</property> @@ -340,14 +338,12 @@ <property name="left_attach">1</property> <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> <placeholder/> </child> - <child> - <placeholder/> - </child> </object> <packing> <property name="position">1</property> @@ -391,7 +387,7 @@ <child> <object class="GtkTable" id="workWeek"> <property name="visible">True</property> - <property name="n_rows">4</property> + <property name="n_rows">3</property> <property name="n_columns">2</property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> @@ -399,13 +395,13 @@ <object class="GtkLabel" id="label12"> <property name="visible">True</property> <property name="xalign">0</property> - <property comments="A weekday like "Monday" follows" name="label" translatable="yes">Wee_k starts on:</property> + <property name="label" translatable="yes" comments="A weekday like "Monday" follows">Wee_k starts on:</property> <property name="use_underline">True</property> <property name="mnemonic_widget">week_start_day</property> </object> <packing> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="y_options"></property> </packing> </child> <child> @@ -418,64 +414,21 @@ <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="y_options"></property> </packing> </child> <child> - <object class="GtkLabel" id="label14"> + <object class="GtkLabel" id="day_start_label"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">_Day begins:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">start_of_day</property> </object> <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"/> - </packing> - </child> - <child> - <object class="GtkLabel" id="label15"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Day _ends:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">end_of_day</property> - </object> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> - </packing> - </child> - <child> - <object class="EDateEdit" id="start_of_day"> - <property name="show-date">False</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <object class="EDateEdit" id="end_of_day"> - <property name="show-date">False</property> - <property name="visible">True</property> - </object> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> @@ -484,17 +437,14 @@ <property name="spacing">6</property> <child> <object class="GtkCheckButton" id="mon_button"> - <property comments="Monday" name="label" translatable="yes">_Mon</property> + <property name="label" translatable="yes" comments="Monday">_Mon</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-mon_button1"> + <object class="AtkObject" id="mon_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Monday</property> </object> </child> @@ -507,17 +457,14 @@ </child> <child> <object class="GtkCheckButton" id="tue_button"> - <property comments="Tuesday" name="label" translatable="yes">_Tue</property> + <property name="label" translatable="yes" comments="Tuesday">_Tue</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-tue_button1"> + <object class="AtkObject" id="tue_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Tuesday</property> </object> </child> @@ -530,17 +477,14 @@ </child> <child> <object class="GtkCheckButton" id="wed_button"> - <property comments="Wednesday" name="label" translatable="yes">_Wed</property> + <property name="label" translatable="yes" comments="Wednesday">_Wed</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-wed_button1"> + <object class="AtkObject" id="wed_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Wednesday</property> </object> </child> @@ -553,17 +497,14 @@ </child> <child> <object class="GtkCheckButton" id="thu_button"> - <property comments="Thursday" name="label" translatable="yes">T_hu</property> + <property name="label" translatable="yes" comments="Thursday">T_hu</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-thu_button1"> + <object class="AtkObject" id="thu_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Thursday</property> </object> </child> @@ -576,17 +517,14 @@ </child> <child> <object class="GtkCheckButton" id="fri_button"> - <property comments="Friday" name="label" translatable="yes">_Fri</property> + <property name="label" translatable="yes" comments="Friday">_Fri</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-fri_button1"> + <object class="AtkObject" id="fri_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Friday</property> </object> </child> @@ -599,17 +537,14 @@ </child> <child> <object class="GtkCheckButton" id="sat_button"> - <property comments="Saturday" name="label" translatable="yes">_Sat</property> + <property name="label" translatable="yes" comments="Saturday">_Sat</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-sat_button1"> + <object class="AtkObject" id="sat_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Saturday</property> </object> </child> @@ -622,17 +557,14 @@ </child> <child> <object class="GtkCheckButton" id="sun_button"> - <property comments="Sunday" name="label" translatable="yes">S_un</property> + <property name="label" translatable="yes" comments="Sunday">S_un</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> <property name="draw_indicator">True</property> - <accessibility> - - </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="a11y-sun_button1"> + <object class="AtkObject" id="sun_button-atkobject"> <property name="AtkObject::accessible-name" translatable="yes">Sunday</property> </object> </child> @@ -671,6 +603,57 @@ <property name="y_options">GTK_FILL</property> </packing> </child> + <child> + <object class="GtkHBox" id="hbox13"> + <property name="visible">True</property> + <property name="spacing">12</property> + <child> + <object class="EDateEdit" id="start_of_day"> + <property name="visible">True</property> + <property name="show_date">False</property> + <property name="show_week_numbers">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="day_end_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Day _ends:</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="pack_type">end</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="EDateEdit" id="end_of_day"> + <property name="visible">True</property> + <property name="show_date">False</property> + <property name="show_week_numbers">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="y_options">GTK_FILL</property> + </packing> + </child> </object> <packing> <property name="position">1</property> @@ -736,7 +719,7 @@ <property name="spacing">4</property> <child> <object class="GtkCheckButton" id="default_reminder"> - <property comments="This is the first half of a user preference. "Show a reminder [time-period] before every appointment"" name="label" translatable="yes">Sh_ow a reminder</property> + <property name="label" translatable="yes" comments="This is the first half of a user preference. "Show a reminder [time-period] before every appointment"">Sh_ow a reminder</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> @@ -778,7 +761,7 @@ <child> <object class="GtkLabel" id="label16"> <property name="visible">True</property> - <property comments="This is the last half of a user preference. "Show a reminder [time-period] before every appointment"" name="label" translatable="yes">before every appointment</property> + <property name="label" translatable="yes" comments="This is the last half of a user preference. "Show a reminder [time-period] before every appointment"">before every appointment</property> </object> <packing> <property name="expand">False</property> @@ -797,7 +780,7 @@ <property name="spacing">4</property> <child> <object class="GtkCheckButton" id="ba_reminder"> - <property comments="This is the first half of a user preference. "Show a reminder [time-period] before every anniversary/birthday"" name="label" translatable="yes">Show a _reminder</property> + <property name="label" translatable="yes" comments="This is the first half of a user preference. "Show a reminder [time-period] before every anniversary/birthday"">Show a _reminder</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> @@ -839,7 +822,7 @@ <child> <object class="GtkLabel" id="ba_reminder_label"> <property name="visible">True</property> - <property comments="This is the last half of a user preference. "Show a reminder [time-period] before every anniversary/birthday"" name="label" translatable="yes">before every anniversary/birthday</property> + <property name="label" translatable="yes" comments="This is the last half of a user preference. "Show a reminder [time-period] before every anniversary/birthday"">before every anniversary/birthday</property> </object> <packing> <property name="expand">False</property> @@ -913,7 +896,7 @@ <property name="visible">True</property> <property name="spacing">6</property> <child> - <object class="GtkHBox" id="hbox10"> + <object class="GtkHBox" id="hbox_time_divisions"> <property name="visible">True</property> <property name="spacing">6</property> <child> @@ -980,8 +963,8 @@ </packing> </child> <child> - <object class="GtkCheckButton" id="dnav_show_week_no"> - <property name="label" translatable="yes">Show week _numbers in date navigator</property> + <object class="GtkCheckButton" id="show_week_numbers"> + <property name="label" translatable="yes">Show week _numbers</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> @@ -995,21 +978,6 @@ </packing> </child> <child> - <object class="GtkCheckButton" id="dview_show_week_no"> - <property name="label" translatable="yes">Show week n_umber in Day and Work Week View</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="use_underline">True</property> - <property name="draw_indicator">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">4</property> - </packing> - </child> - <child> <object class="GtkCheckButton" id="month_scroll_by_week"> <property name="label" translatable="yes">Sc_roll Month View by a week</property> <property name="visible">True</property> @@ -1021,7 +989,7 @@ <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">5</property> + <property name="position">4</property> </packing> </child> </object> @@ -1069,12 +1037,9 @@ <property name="visible">True</property> <property name="spacing">6</property> <child> - <object class="GtkTable" id="table2"> + <object class="GtkHBox" id="hbox14"> <property name="visible">True</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> - <property name="column_spacing">6</property> - <property name="row_spacing">6</property> + <property name="spacing">12</property> <child> <object class="GtkLabel" id="label21"> <property name="visible">True</property> @@ -1084,57 +1049,59 @@ <property name="mnemonic_widget">tasks_due_today_color</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> - <object class="GtkLabel" id="label22"> + <object class="GtkColorButton" id="tasks_due_today_color"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Overdue tasks:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">tasks_overdue_color</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="title" translatable="yes">Pick a color</property> + <property name="color">#000000000000</property> </object> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> </packing> </child> <child> - <object class="GtkColorButton" id="tasks_due_today_color"> + <object class="GtkLabel" id="label22"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="title" translatable="yes">Pick a color</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Overdue tasks:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">tasks_overdue_color</property> </object> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options"/> - <property name="y_options"/> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">3</property> </packing> </child> <child> <object class="GtkColorButton" id="tasks_overdue_color"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="receives_default">False</property> + <property name="receives_default">True</property> <property name="title" translatable="yes">Pick a color</property> + <property name="color">#000000000000</property> </object> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"/> - <property name="y_options"/> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">end</property> + <property name="position">2</property> </packing> </child> </object> <packing> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">0</property> </packing> </child> @@ -1202,81 +1169,59 @@ <child> <object class="GtkLabel" id="label65"> <property name="visible">True</property> - <property name="label" translatable="yes">Date/Time Format</property> - <property name="use_underline">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="label" translatable="yes">Date/Time Format</property> <attributes> <attribute name="weight" value="bold"/> </attributes> </object> <packing> - <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">4</property> </packing> </child> <child> <object class="GtkHBox" id="hbox27"> <property name="visible">True</property> - <property name="homogeneous">False</property> <property name="spacing">12</property> <child> <object class="GtkLabel" id="label66"> <property name="visible">True</property> - <property name="label" translatable="yes"/> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> </object> <packing> - <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <object class="GtkTable" id="datetime_format_table"> <property name="visible">True</property> - <property name="n_rows">1</property> <property name="n_columns">3</property> - <property name="homogeneous">False</property> - <property name="row_spacing">0</property> - <property name="column_spacing">0</property> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </object> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="position">1</property> </packing> </child> </object> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="position">5</property> </packing> </child> </object> + <packing> + <property name="position">1</property> + </packing> </child> <child type="tab"> <object class="GtkLabel" id="label2"> @@ -1296,101 +1241,69 @@ <child> <object class="GtkLabel" id="label67"> <property name="visible">True</property> - <property name="label" translatable="yes">Alarms</property> - <property name="use_underline">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="label" translatable="yes">Alarms</property> <attributes> <attribute name="weight" value="bold"/> </attributes> </object> <packing> - <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">0</property> </packing> </child> <child> <object class="GtkAlignment" id="alignment1"> <property name="visible">True</property> - <property name="xalign">0.5</property> - <property name="yalign">0.5</property> - <property name="xscale">1</property> - <property name="yscale">1</property> - <property name="top_padding">0</property> - <property name="bottom_padding">0</property> <property name="left_padding">10</property> - <property name="right_padding">0</property> <child> <object class="GtkCheckButton" id="notify_with_tray"> + <property name="label" translatable="yes">Display alarms in _notification area only</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Display alarms in _notification area only</property> + <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="relief">GTK_RELIEF_NORMAL</property> - <property name="focus_on_click">True</property> - <property name="active">False</property> - <property name="inconsistent">False</property> <property name="draw_indicator">True</property> </object> </child> </object> <packing> - <property name="padding">0</property> <property name="expand">False</property> - <property name="fill">True</property> + <property name="position">1</property> </packing> </child> <child> <object class="GtkLabel" id="label62"> <property name="visible">True</property> - <property name="label" translatable="yes">Select the calendars for alarm notification</property> - <property name="use_underline">False</property> - <property name="use_markup">False</property> - <property name="justify">GTK_JUSTIFY_LEFT</property> - <property name="wrap">False</property> - <property name="selectable">False</property> <property name="xalign">0</property> - <property name="yalign">0.5</property> - <property name="xpad">0</property> - <property name="ypad">0</property> - <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property> - <property name="width_chars">-1</property> - <property name="single_line_mode">False</property> - <property name="angle">0</property> + <property name="label" translatable="yes">Select the calendars for alarm notification</property> </object> <packing> - <property name="padding">0</property> <property name="expand">False</property> <property name="fill">False</property> + <property name="position">2</property> </packing> </child> <child> <object class="GtkScrolledWindow" id="calendar-source-scrolled-window"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hscrollbar_policy">automatic</property> - <property name="vscrollbar_policy">automatic</property> - <property name="shadow_type">in</property> - - <child><placeholder/></child> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">automatic</property> + <property name="vscrollbar_policy">automatic</property> + <property name="shadow_type">in</property> + <child> + <placeholder/> + </child> </object> <packing> - <property name="padding">0</property> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="position">3</property> </packing> </child> </object> + <packing> + <property name="position">2</property> + </packing> </child> <child type="tab"> <object class="GtkLabel" id="alarm-label"> @@ -1496,6 +1409,9 @@ </packing> </child> </object> + <packing> + <property name="position">3</property> + </packing> </child> <child type="tab"> <object class="GtkLabel" id="label3"> @@ -1508,4 +1424,10 @@ </packing> </child> </object> + <object class="GtkSizeGroup" id="day_begins_ends_sizegroup"> + <widgets> + <widget name="day_start_label"/> + <widget name="day_end_label"/> + </widgets> + </object> </interface> 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/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index 5fe874d476..cbdeecee2d 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -74,8 +74,6 @@ #define d(x) -static gboolean comp_lite = FALSE; - /* Private part of the CompEditor structure */ struct _CompEditorPrivate { @@ -172,10 +170,16 @@ static const gchar *ui = " </menu>" " </menubar>" " <toolbar name='main-toolbar'>" -" <toolitem action='save'/>" -" <toolitem action='print'/>" -" <toolitem action='close'/>" +" <toolitem action='save'/>\n" +"#if !EXPRESS\n" +" <toolitem action='print'/>\n" +"#endif\n" " <separator/>" +" <placeholder name='content'/>\n" +"#if EXPRESS\n" +" <separator expand='true'/>\n" +" <toolitem action='close'/>\n" +"#endif\n" " </toolbar>" "</ui>"; @@ -420,7 +424,7 @@ save_comp (CompEditor *editor) clone = e_cal_component_clone (priv->comp); comp_editor_copy_new_attendees (clone, priv->comp); for (l = priv->pages; l != NULL; l = l->next) { - if (!comp_editor_page_fill_component (l->data, clone)) { + if (IS_COMP_EDITOR_PAGE(l->data) && !comp_editor_page_fill_component (l->data, clone)) { g_object_unref (clone); g_hash_table_destroy (timezones); comp_editor_show_page (editor, COMP_EDITOR_PAGE (l->data)); @@ -428,7 +432,8 @@ save_comp (CompEditor *editor) } /* retrieve all timezones */ - comp_editor_page_fill_timezones (l->data, timezones); + if (IS_COMP_EDITOR_PAGE(l->data)) + comp_editor_page_fill_timezones (l->data, timezones); } /* If we are not the organizer, we don't update the sequence number */ @@ -1596,6 +1601,9 @@ comp_editor_init (CompEditor *editor) gint n_targets; GError *error = NULL; + /* FIXME Shell should be passed in. */ + shell = e_shell_get_default (); + editor->priv = priv = COMP_EDITOR_GET_PRIVATE (editor); g_object_weak_ref ( @@ -1619,9 +1627,9 @@ comp_editor_init (CompEditor *editor) priv->is_group_item = FALSE; priv->ui_manager = e_ui_manager_new (); + e_ui_manager_set_express_mode (E_UI_MANAGER (priv->ui_manager), + e_shell_get_express_mode (shell)); - if (comp_lite) - gtk_window_set_default_size ((GtkWindow *) editor, 800, 450); gtk_window_add_accel_group ( GTK_WINDOW (editor), gtk_ui_manager_get_accel_group (priv->ui_manager)); @@ -1696,7 +1704,7 @@ comp_editor_init (CompEditor *editor) action = comp_editor_get_action (editor, "save"); gtk_action_set_sensitive (action, FALSE); - gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui, -1, &error); + e_ui_manager_add_ui_from_string (E_UI_MANAGER (priv->ui_manager), ui, &error); if (error != NULL) { g_warning ("%s: %s", G_STRFUNC, error->message); g_error_free (error); @@ -1712,24 +1720,25 @@ comp_editor_init (CompEditor *editor) container = widget; - widget = comp_editor_get_managed_widget (editor, "/main-menu"); - gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - gtk_widget_show (widget); - - if (!comp_lite) { - widget = comp_editor_get_managed_widget (editor, "/main-toolbar"); + if (!e_shell_get_express_mode (shell)) { + widget = comp_editor_get_managed_widget (editor, "/main-menu"); gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); - gtk_widget_show (widget); + gtk_widget_set_visible (widget, !e_shell_get_meego_mode (shell)); } + widget = comp_editor_get_managed_widget (editor, "/main-toolbar"); + gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); + gtk_widget_show (widget); + widget = e_attachment_paned_new (); gtk_container_set_border_width (GTK_CONTAINER (widget), 6); gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0); priv->attachment_view = g_object_ref (widget); gtk_widget_show (widget); - if (comp_lite) { - GtkWidget *tmp, *tmp1, *tmp_box, *cont; + if (e_shell_get_express_mode (shell)) { + /*GtkWidget *tmp, *tmp1, *tmp_box, */ + GtkWidget *cont; GtkWidget *combo; e_attachment_paned_set_expanded (E_ATTACHMENT_PANED (widget), TRUE); @@ -1740,7 +1749,7 @@ comp_editor_init (CompEditor *editor) gtk_widget_hide (combo); cont = e_attachment_paned_get_controls_container ( E_ATTACHMENT_PANED (widget)); - + /* tmp_box = gtk_hbox_new (FALSE, 0); tmp = gtk_hbox_new (FALSE, 0); tmp1 = gtk_image_new_from_stock (GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON); @@ -1760,12 +1769,12 @@ comp_editor_init (CompEditor *editor) gtk_widget_show(tmp_box); gtk_box_pack_end (GTK_BOX (cont), tmp_box, FALSE, FALSE, 4); - + */ } container = e_attachment_paned_get_content_area ( E_ATTACHMENT_PANED (priv->attachment_view)); - if (comp_lite) { + if (e_shell_get_express_mode (shell)) { scroll = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy ((GtkScrolledWindow *)scroll, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_show(scroll); @@ -1773,14 +1782,14 @@ comp_editor_init (CompEditor *editor) } widget = gtk_notebook_new (); - gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), FALSE); - if (!comp_lite) + gtk_notebook_set_show_tabs (GTK_NOTEBOOK (widget), e_shell_get_express_mode (shell)); + if (!e_shell_get_express_mode (shell)) gtk_box_pack_start (GTK_BOX (container), widget, TRUE, TRUE, 0); else gtk_scrolled_window_add_with_viewport ((GtkScrolledWindow *) scroll, widget); priv->notebook = GTK_NOTEBOOK (widget); gtk_widget_show (widget); - if (comp_lite) + if (e_shell_get_express_mode (shell)) gtk_widget_set_size_request (scroll, 300, -1); comp_editor_setup_recent_menu (editor); @@ -1815,9 +1824,8 @@ comp_editor_init (CompEditor *editor) comp_editor_bind_gconf (editor); - /* FIXME Shell should be passed in. */ - shell = e_shell_get_default (); e_shell_watch_window (shell, GTK_WINDOW (editor)); + e_shell_adapt_window_size (shell, GTK_WINDOW (editor)); } static gboolean @@ -2257,6 +2265,51 @@ page_unmapped_cb (GtkWidget *page_widget, } /** + * comp_editor_append_widget: + * @editor: A component editor + * @page: A component editor page + * @label: Label of the page. Should be NULL if add is FALSE. + * @add: Add's the page into the notebook if TRUE + * + * Appends a page to the notebook if add is TRUE else + * just adds it to the list of pages. + **/ +void +comp_editor_append_widget (CompEditor *editor, + GtkWidget *page, + const gchar *label, + gboolean add) +{ + CompEditorPrivate *priv; + GtkWidget *label_widget = NULL; + + g_return_if_fail (IS_COMP_EDITOR (editor)); + + priv = editor->priv; + + g_object_ref (page); + + if (label) + label_widget = gtk_label_new_with_mnemonic (label); + + priv->pages = g_list_append (priv->pages, page); + + if (add) + gtk_notebook_append_page (priv->notebook, page, label_widget); + + /* Listen for when the page is mapped/unmapped so we can + install/uninstall the appropriate GtkAccelGroup. + g_signal_connect ( + page, "map", + G_CALLBACK (page_mapped_cb), page); + g_signal_connect( + page, "unmap", + G_CALLBACK (page_unmapped_cb), page); + */ + +} + +/** * comp_editor_append_page: * @editor: A component editor * @page: A component editor page @@ -2547,8 +2600,10 @@ fill_widgets (CompEditor *editor) g_signal_handlers_block_by_func ( action, G_CALLBACK (action_classification_cb), editor); - for (iter = priv->pages; iter != NULL; iter = iter->next) - comp_editor_page_fill_widgets (iter->data, priv->comp); + for (iter = priv->pages; iter != NULL; iter = iter->next) { + if (IS_COMP_EDITOR_PAGE(iter->data)) + comp_editor_page_fill_widgets (iter->data, priv->comp); + } g_signal_handlers_unblock_by_func ( action, G_CALLBACK (action_classification_cb), editor); @@ -2791,8 +2846,10 @@ comp_editor_get_current_comp (CompEditor *editor, gboolean *correct) comp = e_cal_component_clone (priv->comp); comp_editor_copy_new_attendees (comp, priv->comp); if (priv->changed) { - for (l = priv->pages; l != NULL; l = l->next) - all_ok = comp_editor_page_fill_component (l->data, comp) && all_ok; + for (l = priv->pages; l != NULL; l = l->next) { + if (IS_COMP_EDITOR_PAGE(l->data)) + all_ok = comp_editor_page_fill_component (l->data, comp) && all_ok; + } } if (correct) @@ -2957,7 +3014,7 @@ page_dates_changed_cb (CompEditor *editor, GList *l; for (l = priv->pages; l != NULL; l = l->next) - if (page != (CompEditorPage *) l->data) + if (page != (CompEditorPage *) l->data && IS_COMP_EDITOR_PAGE(l->data)) comp_editor_page_set_dates (l->data, dates); if (!priv->warned && priv->existing_org && !priv->user_org && !(editor->priv->flags & COMP_EDITOR_NEW_ITEM)) { @@ -3014,14 +3071,3 @@ obj_removed_cb (ECal *client, close_dialog (editor); } -gboolean -comp_editor_get_lite () -{ - return comp_lite; -} - -void -comp_editor_set_lite (gboolean status) -{ - comp_lite = status; -} diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h index 4871beae8f..bd26ce8b66 100644 --- a/calendar/gui/dialogs/comp-editor.h +++ b/calendar/gui/dialogs/comp-editor.h @@ -127,6 +127,11 @@ void comp_editor_append_page (CompEditor *editor, CompEditorPage *page, const gchar *label, gboolean add); +void comp_editor_append_widget (CompEditor *editor, + GtkWidget *page, + const gchar *label, + gboolean add); + void comp_editor_remove_page (CompEditor *editor, CompEditorPage *page); void comp_editor_show_page (CompEditor *editor, @@ -165,9 +170,6 @@ GtkWidget * comp_editor_get_managed_widget (CompEditor *editor, const gchar *widget_path); CompEditor * comp_editor_find_instance (const gchar *uid); -void comp_editor_set_lite (gboolean status); -gboolean comp_editor_get_lite (void); - G_END_DECLS #endif diff --git a/calendar/gui/dialogs/copy-source-dialog.c b/calendar/gui/dialogs/copy-source-dialog.c index 9b8c8c4fed..f1c568849b 100644 --- a/calendar/gui/dialogs/copy-source-dialog.c +++ b/calendar/gui/dialogs/copy-source-dialog.c @@ -32,18 +32,19 @@ #include "common/authentication.h" typedef struct { + GtkWindow *parent; ESource *orig_source; ECalSourceType obj_type; ESource *selected_source; } CopySourceDialogData; static void -show_error (GtkWindow *parent, const gchar *msg) +show_error (CopySourceDialogData *csdd, const gchar *msg) { GtkWidget *dialog; dialog = gtk_message_dialog_new ( - parent, 0, GTK_MESSAGE_ERROR, + csdd->parent, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", msg); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); @@ -88,7 +89,7 @@ copy_source (CopySourceDialogData *csdd) /* open the source */ source_client = e_auth_new_cal_from_source (csdd->orig_source, csdd->obj_type); if (!e_cal_open (source_client, TRUE, NULL)) { - show_error (NULL, _("Could not open source")); + show_error (csdd, _("Could not open source")); g_object_unref (source_client); return FALSE; } @@ -96,7 +97,7 @@ copy_source (CopySourceDialogData *csdd) /* open the destination */ dest_client = e_auth_new_cal_from_source (csdd->selected_source, csdd->obj_type); if (!e_cal_open (dest_client, FALSE, NULL)) { - show_error (NULL, _("Could not open destination")); + show_error (csdd, _("Could not open destination")); g_object_unref (dest_client); g_object_unref (source_client); return FALSE; @@ -105,7 +106,7 @@ copy_source (CopySourceDialogData *csdd) /* check if the destination is read only */ e_cal_is_read_only (dest_client, &read_only, NULL); if (read_only) { - show_error (NULL, _("Destination is read only")); + show_error (csdd, _("Destination is read only")); } else { if (e_cal_get_object_list (source_client, "#t", &obj_list, NULL)) { GList *l; @@ -135,7 +136,7 @@ copy_source (CopySourceDialogData *csdd) g_free (uid); } else { if (error) { - show_error (NULL, error->message); + show_error (csdd, error->message); g_error_free (error); } break; @@ -168,6 +169,7 @@ copy_source_dialog (GtkWindow *parent, ESource *source, ECalSourceType obj_type) g_return_val_if_fail (E_IS_SOURCE (source), FALSE); + csdd.parent = parent; csdd.orig_source = source; csdd.selected_source = NULL; csdd.obj_type = obj_type; diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c index 23256adff0..687f26a5d5 100644 --- a/calendar/gui/dialogs/event-editor.c +++ b/calendar/gui/dialogs/event-editor.c @@ -36,6 +36,7 @@ #include <e-util/e-binding.h> #include <e-util/e-plugin-ui.h> #include <e-util/e-util-private.h> +#include <e-util/e-ui-manager.h> #include "event-page.h" #include "recurrence-page.h" @@ -89,11 +90,19 @@ static const gchar *ui = " </menu>" " </menubar>" " <toolbar name='main-toolbar'>" -" <toolitem action='alarms'/>" -" <toolitem action='show-time-busy'/>" -" <toolitem action='recurrence'/>" -" <toolitem action='all-day-event'/>" -" <toolitem action='free-busy'/>" +" <placeholder name='content'>\n" +"#if !EXPRESS\n" +" <toolitem action='alarms'/>\n" +"#endif\n" +" <toolitem action='show-time-busy'/>\n" +"#if !EXPRESS\n" +" <toolitem action='recurrence'/>\n" +"#endif\n" +" <toolitem action='all-day-event'/>\n" +"#if !EXPRESS\n" +" <toolitem action='free-busy'/>\n" +"#endif\n" +" </placeholder>" " </toolbar>" "</ui>"; @@ -269,6 +278,8 @@ event_editor_constructor (GType type, GtkActionGroup *action_group; ECal *client; gboolean is_meeting; + GtkWidget *alarm_page; + GtkWidget *attendee_page; /* Chain up to parent's constructor() method. */ object = G_OBJECT_CLASS (event_editor_parent_class)->constructor ( @@ -302,11 +313,34 @@ event_editor_constructor (GType type, priv->recur_page = recurrence_page_new (editor); page = COMP_EDITOR_PAGE (priv->recur_page); - gtk_container_add ( - GTK_CONTAINER ((GTK_DIALOG (priv->recur_window)->vbox)), - comp_editor_page_get_widget (page)); - gtk_widget_show_all (gtk_bin_get_child (GTK_BIN (priv->recur_window))); - comp_editor_append_page (editor, page, NULL, FALSE); + if (!e_shell_get_express_mode(e_shell_get_default())) { + gtk_container_add ( + GTK_CONTAINER ((GTK_DIALOG (priv->recur_window)->vbox)), + comp_editor_page_get_widget (page)); + gtk_widget_show_all (gtk_bin_get_child (GTK_BIN (priv->recur_window))); + comp_editor_append_page (editor, page, NULL, FALSE); + } else { + comp_editor_append_page (editor, page, _("_Recurrence"), TRUE); + } + + if (e_shell_get_express_mode(e_shell_get_default())) { + ENameSelector *name_selector; + + priv->sched_page = schedule_page_new (priv->model, editor); + page = COMP_EDITOR_PAGE (priv->sched_page); + + name_selector = event_page_get_name_selector (priv->event_page); + schedule_page_set_name_selector (priv->sched_page, name_selector); + + comp_editor_append_page (editor, page, _("_Free/Busy"), TRUE); + schedule_page_update_free_busy (priv->sched_page); + + /* Alarm page */ + alarm_page = event_page_get_alarm_page (priv->event_page); + comp_editor_append_widget (editor, alarm_page, _("_Alarm"), TRUE); + g_object_unref(alarm_page); + + } if (is_meeting) { @@ -323,6 +357,12 @@ event_editor_constructor (GType type, event_page_set_meeting (priv->event_page, TRUE); priv->meeting_shown=TRUE; + + if (e_shell_get_express_mode(e_shell_get_default())) { + attendee_page = event_page_get_attendee_page (priv->event_page); + comp_editor_append_widget (editor, attendee_page, _("Attendee_s"), TRUE); + g_object_unref(attendee_page); + } } return object; @@ -363,25 +403,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 @@ -504,7 +531,7 @@ event_editor_init (EventEditor *ee) G_N_ELEMENTS (meeting_entries), ee); ui_manager = comp_editor_get_ui_manager (editor); - gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, &error); + e_ui_manager_add_ui_from_string (E_UI_MANAGER (ui_manager), ui, &error); id = "org.gnome.evolution.event-editor"; e_plugin_ui_register_manager (ui_manager, id, ee); diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c index 7d79a2bfb7..3aa42a48b0 100644 --- a/calendar/gui/dialogs/event-page.c +++ b/calendar/gui/dialogs/event-page.c @@ -825,7 +825,8 @@ sensitize_widgets (EventPage *epage) } else { gtk_widget_show (priv->calendar_label); gtk_widget_show (priv->list_box); - gtk_widget_show (priv->attendee_box); + if (!e_shell_get_express_mode(e_shell_get_default())) + gtk_widget_show (priv->attendee_box); gtk_widget_show (priv->organizer); gtk_label_set_text_with_mnemonic ((GtkLabel *) priv->org_cal_label, _("Or_ganizer:")); } @@ -2194,7 +2195,7 @@ get_widgets (EventPage *epage) priv->invite = GW ("invite"); priv->invite_label = GW ("invite-label"); - if (comp_editor_get_lite ()) + if (e_shell_get_express_mode (e_shell_get_default ())) gtk_widget_hide (priv->invite); else gtk_widget_hide (priv->invite_label); @@ -2219,7 +2220,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 +2228,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); @@ -2236,7 +2235,6 @@ get_widgets (EventPage *epage) priv->source_selector = GW ("source"); -#undef GW e_util_set_source_combo_box_list (priv->source_selector, "/apps/evolution/calendar/sources"); @@ -3256,3 +3254,44 @@ event_page_remove_all_attendees (EventPage *epage) e_meeting_list_view_remove_all_attendees_from_name_selector (E_MEETING_LIST_VIEW (priv->list_view)); } + +GtkWidget * +event_page_get_alarm_page (EventPage *epage) +{ + EventPagePrivate *priv; + GtkWidget *alarm_page, *tmp; + + g_return_val_if_fail (epage != NULL, NULL); + g_return_val_if_fail (IS_EVENT_PAGE (epage), NULL); + + priv = epage->priv; + + tmp = GW("dialog-vbox1"); + alarm_page = GW("vbox2"); + g_object_ref(alarm_page); + gtk_container_remove ((GtkContainer *)tmp, alarm_page); + + return alarm_page; +} + +GtkWidget * +event_page_get_attendee_page (EventPage *epage) +{ + EventPagePrivate *priv; + GtkWidget *apage; + + g_return_val_if_fail (epage != NULL, NULL); + g_return_val_if_fail (IS_EVENT_PAGE (epage), NULL); + + priv = epage->priv; + + apage = priv->list_box; + g_object_ref(apage); + gtk_container_remove ((GtkContainer *)gtk_widget_get_parent(apage), apage); + gtk_widget_hide (priv->attendee_box); + + return apage; +} + + +#undef GW diff --git a/calendar/gui/dialogs/event-page.h b/calendar/gui/dialogs/event-page.h index ab43c0f7ba..a4513e4c68 100644 --- a/calendar/gui/dialogs/event-page.h +++ b/calendar/gui/dialogs/event-page.h @@ -109,6 +109,8 @@ ENameSelector * event_page_get_name_selector (EventPage *epage); void event_page_add_attendee (EventPage *epage, EMeetingAttendee *attendee); void event_page_remove_all_attendees (EventPage *epage); +GtkWidget * event_page_get_alarm_page (EventPage *epage); +GtkWidget * event_page_get_attendee_page (EventPage *epage); G_END_DECLS 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..7e35cbe070 100644 --- a/calendar/gui/dialogs/task-editor.c +++ b/calendar/gui/dialogs/task-editor.c @@ -81,8 +81,10 @@ static const gchar *ui = " </menu>" " </menubar>" " <toolbar name='main-toolbar'>" -" <toolitem action='view-time-zone'/>" -" <toolitem action='option-status'/>" +" <placeholder name='content'>" +" <toolitem action='view-time-zone'/>" +" <toolitem action='option-status'/>" +" </placeholder>" " </toolbar>" "</ui>"; @@ -202,25 +204,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 cb1966fb17..e48b95999d 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 @@ -148,17 +145,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, @@ -173,12 +162,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), @@ -215,13 +198,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, @@ -254,11 +230,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; @@ -317,28 +288,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; @@ -352,7 +301,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; @@ -382,17 +330,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", @@ -513,6 +450,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 */ @@ -1387,14 +1326,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 0b31ca34ec..29c3335310 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 \ @@ -176,7 +175,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 9fb0a78ee4..cc8581fb00 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 35bd87f3e2..6cfaecabfa 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..dd3f49df75 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 @@ -1415,6 +1420,10 @@ e_meeting_time_selector_refresh_free_busy (EMeetingTimeSelector *mts, gint row, GdkCursor *cursor; GdkWindow *window; + /* nothing to refresh, lets not leak a busy cursor */ + if (e_meeting_store_count_actual_attendees (mts->model) <= 0) + return; + start = mts->meeting_start_time; g_date_subtract_days (&start.date, E_MEETING_TIME_SELECTOR_FB_DAYS_BEFORE); start.hour = 0; diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index b96ec7e093..696113987b 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -523,19 +523,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..aa64c74564 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", @@ -1462,7 +1424,7 @@ gnome_calendar_init (GnomeCalendar *gcal) priv->todo_update_lock = g_mutex_new (); priv->dn_query_lock = g_mutex_new (); - priv->current_view_type = GNOME_CAL_DAY_VIEW; + priv->current_view_type = GNOME_CAL_WORK_WEEK_VIEW; priv->range_selected = FALSE; priv->lview_select_daten_range = TRUE; @@ -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 |