aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/e-week-view.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-08-04 11:13:43 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-08-04 11:13:43 +0800
commita874d1e407014751ae72957679c89dc6bbe2f679 (patch)
tree123900863eecd47e98f7c2b807fde5dd20a2d8ef /calendar/gui/e-week-view.c
parent9e199f467ba7f403dc487b9eaa10aa551d45496a (diff)
downloadgsoc2013-evolution-a874d1e407014751ae72957679c89dc6bbe2f679.tar.gz
gsoc2013-evolution-a874d1e407014751ae72957679c89dc6bbe2f679.tar.zst
gsoc2013-evolution-a874d1e407014751ae72957679c89dc6bbe2f679.zip
New function; stops further notification from happening. This is needed
2001-08-03 Federico Mena Quintero <federico@ximian.com> * cal-client/query-listener.c (query_listener_stop_notification): New function; stops further notification from happening. This is needed since the listener is destroyed asynchronously from the Wombat and the corresponding CalQuery may already have died. (impl_notifyObjUpdated): Do not notify if requested. (impl_notifyObjRemoved): Likewise. (impl_notifyQueryDone): Likewise. (impl_notifyEvalError): Likewise. * cal-client/cal-query.c (cal_query_destroy): Use query_listener_stop_notification(). * cal-client/cal-listener.c (cal_listener_destroy): Nullify the pointers to the callback functions. * gui/e-day-view.c (update_query): Commit our state of no longer having a query before unrefing it. We may reenter from the ORBit main loop and we *really* want this information to be committed. * gui/e-week-view.c (update_query): Likewise. * gui/calendar-model.c (update_query): Likewise. * gui/tag-calendar.c (tag_calendar_by_comp): Added a "clear_first" argument that indicates whether the ECalendar should be cleared of any marks first. * gui/calendar-commands.c (calendar_control_activate): Removed ifdefed-out view buttons code from the Gnomecal days. * gui/gnome-cal.c (client_categories_changed_cb): Merge the categories of the calendar and tasks clients so that we can display the categories in both sets. (gnome_calendar_construct): Connect to "categories_changed" on both clients. (gnome_calendar_on_date_navigator_selection_changed): Removed call to gnome_calendar_update_view_buttons(). (gnome_calendar_update_view_buttons): Removed. We cannot have this until Bonobo supports radio toolbar items. (gnome_calendar_set_view_buttons): Removed. (gnome_calendar_dayjump): Do not use priv->day_button. (GnomeCalendarPrivate): Removed the {day,work_week,week,month}_button fields. (gnome_calendar_set_query): Start a retagging process of the date navigator so that it reflects the current query. (update_query): New function to restart a query for the date navigator. (initial_load): Use update_query() instead of tagging the date navigator directly. (gnome_calendar_on_date_navigator_date_range_changed): Likewise. (client_cal_opened_cb): Use update_query() instead of initial_load(). (initial_load): Removed. (client_obj_updated_cb): Removed. (client_obj_removed_cb): Removed. (gnome_calendar_new_appointment_for): Set the default category of the new component. (search_bar_category_changed_cb): Set the default category for the calendar views. * gui/cal-search-bar.c (cal_search_bar_set_categories): Sort the categories before creating the menu. * gui/e-day-view.c (adjust_query_sexp): Return NULL instead of "#f" if the time range is not set yet. (update_query): Do not start a query if the time range is not set. (e_day_view_set_default_category): New function. (e_day_view_key_press): Set the default category on the new component. * gui/e-week-view.c (adjust_query_sexp): Analogous to the above. (update_query): Analogous to the above. (e_week_view_set_default_category): Analogous to the above. (e_week_view_key_press): Analogous to the above. svn path=/trunk/; revision=11646
Diffstat (limited to 'calendar/gui/e-week-view.c')
-rw-r--r--calendar/gui/e-week-view.c49
1 files changed, 44 insertions, 5 deletions
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index c0b9d82a10..5d269cf471 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -297,6 +297,8 @@ e_week_view_init (EWeekView *week_view)
week_view->main_gc = NULL;
+ week_view->default_category = NULL;
+
/* Create the small font. */
week_view->use_small_font = TRUE;
week_view->small_font = gdk_font_load (E_WEEK_VIEW_SMALL_FONT);
@@ -463,8 +465,15 @@ e_week_view_destroy (GtkObject *object)
week_view->query = NULL;
}
- if (week_view->small_font)
+ if (week_view->small_font) {
gdk_font_unref (week_view->small_font);
+ week_view->small_font = NULL;
+ }
+
+ if (week_view->default_category) {
+ g_free (week_view->default_category);
+ week_view->default_category = NULL;
+ }
gdk_cursor_destroy (week_view->normal_cursor);
gdk_cursor_destroy (week_view->move_cursor);
@@ -1056,7 +1065,7 @@ adjust_query_sexp (EWeekView *week_view, const char *sexp)
/* If the dates have not been set yet, we just want an empty query. */
if (!g_date_valid (&week_view->first_day_shown))
- return g_strdup ("#f");
+ return NULL;
num_days = week_view->multi_week_view ? week_view->weeks_shown * 7 : 7;
@@ -1080,6 +1089,7 @@ adjust_query_sexp (EWeekView *week_view, const char *sexp)
static void
update_query (EWeekView *week_view)
{
+ CalQuery *old_query;
char *real_sexp;
e_week_view_free_events (week_view);
@@ -1089,13 +1099,19 @@ update_query (EWeekView *week_view)
&& cal_client_get_load_state (week_view->client) == CAL_CLIENT_LOAD_LOADED))
return;
- if (week_view->query) {
- gtk_signal_disconnect_by_data (GTK_OBJECT (week_view->query), week_view);
- gtk_object_unref (GTK_OBJECT (week_view->query));
+ old_query = week_view->query;
+ week_view->query = NULL;
+
+ if (old_query) {
+ gtk_signal_disconnect_by_data (GTK_OBJECT (old_query), week_view);
+ gtk_object_unref (GTK_OBJECT (old_query));
}
g_assert (week_view->sexp != NULL);
+
real_sexp = adjust_query_sexp (week_view, week_view->sexp);
+ if (!real_sexp)
+ return; /* No time range is set, so don't start a query */
week_view->query = cal_client_get_query (week_view->client, real_sexp);
g_free (real_sexp);
@@ -1192,6 +1208,27 @@ e_week_view_set_query (EWeekView *week_view, const char *sexp)
}
+/**
+ * e_week_view_set_default_category:
+ * @week_view: A week view.
+ * @category: Default category name or NULL for no category.
+ *
+ * Sets the default category that will be used when creating new calendar
+ * components from the week view.
+ **/
+void
+e_week_view_set_default_category (EWeekView *week_view, const char *category)
+{
+ g_return_if_fail (week_view != NULL);
+ g_return_if_fail (E_IS_WEEK_VIEW (week_view));
+
+ if (week_view->default_category)
+ g_free (week_view->default_category);
+
+ week_view->default_category = g_strdup (category);
+}
+
+
/* This sets the selected time range. The EWeekView will show the corresponding
month and the days between start_time and end_time will be selected.
To select a single day, use the same value for start_time & end_time. */
@@ -3091,6 +3128,8 @@ e_week_view_key_press (GtkWidget *widget, GdkEventKey *event)
week_view->zone);
cal_component_set_dtend (comp, &date);
+ cal_component_set_categories (comp, week_view->default_category);
+
/* We add the event locally and start editing it. We don't send the
new event to the server until the edit is finished.
FIXME: If we get an obj-updated or obj-removed signal while editing