search-view: run the search when the sources changes

This commit is contained in:
Georges Basile Stavracas Neto
2015-01-09 09:16:42 -05:00
committed by Erick Pérez Castellanos
parent f0c126b0ee
commit 37566a435e
+42
View File
@@ -44,6 +44,8 @@ typedef struct
/* misc */
gint no_results_timeout_id;
gint num_results;
gchar *field;
gchar *query;
/* property */
icaltimetype *date;
@@ -92,6 +94,15 @@ static void display_header_func (GtkListBoxRow
GtkListBoxRow *before,
gpointer user_data);
static void source_added (GcalManager *manager,
ESource *source,
gboolean enable,
gpointer user_data);
static void source_removed (GcalManager *manager,
ESource *source,
gpointer user_data);
static void gcal_data_model_subscriber_interface_init (ECalDataModelSubscriberInterface *iface);
static void gcal_search_view_constructed (GObject *object);
@@ -430,6 +441,26 @@ display_header_func (GtkListBoxRow *row,
}
}
static void
source_added (GcalManager *manager,
ESource *source,
gboolean enable,
gpointer user_data)
{
GcalSearchViewPrivate *priv;
priv = gcal_search_view_get_instance_private (GCAL_SEARCH_VIEW (user_data));
gcal_search_view_search (GCAL_SEARCH_VIEW (user_data), priv->field, priv->query);
}
static void
source_removed (GcalManager *manager,
ESource *source,
gpointer user_data)
{
source_added (manager, source, FALSE, user_data);
}
static void
gcal_search_view_class_init (GcalSearchViewClass *klass)
{
@@ -552,6 +583,9 @@ gcal_search_view_set_property (GObject *object,
case PROP_MANAGER:
{
priv->manager = g_value_get_pointer (value);
g_signal_connect (priv->manager, "source-added", G_CALLBACK (source_added), object);
g_signal_connect (priv->manager, "source-activated", G_CALLBACK (source_added), object);
g_signal_connect (priv->manager, "source-removed", G_CALLBACK (source_removed), object);
break;
}
default:
@@ -747,6 +781,14 @@ gcal_search_view_search (GcalSearchView *view,
priv = gcal_search_view_get_instance_private (view);
if (priv->query != NULL)
g_free (priv->query);
if (priv->field != NULL)
g_free (priv->field);
priv->query = g_strdup (query);
priv->field = g_strdup (field);
/* Only perform search on valid non-empty strings */
if (query && g_utf8_strlen (query, -1) > 0)
{