| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Evolution could crash when changing message view, like when
toggling Show Deleted messages. This effectively reverts
the previous commit and propagates the same changes further
in the code.
|
| |
|
|
|
|
|
|
|
| |
Remove EMailTagEditor's "use-24-hour-format" and "week-start-day"
properties, which were being used to manually configure its internal
EDateEdit instance. This is unnecessary since all EDateEdit instances
are automatically configured by the ESettingsDateEdit extension.
|
|
|
|
|
|
| |
ESourceCollection's default backend name is "none". Unfortunately so
is CamelNullStore's provider name. Make sure these two misfits don't
get paired up!
|
|
|
|
| |
No longer needed, since the resources it frees are no longer used.
|
|
|
|
|
| |
Use e_mail_ui_session_check_known_address_sync() to help determine
whether to automatically display images in a text/html MIME part.
|
|
|
|
|
| |
Have the new handler call e_mail_ui_session_check_known_address_sync()
instead of em_utils_in_addressbook().
|
|
|
|
|
|
|
|
|
|
|
| |
Replaces em_utils_in_addressbook().
Foregos any address caching since any such cache would likely not be
updated properly as contacts are added and removed and would lead to
incorrect results.
An asynchronous variation of this function can be easily added at some
future date should a need arise.
|
|
|
|
| |
Use e_photo_cache_remove() instead of emu_remove_from_mail_cache_1().
|
|
|
|
| |
EPhotoCache already handles this setting.
|
| |
|
|
|
|
|
|
| |
New functions:
e_mail_ui_session_get_photo_cache()
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
GTK+ uses (G_PRIORITY_HIGH_IDLE + 20) for redrawing operations, which is
actually a slightly lower priority than G_PRIORITY_HIGH_IDLE. Therefore
for our purpose, G_PRIORITY_HIGH_IDLE is sufficient.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
This reverts commit 2b507716b257e6ef98dae8463180dbe718eb7b64.
The commit contains not a single comment as to why these custom priority
values are being used. The rationale needs to be documented in the code,
either at each call point or preferrably at a centralized priority value
definition.
|
| |
|
|
|
|
|
|
| |
Use "goa-panel" for GOA, "credentials-preferences" for UOA.
Also move the icon before the account name. Looks better.
|
|
|
|
|
| |
Where we make exceptions for GNOME Online Accounts, so too shall we for
Ubuntu Online Accounts.
|
|
|
|
| |
Instead of e_client_utils_open_new() and e_book_client_new().
|
| |
|
| |
|
|
|
|
|
|
|
| |
Might be the final change for this bug, the two previous commits
were not using the right approach, causing regression in rendering
of text/* parts which were not named in the list of excluded content
types for a 'raw' formatting.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Using gtk_box_new() instead of gtk_vbox_new() changes the way child
widgets are packed by default via gtk_container_add(). gtk_vbox_new()
expands them by default, gtk_box_new() does not, and the preview pane
was being packed with gtk_container_add().
Packing widgets into a GtkBox with gtk_container_add() is usually the
wrong way. Use gtk_box_pack_start() instead, with expand=TRUE.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In e_mail_config_service_page_auto_configre(), we do detect that only
POP3 is available for MSN accounts and switch to the appropriate service
backend.
The problem was with the hack I added awhile back to momentarily skip to
the Receiving page just before skipping to the Summary page, so clicking
"Go Back" from the Summary page would return to the Receiving page.
That momentary skip triggered mail_config_assistant_prepare() on the
Receiving page, which then triggered e_mail_config_page_setup_defaults()
since the Receiving page was not yet in the visited pages hash table.
The Receiving page's setup_defaults() method reset the service backend
to IMAPX, which is the correct thing to do when not auto-configured.
The solution is add the Receiving page to the visited pages hash table
after a successful auto-configuration, but just BEFORE we momentarily
skip to it. This tricks mail_config_assistant_prepare() into thinking
the page was already visited, and it skips setting up defaults for it.
Also added the Sending page to visited pages, just for consistency.
|
| |
|
|
|
|
|
| |
Clean up resulting deprecation warnings, which were all related to
GtkOrientable consolidation (e.g. gtk_hbox_new() -> gtk_box_new()).
|
| |
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
Keep the EMailUISession define its own implementation of
CamelSession::alert_user(). It's good for couple reasons:
a) dialog is shown above Evolution itself (has parent)
b) info dialogs are shown in an alert bar
|
| |
|
|
|
|
|
|
|
| |
e_shell_backend_get_data_dir() already creates the user's data directory
for mail, so there's no need to try and create the directory again.
This eliminates the only usage of the E_SHELL_MIGRATE_ERROR domain.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Evolution consists of entirely too many small utility libraries, which
increases linking and loading time, places a burden on higher layers of
the application (e.g. modules) which has to remember to link to all the
small in-tree utility libraries, and makes it difficult to generate API
documentation for these utility libraries in one Gtk-Doc module.
Merge the following utility libraries under the umbrella of libeutil,
and enforce a single-include policy on libeutil so we can reorganize
the files as desired without disrupting its pseudo-public API.
libemail-utils/libemail-utils.la
libevolution-utils/libevolution-utils.la
filter/libfilter.la
widgets/e-timezone-dialog/libetimezonedialog.la
widgets/menus/libmenus.la
widgets/misc/libemiscwidgets.la
widgets/table/libetable.la
widgets/text/libetext.la
This also merges libedataserverui from the Evolution-Data-Server module,
since Evolution is its only consumer nowadays, and I'd like to make some
improvements to those APIs without concern for backward-compatibility.
And finally, start a Gtk-Doc module for libeutil. It's going to be a
project just getting all the symbols _listed_ much less _documented_.
But the skeletal structure is in place and I'm off to a good start.
|
|
|
|
|
|
| |
Exposing data members in the public struct is unwise, especially when
EMailPartList is used from multiple threads. Instead keep the members
private and provide a set of thread-safe functions to manipulate them.
|
|
|
|
|
| |
Replace the individual components of an EMailPartList with a reference
on the EMailPartList itself in EMailFormatContext. Easier to manage.
|
| |
|
| |
|
|
|
|
| |
Use the existing AsyncContext struct instead of defining a new struct.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Use gdk_window_get_device_position() instead.
|
|
|
|
| |
Use gtk_scrollable_get_vadjustment() instead.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This fixes three things:
a) mail_display_resource_requested() was leaking file handles on downloaded images
b) it's not necessary to open files, it's enough to test whether file exists
c) mail_display_button_press_event() used incorrect key for "http" cache
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If we get a hit from the online database, parse the XML immediately and
store the results in generic internal structs. Then when we're given an
ESource to populate we can feed it the stored results instead of parsing
the XML on demand (and repeatedly).
What this is really doing is making room for other auto-configuration
methods besides the online database lookup.
|
| |
|
|
|
|
|
|
| |
Use g_resolver_lookup_records() instead of parsing binary DNS records
ourselves (yuck!). Also, realized what we really want are NS records
not MX records. We just want the name server for a given domain.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After providing a name and email address on the Identity page, the user
clicks Forward and auto-configuration runs. If successful, it jumps to
the Account Summary page showing a table of auto-configured settings.
If the user wants to go back and revise auto-configured settings, he
would click Go Back to return to the Identity Page, then click Forward
again to go to Receiving Email (since auto-coniguration only runs once).
But this is confusing. It's not clear that clicking Forward from the
Identity Page will behave differently after auto-configuration has run.
Instead, clicking Go Back from the Summary Page after auto-configuration
should return to the Receiving Email page where IMAP/POP settings can be
modified.
This behavior combined with the GtkAssistant navigation sidebar should
hopefully make it less confusing.
|
|
|
|
| |
Based on my initial patch in https://bugzilla.gnome.org/678615.
|
|
|
|
|
|
|
| |
The GVFS HTTP backend seems to just hang forever when an I/O operation
is cancelled. Use libsoup instead.
See also: https://bugzilla.gnome.org/678615
|
|
|
|
|
|
| |
This reverts commit 039c29c112179ad92233f0a85b7332ad2f2dd373.
Auto-configuration should instead be cancellable from the progress page.
|
| |
|
| |
|
|
|
|
| |
soup_message_headers_get_list()
|
| |
|
|
|
|
|
| |
GtkSizeGroup::ignore-hidden is broken, or so I'm told in the discussion
on https://bugzilla.gnome.org/show_bug.cgi?id=677609. Leave it FALSE.
|
|
|
|
|
| |
Hide the account name and email address fields when editing an Evolution
account linked to a GNOME Online Account.
|
|
|
|
| |
Allows the Email Address field to be hidden.
|
| |
|
|
|
|
|
| |
Prefer e_source_registry_check_enabled() over e_source_get_enabled()
for most instances where we want to exclude disabled data sources.
|
|
|
|
|
|
| |
Follow-up fixes:
a) don't copy to origin folder for forwarded messages
b) use a real folder when reply/forward from a vFolder
|
|
|
|
| |
GOA-based accounts must only be disabled from gnome-control-center.
|
| |
|
|
|
|
|
|
| |
This reverts commit 7050a12868252cf6254620cd27dcb6832851040d.
Incomplete solution, renders Bugzilla mails unreadable.
|
|
|
|
|
|
|
|
| |
It's for cases when message UID contains letters which are supposed
to be encoded, like "<>" in NNTP message UIDs. Without the decode
the message preview is left empty and only console shows a runtime
critical warning:
handle_mail_request: assertion `part_list != NULL' failed
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both EWebView and EMailDisplay listen for "changed" signals from a
GSettings instance, passing itself as the 'user_data' to the signal
handler e_web_view_update_fonts(). But in both cases the signal
handler was left connected after EWebView and EMailDisplay were
finalized, resulting in the signal handler receiving a dangling pointer.
Not using g_signal_connect_object() here because of the unresolved
reference leak issue in GObject. The GSettings instance is likely
cached internally and lives well beyond EWebView and EMailDisplay.
|
| |
|
|
|
|
|
|
| |
Word-wrapped GtkLabels and GtkTables just don't seem to get along.
The vertical allocation for the GtkLabel was way too big. Replace
the GtkTable with a GtkGrid.
|
|
|
|
|
|
|
|
|
|
| |
Fix deadlock in EHttpRequest by running each libsoup operation in
it's own GMainContext.
The patch also replaces use of features from libsoup>=2.39, because
we can't change dependency. The code is based on code from CalDAV,
which uses synchronous libsoup API as well and works with
libsoup<2.39
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This time because Prefer-plain could hide text/html part, which resulted
in no text shown in the reply.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
If a folder's display name is not available in the folder tree model for
some reason, return the raw folder path rather than NULL. This silences
a runtime warning in the mail-notification plugin.
This feels like a Band-Aid for a deeper issue -- perhaps we're racing
the folder tree model? Might be better to just fetch the CamelFolder
asynchronously and get the folder's display name directly.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Simplify the EHttpRequest by using synchronous libsoup API instead
of spawning another async operation within already asynchronous handler.
This avoids nested event loop, complex locking and makes to code much
simpler.
|
| |
|
| |
|
|
|
|
|
|
| |
Asynchronous + synchronous convenience functions.
Uses the EMailLocalFolder enumeration to specify a well-known folder.
|
|
|
|
|
|
| |
camel_service_get_settings() is now camel_service_ref_settings()
and it returns a new CamelSettings reference which the caller must
release with g_object_unref().
|
|
|
|
|
|
|
|
|
|
|
|
| |
These functions now return new references:
camel_session_add_service()
camel_session_list_services()
These functions have been renamed and also return new references:
camel_session_get_service() -> camel_session_ref_service()
camel_session_get_service_by_url() -> camel_session_ref_service_by_url()
|
|
|
|
|
|
| |
This was another MeeGo feature. MeeGo is dead, the code is starting to
bit rot and crashes on startup, the original author disappeared and the
remaining developers are not interested in maintaining it. So it's out.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Invoke the mbox-to-Maildir conversion directly from main(), just
before the call to e_shell_load_modules().
The reason the code is here and not in the mail module is because
we inform the user at startup of the impending mail conversion by
displaying a popup dialog and waiting for confirmation.
This has to be done before we load modules because some of the
EShellBackends immediately add GMainContext sources that would
otherwise get dispatched during gtk_dialog_run(), and we don't
want then dispatched until after the conversion is complete.
|
| |
|
|
|
|
|
|
| |
This is leftover from the WebKit port and it didn't work
properly. Most of the code was removed, some was moved
to a better place.
|
|
|
|
|
|
| |
The ESourceCamel extension owns the CamelSettings instance and the
ESource instance owns the ESourceCamel extension. Unreference the
ESource AFTER we're done with the CamelSettings.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
JavaScript is disabled in EWebView, so any attempt to evaluate
a JavaScript code will fail. We are using DOM bindings
instead to interact with the document.
This commit removes some helper functions created in the early
days of WebKit port which are not used anymore and also fixes
mail-to-task plugin, which was relying on some JavaScript.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverses the removal of the "Mark messages as read" preference in
commit e7247d6d60336861ed5c0ba05dd64e29f728349c.
I apparently misjudged the popularity of this preference, as there's
been a surprising amout of backlash and confusion as to its removal on
the mailing list, IRC channel, and various distro-support forums.
So, "mea culpa" for removing that one. Haven't heard a peep about the
other removed preferences, however, so they will stay gone.
|
| |
|
|
|
|
|
|
|
| |
This is reverting previous patch for this bug and fixes it with
a different approach. The previous patch had regression, instead
of freezing evolution on quit it crashed it when there was pending
addressbook lookups.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The "modal" attribute is ignored nowadays anyway, but these should have
never been modal to begin with.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Use "system:simple-info/warning/error" errors instead.
|
|
|
|
|
|
|
|
|
|
| |
This adds 'Format as' submenu to the preview pane context menu.
The submenu is available only for text/plain parts or parts
with a source code (we support about 40 various types). Using
the 'highlight' utility, the formatter processes the part and
highlights the source code it contains.
(discussion in bug #680026)
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Put status messages in the progress bar and put the progress bar beneath
the account description so the description has more room to stretch out.
Various other subtle tweaks.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This method is meant for pages that show server-side settings instead of
client-side settings stored in key files. It's called after all scratch
sources have been successfully submitted to the D-Bus service.
The driving use case for this is evolution-ews's "Out of Office" page,
which is only shown by EMailConfigNotebook and so that's currently the
only place where submit() is invoked for all pages.
Should a need arise for EMailConfigAssistant to also invoke submit()
for all pages, then EMailConfigNotebook can be used as a reference.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Disabling the mail part of an online account through the Control Center
panel will now remove the CamelService from the EMailSession in addition
to disabling the account/identity/transport ESources, causing it to be
delisted from the account list in Preferences.
Furthermore, hide the Enabled check box for accounts linked to GOA in
Preferences. The collection ESource for these accounts can no longer
be disabled through Evolution; all such account manipulation must be
done through the Control Center panel.
Lastly, display an icon next to accounts linked to GOA in Preferences.
* Might be nice to show the actual provider icon instead of the generic
Online Accounts icon from the Control Center, but need to think about
how best to do that. Don't want a GOA dependency in core Evolution.
Maybe ESourceCollection should grow a GIcon property for the online-
accounts module in the registry service to set?
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Removes e_mail_config_provider_page_new_activity().
Use e_mail_config_activity_page_new_activity() instead.
|
|
|
|
|
|
| |
Removes e_mail_config_service_page_new_activity().
Use e_mail_config_activity_page_new_activity() instead.
|
|
|
|
|
|
|
| |
This is a convenient base class for EMailConfigPages that might need
to run an asynchronous method and display an error message. It adds
activity and alert bars to the bottom of the page, it implements the
EAlertSink interface, and can create new EActivity instances.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The function blocks, lacks a "sync" suffix and GCancellable and GError
arguments. Not fit for use. Kill it.
|
|
|
|
| |
Fetches the CamelFolder asynchronously, then expunges it asynchronously.
|
|
|
|
|
| |
Wraps e_mail_folder_expunge() with EActivity/EAlert stuff and also
prompt for confirmation.
|
| |
|
|
|
|
| |
Use e_mail_reader_refresh_folder() instead.
|
|
|
|
| |
Fetches the CamelFolder asynchronously, then refreshes it asynchronously.
|
|
|
|
| |
To replace mail_refresh_folder().
|
|
|
|
| |
Replaces e_mail_session_unsubscribe_folder().
|
|
|
|
| |
Fetches the CamelFolder asynchronously, then deletes it asynchronously.
|
|
|
|
|
|
|
| |
em_folder_tree_get_selected_folder() currently blocks, and I'm about to
remove the function. But there's a couple places where we just need to
block for now, else it would require a significant rewrite. So execute
the em_folder_tree_get_selected_folder() logic manually in those places.
|
| |
|
| |
|
| |
|
|
|
|
| |
compare_folder_name() -> equal_folder_name()
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will force Evolution to reconnect to the service using the current
settings. However this is not a complete solution. If the new settings
now point to a completely different mail account, we leave behind cached
messages and database tables from the previous account such that you end
up with some weird hybrid of the previous account and current account.
I guess for now the answer is "don't do that", but we should try to
handle that more gracefully in the future -- more for architectural
correctness than it being a common real world use case.
|
|
|
|
|
|
|
| |
Emitted after all changes are successfully committed over D-Bus.
Can connect to this signal to perform followup actions, such as
disconnecting the corresponding CamelService.
|
|
|
|
|
|
|
|
|
|
| |
This function removed a CamelStore from EMFolderTreeModel and then added
it again in response to the corresponding ESource emitting a "changed"
signal (presumably from editing a mail account and saving changes).
In the past this was the only way for changes to the account URI string
to take effect without restarting Evolution. But we have CamelSettings
now and don't need this hack anymore. Time for it to die.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Openning the Preferences dialog for the first time causes many
property bindings to be created. GLib emits a lot of ::notify signals
during this, one of them being about image-loading-policy.
We now correctly check, whether the change was to allow loading
images, or not (and we don't display them in that case).
Finaly, e_mail_display_reload() will always schedule the action via
g_idle_add() so that we can merge plenty of _reload() calls caused by
the afformentioned ::notify emitions into single call when all the noise
is over.
|
| |
|
| |
|
| |
|
|
|
|
| |
G_DEFINE_TYPE macros define a static "parent_class" variable.
|
| |
|
|
|
|
| |
It's redundant. Just set the display name on one of the ESources.
|
|
|
|
|
| |
Reworked part of commit cc55cf3e686ad873cb14129f48d06f83ecc97e68,
which caused a bunch of runtime warnings.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Shortens the Message menu a little for low screen resolutions.
|
| |
|
| |
|
|
|
|
| |
camel_data_cache_get_filename() dropped its unused GError parameter.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove mail_folder_cache_service_added() and rely instead on
mail_folder_cache_service_enabled()/disabled(). Despite the function
names the folder cache doesn't actually care about enabled status, it
simply maintains a set of CamelStores to monitor. We should refactor
the folder cache API to better reflect that.
EMailAccountStore always immediately follows a "service-added" signal
emission with either a "service-enabled" or "service-disabled" emission,
which will add or remove the service from the folder cache.
|
| |
|
| |
|
|
|
|
|
| |
EMailAccountStore was not keeping MailFolderCache informed about
added, removed, enabled, or disabled CamelServices.
|
| |
|
| |
|
|
|
|
|
| |
We have built-in ESources for the 'local' and 'vfolder' mail stores,
and can now track their enabled state as we would any other mail store.
|
| |
|
|
|
|
|
|
|
|
|
| |
The new formatter was ignoring selected headers, always displaying
only From, To, Subject and Date (default headers).
Handling of the currently displayed headers has been moved to
EMailConfigFormatHTML extension, because it is related to
configuration of EMailFormatter, rather then EMailReader.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
If the mail account is part of a collection of sources, we want to read
the enabled state from the top-level "collection" source instead of the
mail account source.
Addendum: Same deal in mail_ui_session_source_changed_cb().
|
| |
|
|
|
|
|
|
| |
If the mail account is part of a collection of sources, we want to
enable or disable the top-level "collection" source instead of the
mail account source.
|
|
|
|
|
|
|
|
| |
All mail-parsing and formatting code has been moved to em-format.
Parsing is handeled by EMailParser class, formatting by EMailFormatter.
Both classes have registry which hold extensions - simple classes
that do actual parsing and formatting. Each supported mime-type
has it's own parser and formatter extension class.
|
|
|
|
|
|
| |
We're using version 1.1 of Mozilla's ClientConfig format now. These
files are all version 1.0. But even aside from that, offline autoconfig
is not compelling enough to warrant maintaining two copies of this data.
|
|
|
|
| |
Obsoleted by EMailAutoconfig.
|
| |
|
| |
|
| |
|
|
|
|
| |
This reverts commit 61a15e4d9dd303c23b6e44af9d084e3f3c609192.
|
|
|
|
| |
One last time.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Fix oal_selected and oab_offline properties for EWS, and account_uid for
ActiveSync.
|
|
|
|
|
|
| |
em_utils_connect_service_sync() and em_utils_disconnect_service_sync()
are no longer needed. CamelService itself now effectively does what
these functions were doing.
|
| |
|
| |
|