Change notifications for EClient's "readonly" property can come on any
thread. Our "notify::readonly" signal handler immediately updates the
model's editable status, which triggers GTK+ calls, which can crash the
application if we're not in the correct thread.
Connect instead to EClientCache's "client-notify" signal, which is
always emitted from EClientCache's dedicated main loop context, and
happens to be the same main loop context that GTK+ uses. It's also
less bookkeeping when the model's EBookClient gets replaced.
Registry can still be accessed through e_client_cache_ref_registry(),
but we'll want to utilize the client cache as well.
e_addressbook_model_new() now takes an EClientCache instead of an
ESourceRegistry, and e_addressbook_model_get_registry() is replaced
by e_addressbook_model_get_client_cache().
Asyncrhonously fetch all relevant EClient instances during instance
initialization to try and get them cached ahead of time, and so that
all status icons are present when the tree view is shown.
The results were postponed to show as long as there were new notifications
about added contacts, which could take quite long for many matched items.
This shows the results with smaller timeout and without postponing.
Append a tree view column to display a symbolic icon hinting at backend
status. Currently this only displays icons for online/offline and when
the backend dies. I'd also like to add a spinner icon to indicate when
we're processing a query and for other long-running activities.
Returns TRUE if an EClient instance for the given source and the value
of ESourceSelector's "extension-name" property was recently discarded
after having emitted a "backend-died" signal, and a replacement EClient
instance has not yet been created.
Returns TRUE if an EClient instance for the given source and extension
name was recently discarded after having emitted a "backend-died" signal,
and a replacement EClient instance has not yet been created.
WebKit deny in loading local URIs (file://...) when an HTML body is
constructed from a string, not from a local file, thus fix the URIs
into "evo-file://", which are passed into our request handlers,
which can load the local files.