That's the worst idea for many reasons, couple examples:
- password prompts after evolution's run for disabled (in selector) sources
- too much unnecessary network I/O (most remote backends runs sync on open)
- doesn't do what user told it to do (Unselected means unselected. Dot.)
- unable to debug anything in factories when it misbehaves this way
Next time ask peers, users and usability experts for their opinion, before doing such decision.
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.
EClientSelector extends the functionality of ESourceSelector by
utilizing an EClientCache to display status information about the
backends associated with the displayed data sources.
(No backend status is displayed just yet, but that's the plan.)
Changed my mind. There's some scenarios where a function depends on an
ESourceRegistry but could also utilize an EClientCache, and it would be
nice to just pass the EClientCache and extract the ESourceRegistry from
it, so we need to make sure the ESourceRegistry will be there when it's
needed and not quietly disappear.
New class to help reduce code duplication and centralize some EClient
handling policies.
Benefits:
- EClient instances can be shared across the entire application.
- Centralized rebroadcasting of "backend-died" and "backend-error"
signals emitted from cached EClient instances.
- Automatic cache invalidation when backends crash. The EClient
is discarded, and a new instance is created on the next request.
g_hash_table_add(table, key) uses less memory than
g_hash_table_insert(table, key, GINT_TO_POINTER (1)).
Also use g_hash_table_contains() when testing for membership.
e_config_add_skip_check()
e_config_class_remove_factory()
e_config_create_window()
e_config_page_get()
e_config_page_next()
e_config_page_prev()
e_config_set_page_is_finish()
Also remove E_CONFIG_ASSISTANT and all the assistant support therein.
Move the supporting widgets for the contact maps feature alongside
EABContactDisplay. Removing them from libeutil helps isolate our usage
of libchamplain so it's not imposed on the entire application, and even
3rd party software. That libchamplain is an optional dependency only
further complicates the matter.
Ideally I'd like to somehow isolate this feature in an extension module,
but we currently lack sufficient hooks for such an extension. So this
arrangement will have to suffice for now.