aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/gnome-cal.c
diff options
context:
space:
mode:
authorChenthill Palanisamy <pchen@src.gnome.org>2007-06-04 09:43:27 +0800
committerChenthill Palanisamy <pchen@src.gnome.org>2007-06-04 09:43:27 +0800
commitfaad8a01e1a4fc4d425ed2ff850158339fb6bd37 (patch)
treeb8be0cb43801b31d3573e5b0968d9e252dedb239 /calendar/gui/gnome-cal.c
parent8bebb05056fd093d0302546fc65edb130c3c136a (diff)
downloadgsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar.gz
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar.bz2
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar.lz
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar.xz
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.tar.zst
gsoc2013-evolution-faad8a01e1a4fc4d425ed2ff850158339fb6bd37.zip
Added advanced search options.
svn path=/trunk/; revision=33648
Diffstat (limited to 'calendar/gui/gnome-cal.c')
-rw-r--r--calendar/gui/gnome-cal.c67
1 files changed, 59 insertions, 8 deletions
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 3c27eb3fe2..864cc064fa 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -185,6 +185,10 @@ struct _GnomeCalendarPrivate {
time_t visible_start;
time_t visible_end;
gboolean updating;
+
+ /* If this is true list view uses range of showing the events as the dates selected in date navigator which is one month, else
+ it uses the date range set in search bar */
+ gboolean lview_select_daten_range;
};
/* Signal IDs */
@@ -883,6 +887,7 @@ set_search_query (GnomeCalendar *gcal, const char *sexp)
{
GnomeCalendarPrivate *priv;
int i;
+ time_t start, end;
g_return_if_fail (gcal != NULL);
g_return_if_fail (GNOME_IS_CALENDAR (gcal));
@@ -900,8 +905,23 @@ set_search_query (GnomeCalendar *gcal, const char *sexp)
update_query (gcal);
/* Set the query on the views */
- for (i = 0; i < GNOME_CAL_LAST_VIEW; i++)
- e_cal_model_set_search_query (e_calendar_view_get_model (priv->views[i]), sexp);
+ for (i = 0; i < GNOME_CAL_LAST_VIEW; i++) {
+ if (i == GNOME_CAL_LIST_VIEW) {
+ if (!priv->lview_select_daten_range) {
+ cal_search_bar_get_time_range ((CalSearchBar *)priv->search_bar, &start, &end);
+ e_cal_model_set_search_query_with_time_range (e_calendar_view_get_model (priv->views [i]), sexp, start, end);
+ } else {
+ start = priv->base_view_time;
+ get_times_for_views (gcal, GNOME_CAL_LIST_VIEW, &start, &end);
+
+ e_cal_model_set_search_query_with_time_range (e_calendar_view_get_model (priv->views [i]), sexp, start, end);
+
+ if (priv->current_view_type == GNOME_CAL_LIST_VIEW)
+ gnome_calendar_update_date_navigator (gcal);
+ }
+ } else
+ e_cal_model_set_search_query (e_calendar_view_get_model (priv->views[i]), sexp);
+ }
/* Set the query on the task pad */
update_todo_view (gcal);
@@ -932,8 +952,20 @@ static void
search_bar_sexp_changed_cb (CalSearchBar *cal_search, const char *sexp, gpointer data)
{
GnomeCalendar *gcal;
+ const char *d_sexp = "occur-in-time-range?";
gcal = GNOME_CALENDAR (data);
+
+ /* Choose List view if the search made in the search bar is based on date */
+ if(sexp != NULL && strstr (sexp, d_sexp ) != NULL) {
+ gcal->priv->lview_select_daten_range = FALSE;
+ gtk_widget_hide (GTK_WIDGET (gcal->priv->date_navigator));
+ gnome_calendar_set_view (gcal, GNOME_CAL_LIST_VIEW);
+ } else {
+ gcal->priv->lview_select_daten_range = TRUE;
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
+ }
+
set_search_query (gcal, sexp);
}
@@ -1209,10 +1241,6 @@ update_memo_view (GnomeCalendar *gcal)
priv = gcal->priv;
/* Set the query on the memo pad*/
- if (priv->memo_sexp) {
- g_free (priv->memo_sexp);
- }
-
model = e_memo_table_get_model (E_MEMO_TABLE (priv->memo));
view_model = e_calendar_view_get_model(priv->views[priv->current_view_type]);
e_cal_model_get_time_range (view_model, &start, &end);
@@ -1221,6 +1249,10 @@ update_memo_view (GnomeCalendar *gcal)
iso_start = isodate_from_time_t (start);
iso_end = isodate_from_time_t (end);
+ if (priv->memo_sexp) {
+ g_free (priv->memo_sexp);
+ }
+
priv->memo_sexp = g_strdup_printf ("(and (occur-in-time-range? (make-time \"%s\")"
" (make-time \"%s\"))"
" %s)",
@@ -1692,6 +1724,7 @@ gnome_calendar_init (GnomeCalendar *gcal)
priv->current_view_type = GNOME_CAL_DAY_VIEW;
priv->range_selected = FALSE;
+ priv->lview_select_daten_range = TRUE;
setup_config (gcal);
setup_widgets (gcal);
@@ -1997,7 +2030,10 @@ update_view_times (GnomeCalendar *gcal, time_t start_time)
model = e_calendar_view_get_model (priv->views[i]);
get_times_for_views (gcal, i, &real_start_time, &end_time);
- e_cal_model_set_time_range (model, real_start_time, end_time);
+ if (i == GNOME_CAL_LIST_VIEW && !priv->lview_select_daten_range)
+ continue;
+
+ e_cal_model_set_time_range (model, real_start_time, end_time);
}
}
@@ -2183,15 +2219,18 @@ display_view (GnomeCalendar *gcal, GnomeCalendarViewType view_type, gboolean gra
case GNOME_CAL_DAY_VIEW:
if (!priv->range_selected)
e_day_view_set_days_shown (E_DAY_VIEW (priv->day_view), 1);
-
+
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
break;
case GNOME_CAL_WORK_WEEK_VIEW:
preserve_day = TRUE;
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
break;
case GNOME_CAL_WEEK_VIEW:
preserve_day = TRUE;
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
break;
case GNOME_CAL_MONTH_VIEW:
@@ -2199,9 +2238,14 @@ display_view (GnomeCalendar *gcal, GnomeCalendarViewType view_type, gboolean gra
e_week_view_set_weeks_shown (E_WEEK_VIEW (priv->month_view), 6);
preserve_day = TRUE;
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
break;
case GNOME_CAL_LIST_VIEW:
+ if (!priv->lview_select_daten_range)
+ gtk_widget_hide (GTK_WIDGET (gcal->priv->date_navigator));
+ else
+ gtk_widget_show (GTK_WIDGET (gcal->priv->date_navigator));
break;
default:
@@ -2267,6 +2311,10 @@ display_view_cb (GalViewInstance *view_instance, GalView *view, gpointer data)
display_view (gcal, view_type, TRUE);
gnome_calendar_update_date_navigator (gcal);
gnome_calendar_notify_dates_shown_changed (gcal);
+
+ if (!priv->lview_select_daten_range && priv->current_view_type != GNOME_CAL_LIST_VIEW)
+ update_query (gcal);
+
}
/**
@@ -3255,6 +3303,9 @@ gnome_calendar_update_date_navigator (GnomeCalendar *gcal)
if (!GTK_WIDGET_VISIBLE (priv->date_navigator))
return;
+ if (priv->current_view_type == GNOME_CAL_LIST_VIEW && !priv->lview_select_daten_range)
+ return;
+
model = e_calendar_view_get_model (priv->views[priv->current_view_type]);
e_cal_model_get_time_range (model, &start, &end);