示例#1
0
/* Creates the ecalendar */
static void
create_ecal (GoToDialog *dlg)
{
	ECalendarItem *calitem;

	dlg->ecal = E_CALENDAR (e_calendar_new ());
	calitem = dlg->ecal->calitem;

	gnome_canvas_item_set (GNOME_CANVAS_ITEM (calitem),
			"move_selection_when_moving", FALSE,
			NULL);
	e_calendar_item_set_display_popup (calitem, FALSE);
	gtk_widget_show (GTK_WIDGET (dlg->ecal));
	gtk_box_pack_start (GTK_BOX (dlg->vbox), GTK_WIDGET (dlg->ecal), TRUE, TRUE, 0);

	e_calendar_item_set_first_month (calitem, dlg->year_val, dlg->month_val);
	e_calendar_item_set_get_time_callback (calitem,
					       get_current_time,
					       dlg, NULL);

	ecal_date_range_changed (calitem, dlg);
}
void
e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view)
{
	ECalShellViewPrivate *priv = cal_shell_view->priv;
	EShellBackend *shell_backend;
	EShellContent *shell_content;
	EShellSidebar *shell_sidebar;
	EShellWindow *shell_window;
	EShellView *shell_view;
	EShell *shell;
	ECalendar *calendar;
	gulong handler_id;
	gint ii;

	shell_view = E_SHELL_VIEW (cal_shell_view);
	shell_backend = e_shell_view_get_shell_backend (shell_view);
	shell_content = e_shell_view_get_shell_content (shell_view);
	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
	shell_window = e_shell_view_get_shell_window (shell_view);
	shell = e_shell_window_get_shell (shell_window);

	e_shell_window_add_action_group (shell_window, "calendar");
	e_shell_window_add_action_group (shell_window, "calendar-filter");

	/* Cache these to avoid lots of awkward casting. */
	priv->cal_shell_backend = g_object_ref (shell_backend);
	priv->cal_shell_content = g_object_ref (shell_content);
	priv->cal_shell_sidebar = g_object_ref (shell_sidebar);

	calendar = e_cal_base_shell_sidebar_get_date_navigator (priv->cal_shell_sidebar);

	/* Keep our own reference to this so we can
	 * disconnect our signal handlers in dispose(). */
	priv->client_cache = e_shell_get_client_cache (shell);
	g_object_ref (priv->client_cache);

	handler_id = g_signal_connect (
		priv->client_cache, "backend-error",
		G_CALLBACK (cal_shell_view_backend_error_cb),
		cal_shell_view);
	priv->backend_error_handler_id = handler_id;

	g_signal_connect_swapped (
		e_cal_base_shell_content_get_model (E_CAL_BASE_SHELL_CONTENT (priv->cal_shell_content)),
		"time-range-changed", G_CALLBACK (e_cal_shell_view_update_sidebar), cal_shell_view);

	for (ii = E_CAL_VIEW_KIND_DAY; ii < E_CAL_VIEW_KIND_LAST; ii++) {
		ECalendarView *calendar_view;

		/* Keep our own reference to this so we can
		 * disconnect our signal handlers in dispose(). */
		calendar_view = e_cal_shell_content_get_calendar_view (priv->cal_shell_content, ii);
		priv->views[ii].calendar_view = g_object_ref (calendar_view);

		handler_id = g_signal_connect_swapped (
			calendar_view, "popup-event",
			G_CALLBACK (cal_shell_view_popup_event_cb),
			cal_shell_view);
		priv->views[ii].popup_event_handler_id = handler_id;

		handler_id = g_signal_connect_swapped (
			calendar_view, "selection-changed",
			G_CALLBACK (e_shell_view_update_actions),
			cal_shell_view);
		priv->views[ii].selection_changed_handler_id = handler_id;
	}

	/* Keep our own reference to this so we can
	 * disconnect our signal handlers in dispose(). */
	priv->model = e_cal_base_shell_content_get_model (
		E_CAL_BASE_SHELL_CONTENT (shell_content));
	g_object_ref (priv->model);

	/* Keep our own reference to this so we can
	 * disconnect our signal handlers in dispose(). */
	priv->selector = e_cal_base_shell_sidebar_get_selector (
		E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar));
	g_object_ref (priv->selector);

	handler_id = g_signal_connect_swapped (
		priv->selector, "popup-event",
		G_CALLBACK (cal_shell_view_selector_popup_event_cb),
		cal_shell_view);
	priv->selector_popup_event_handler_id = handler_id;

	/* Keep our own reference to this so we can
	 * disconnect our signal handlers in dispose(). */
	priv->memo_table = e_cal_shell_content_get_memo_table (
		E_CAL_SHELL_CONTENT (shell_content));
	g_object_ref (priv->memo_table);

	handler_id = g_signal_connect_swapped (
		priv->memo_table, "popup-event",
		G_CALLBACK (cal_shell_view_memopad_popup_event_cb),
		cal_shell_view);
	priv->memo_table_popup_event_handler_id = handler_id;

	handler_id = g_signal_connect_swapped (
		priv->memo_table, "selection-change",
		G_CALLBACK (e_cal_shell_view_memopad_actions_update),
		cal_shell_view);
	priv->memo_table_selection_change_handler_id = handler_id;

	/* Keep our own reference to this so we can
	 * disconnect our signal handlers in dispose(). */
	priv->task_table = e_cal_shell_content_get_task_table (
		E_CAL_SHELL_CONTENT (shell_content));
	g_object_ref (priv->task_table);

	handler_id = g_signal_connect_swapped (
		priv->task_table, "popup-event",
		G_CALLBACK (cal_shell_view_taskpad_popup_event_cb),
		cal_shell_view);
	priv->task_table_popup_event_handler_id = handler_id;

	handler_id = g_signal_connect_swapped (
		priv->task_table, "selection-change",
		G_CALLBACK (e_cal_shell_view_taskpad_actions_update),
		cal_shell_view);
	priv->task_table_selection_change_handler_id = handler_id;

	e_categories_add_change_hook (
		(GHookFunc) e_cal_shell_view_update_search_filter,
		cal_shell_view);

	e_calendar_item_set_get_time_callback (
		calendar->calitem, (ECalendarItemGetTimeCallback)
		cal_shell_view_get_current_time, cal_shell_view, NULL);

	init_timezone_monitors (cal_shell_view);
	e_cal_shell_view_actions_init (cal_shell_view);
	e_cal_shell_view_update_sidebar (cal_shell_view);
	e_cal_shell_view_update_search_filter (cal_shell_view);
}
示例#3
0
void constructed (GObject * object)
{
	AnnumShellView *self = ANNUM_SHELL_VIEW (object);
	AnnumShellViewPrivate *priv = self->priv;
	AnnumShellContent *prox_shell_content;
	AnnumShellSidebar *prox_shell_sidebar;
	EShellBackend *shell_backend;
	EShellContent *shell_content;
	EShellSidebar *shell_sidebar;
	EShellWindow *shell_window;
	EShellView *shell_view;
	GnomeCalendar *calendar;
	ECalendar *date_navigator;
	ESourceSelector *selector;
	ECalModel *model;
	int ii;

	G_OBJECT_CLASS (annum_shell_view_parent_class)->constructed (object);

	shell_view = E_SHELL_VIEW (self);
	shell_backend = e_shell_view_get_shell_backend (shell_view);
	shell_content = e_shell_view_get_shell_content (shell_view);
	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
	shell_window = e_shell_view_get_shell_window (shell_view);

	e_shell_window_add_action_group (shell_window, "calendar");
	e_shell_window_add_action_group (shell_window, "calendar-filter");

	/* Cache these to avoid lots of awkward casting. */
	priv->prox_shell_backend = g_object_ref (shell_backend);
	priv->prox_shell_content = g_object_ref (shell_content);
	priv->prox_shell_sidebar = g_object_ref (shell_sidebar);

	prox_shell_content = ANNUM_SHELL_CONTENT (shell_content);
	model = annum_shell_content_get_model (prox_shell_content);
	calendar = annum_shell_content_get_calendar (prox_shell_content);

	prox_shell_sidebar = ANNUM_SHELL_SIDEBAR (shell_sidebar);
	selector = annum_shell_sidebar_get_selector (prox_shell_sidebar);
	date_navigator =
	    annum_shell_sidebar_get_date_navigator (prox_shell_sidebar);

	/* Give GnomeCalendar a handle to the date navigator. */
	gnome_calendar_set_date_navigator (calendar, date_navigator);

	e_calendar_item_set_get_time_callback (date_navigator->calitem,
					       (ECalendarItemGetTimeCallback)
					       annum_shell_view_get_current_time,
					       self, NULL);

	/* Initialize its default query to fetch everything in a range */
	gnome_calendar_set_search_query (calendar,
					 "(contains? \"summary\"  \"\")", FALSE,
					 0, 0);

	for (ii = 0; ii < GNOME_CAL_LAST_VIEW; ii++) {
		ECalendarView *calendar_view;

		calendar_view = gnome_calendar_get_calendar_view (calendar, ii);

		g_signal_connect_swapped (calendar_view, "user-created",
					  G_CALLBACK
					  (annum_shell_view_user_created_cb),
					  self);
	}

	g_signal_connect_swapped (date_navigator->calitem, "date-range-changed",
				  G_CALLBACK
				  (annum_shell_view_date_navigator_date_range_changed_cb),
				  self);

	g_signal_connect_swapped (date_navigator->calitem, "selection-changed",
				  G_CALLBACK
				  (annum_shell_view_date_navigator_selection_changed_cb),
				  self);

	g_signal_connect_swapped (selector, "primary-selection-changed",
				  G_CALLBACK
				  (annum_shell_view_selector_primary_changed_cb),
				  self);

	g_signal_connect_swapped (model, "notify::timezone",
				  G_CALLBACK
				  (annum_shell_view_update_timezone), self);

	g_signal_connect_swapped (prox_shell_sidebar, "client-added",
				  G_CALLBACK
				  (annum_shell_view_selector_client_added_cb),
				  self);

	g_signal_connect_swapped (prox_shell_sidebar, "client-removed",
				  G_CALLBACK
				  (annum_shell_view_selector_client_removed_cb),
				  self);

	/* Force the main calendar to update its default source. */
	g_signal_emit_by_name (selector, "primary-selection-changed");
}