aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/calendar-model.c
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@ximian.com>2001-08-02 07:33:40 +0800
committerFederico Mena Quintero <federico@src.gnome.org>2001-08-02 07:33:40 +0800
commitddcc505dbf7893735bb02d971a6df1a411cdb646 (patch)
tree6835d6c9ffeb66ae10cb0e2e4e97857df11ead33 /calendar/gui/calendar-model.c
parent221856a80b5021398c6248f706b32e56c70c7ae6 (diff)
downloadgsoc2013-evolution-ddcc505dbf7893735bb02d971a6df1a411cdb646.tar.gz
gsoc2013-evolution-ddcc505dbf7893735bb02d971a6df1a411cdb646.tar.zst
gsoc2013-evolution-ddcc505dbf7893735bb02d971a6df1a411cdb646.zip
The calendar search bar widget now includes a drop-down menu of available
2001-08-01 Federico Mena Quintero <federico@ximian.com> The calendar search bar widget now includes a drop-down menu of available categories. * pcs/query.c (func_has_categories): Handle one and only one #f value as meaning "unfiled", for components that have no categories at all. * pcs/cal-backend-file.c (open_cal): Duh, do not notify here about changed categories since at this point we don't have any clients bound to us yet. (create_cal): Likewise. (cal_backend_file_add_cal): Notify here. * gui/cal-search-bar.h (CalSearchBarClass): New signal "category_changed". * gui/cal-search-bar.c (cal_search_bar_construct): Add a drop-down menu for the list of categories. (search_option_items): Removed the "Has category" option, since we now have the drop-down menu instad and it would be confusing to have both options. (regen_query): Likewise. Also, this function is now the old cal_search_bar_query_changed() and is shared by that very function and by the callback from the drop-down menu. (notify_query_contains): Include the sub-sexp for the categories. (cal_search_bar_set_categories): New function. (cal_search_bar_get_category): New function. (categories_selection_done_cb): Emit the "category_changed" signal. * gui/e-tasks.c (obj_updated_cb): Removed function since it did not do anything; all updates are handled by the CalendarModel. (obj_removed_cb): Likewise. (ETasksPrivate): Removed the fields for the categories option menu, since now it is in the ESearchBar. (search_bar_sexp_changed_cb): Use calendar_model_set_query() directly here, as we do not need to frob the sexp anymore. (update_query): Removed. (client_categories_changed_cb): New callback. (search_bar_category_changed_cb): New callback. (e_tasks_new_task): Set the default category on the component to the one that is selected in the search bar. (e_tasks_on_filter_selected): Removed. (e_tasks_on_categories_changed): Removed. (e_tasks_rebuild_categories_menu): Removed. (e_tasks_add_menu_item): Removed. (e_tasks_setup_view_menus): Sanitized not to sink objects wildly. (e_tasks_discard_view_menus): New function. * gui/calendar-model.h (CalendarModelClass): Removed the "categories_changed" signal since this is handled in the Wombat now. * gui/calendar-model.c (calendar_model_get_categories): Removed. (calendar_model_set_value_at): Do not collect the categories. (query_obj_updated_cb): Likewise. (calendar_model_collect_categories): Removed. (calendar_model_set_default_category): Constify. * gui/tasks-control.c (tasks_control_deactivate): Call e_tasks_discard_view_menus(). * gui/gnome-cal.c (search_bar_category_changed_cb): Set the default category for the task pad's model. svn path=/trunk/; revision=11559
Diffstat (limited to 'calendar/gui/calendar-model.c')
-rw-r--r--calendar/gui/calendar-model.c87
1 files changed, 1 insertions, 86 deletions
diff --git a/calendar/gui/calendar-model.c b/calendar/gui/calendar-model.c
index 0cdd97b7d6..b41c0d2519 100644
--- a/calendar/gui/calendar-model.c
+++ b/calendar/gui/calendar-model.c
@@ -69,20 +69,10 @@ struct _CalendarModelPrivate {
creating a new task. */
gchar *default_category;
- /* A balanced tree of the categories used by all the tasks/events. */
- GTree *categories;
-
/* The current timezone. */
icaltimezone *zone;
};
-enum {
- CATEGORIES_CHANGED,
- LAST_SIGNAL
-};
-
-static gint calendar_model_signals [LAST_SIGNAL] = { 0 };
-
static void calendar_model_class_init (CalendarModelClass *class);
@@ -104,8 +94,6 @@ static int remove_object (CalendarModel *model, const char *uid);
static void ensure_task_complete (CalComponent *comp,
time_t completed_date);
static void ensure_task_not_complete (CalComponent *comp);
-static gboolean calendar_model_collect_categories (CalendarModel *model,
- CalComponent *comp);
static ETableModelClass *parent_class;
@@ -155,17 +143,6 @@ calendar_model_class_init (CalendarModelClass *class)
parent_class = gtk_type_class (E_TABLE_MODEL_TYPE);
- calendar_model_signals [CATEGORIES_CHANGED] =
- gtk_signal_new ("categories-changed",
- GTK_RUN_LAST, object_class->type,
- GTK_SIGNAL_OFFSET (CalendarModelClass,
- categories_changed),
- gtk_signal_default_marshaller,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, calendar_model_signals,
- LAST_SIGNAL);
-
object_class->destroy = calendar_model_destroy;
etm_class->column_count = calendar_model_column_count;
@@ -179,8 +156,6 @@ calendar_model_class_init (CalendarModelClass *class)
etm_class->initialize_value = calendar_model_initialize_value;
etm_class->value_is_empty = calendar_model_value_is_empty;
etm_class->value_to_string = calendar_model_value_to_string;
-
- class->categories_changed = NULL;
}
/* Object initialization function for the calendar table model */
@@ -200,8 +175,6 @@ calendar_model_init (CalendarModel *model)
priv->new_comp_vtype = CAL_COMPONENT_EVENT;
priv->use_24_hour_format = TRUE;
- priv->categories = g_tree_new ((GCompareFunc)strcmp);
-
priv->zone = NULL;
}
@@ -285,12 +258,6 @@ calendar_model_destroy (GtkObject *object)
g_free (priv->default_category);
- /* We only need to free the first argument, the key, so g_free will do.
- */
- g_tree_traverse (priv->categories, (GTraverseFunc) g_free,
- G_PRE_ORDER, NULL);
- g_tree_destroy (priv->categories);
-
/* Free the private structure */
g_free (priv);
@@ -1338,10 +1305,6 @@ calendar_model_set_value_at (ETableModel *etm, int col, int row, const void *val
switch (col) {
case CAL_COMPONENT_FIELD_CATEGORIES:
set_categories (comp, value);
- if (calendar_model_collect_categories (model, comp)) {
- gtk_signal_emit (GTK_OBJECT (model),
- calendar_model_signals [CATEGORIES_CHANGED]);
- }
break;
case CAL_COMPONENT_FIELD_CLASSIFICATION:
@@ -1815,14 +1778,6 @@ query_obj_updated_cb (CalQuery *query, const char *uid,
e_table_model_row_changed (E_TABLE_MODEL (model), *new_idx);
}
- /* See if we need to add any categories. Note that old
- categories won't be removed, but I don't think that matters
- too much here. */
- if (calendar_model_collect_categories (model, new_comp)) {
- gtk_signal_emit (GTK_OBJECT (model),
- calendar_model_signals [CATEGORIES_CHANGED]);
- }
-
break;
case CAL_CLIENT_GET_NOT_FOUND:
@@ -2330,7 +2285,7 @@ calendar_model_set_use_24_hour_format (CalendarModel *model,
void
calendar_model_set_default_category (CalendarModel *model,
- gchar *default_category)
+ const char *default_category)
{
g_return_if_fail (IS_CALENDAR_MODEL (model));
@@ -2340,46 +2295,6 @@ calendar_model_set_default_category (CalendarModel *model,
-static gboolean
-calendar_model_collect_categories (CalendarModel *model,
- CalComponent *comp)
-{
- CalendarModelPrivate *priv;
- GSList *categories_list, *elem;
- gboolean changed = FALSE;
-
- priv = model->priv;
-
- cal_component_get_categories_list (comp, &categories_list);
-
- for (elem = categories_list; elem; elem = elem->next) {
- if (!g_tree_lookup (priv->categories, elem->data)) {
- /* We store a '1' as the data, just so we can use
- g_tree_lookup() on it. Note that we don't free
- the string since it is now part of the tree. */
- g_tree_insert (priv->categories, elem->data,
- GINT_TO_POINTER (1));
- changed = TRUE;
- } else {
- g_free (elem->data);
- }
- }
-
- g_slist_free (categories_list);
-
- return changed;
-}
-
-
-GTree*
-calendar_model_get_categories (CalendarModel *model)
-{
- g_return_val_if_fail (IS_CALENDAR_MODEL (model), NULL);
-
- return model->priv->categories;
-}
-
-
/* The current timezone. */
icaltimezone*
calendar_model_get_timezone (CalendarModel *model)