manager: Toggle data model sources when changed

Instead of other classes needing to manually set and
unset whether a source is registered in the data model,
we can now simply call GcalCalendar.set_visible() and
have the model be updated for us.
This commit is contained in:
Georges Basile Stavracas Neto
2019-05-04 12:05:39 -03:00
parent fd3d2ea3f6
commit 2ef1cbc463
+21 -2
View File
@@ -182,8 +182,27 @@ source_changed (GcalManager *self,
calendar = g_hash_table_lookup (self->clients, source);
if (calendar)
g_signal_emit (self, signals[CALENDAR_CHANGED], 0, calendar);
if (!calendar)
GCAL_RETURN ();
if (gcal_calendar_get_visible (calendar))
{
ECalClient *client = gcal_calendar_get_client (calendar);
e_cal_data_model_add_client (self->e_data_model, client);
if (self->shell_search_data_model)
e_cal_data_model_add_client (self->shell_search_data_model, client);
}
else
{
const gchar *id = gcal_calendar_get_id (calendar);
e_cal_data_model_remove_client (self->e_data_model, id);
if (self->shell_search_data_model)
e_cal_data_model_remove_client (self->shell_search_data_model, id);
}
g_signal_emit (self, signals[CALENDAR_CHANGED], 0, calendar);
GCAL_EXIT;
}