static EAccountList *global_account_list;
static gboolean
account_has_source_url (EAccount *account)
{
return (account != NULL) &&
(account->enabled) &&
(account->source != NULL) &&
(account->source->url != NULL) &&
(account->source->url[0] != '\0');
}
static gboolean
account_has_transport_url (EAccount *account)
{
return (account != NULL) &&
(account->enabled) &&
(account->transport != NULL) &&
(account->transport->url != NULL) &&
(account->transport->url[0] != '\0');
}
/**
* e_get_account_list:
*
* Returns the global #EAccountList.
*
* Returns: the global #EAccountList
**/
EAccountList *
e_get_account_list (void)
{
if (G_UNLIKELY (global_account_list == NULL)) {
GConfClient *client;
client = gconf_client_get_default ();
global_account_list = e_account_list_new (client);
g_object_unref (client);
}
g_return_val_if_fail (global_account_list != NULL, NULL);
return global_account_list;
}
/**
* e_get_default_account:
*
* Returns the #EAccount marked as the default mail account.
*
* Returns: the default #EAccount
**/
EAccount *
e_get_default_account (void)
{
EAccountList *account_list;
const EAccount *account;
account_list = e_get_account_list ();
account = e_account_list_get_default (account_list);
/* XXX EAccountList misuses const. */
return (EAccount *) account;
}
/**
* e_set_default_account:
* @account: an #EAccount
*
* Marks @account as the default mail account.
**/
void
e_set_default_account (EAccount *account)
{
EAccountList *account_list;
g_return_if_fail (E_IS_ACCOUNT (account));
account_list = e_get_account_list ();
e_account_list_set_default (account_list, account);
}
/**
* e_get_account_by_name:
* @name: a mail account name
*
* Returns the #EAccount with the given name, or %NULL if no such
* account exists.
*
* Returns: an #EAccount having the given account name, or %NULL
**/
EAccount *
e_get_account_by_name (const gchar *name)
{
EAccountList *account_list;
const EAccount *account;
e_account_find_t find;
g_return_val_if_fail (name != NULL, NULL);
find = E_ACCOUNT_FIND_NAME;
account_list = e_get_account_list ();
account = e_account_list_find (account_list, find, name);
/* XXX EAccountList misuses const. */
return (EAccount *) account;
}
/**
* e_get_account_by_uid:
* @uid: a mail account UID
*
* Returns the #EAccount with the given unique ID, or %NULL if no such
* account exists.
*
* Returns: an #EAccount having the given unique ID, or %NULL
**/
EAccount *
e_get_account_by_uid (const gchar *uid)
{
EAccountList *account_list;
const EAccount *account;
e_account_find_t find;
g_return_val_if_fail (uid != NULL, NULL);
find = E_ACCOUNT_FIND_UID;
account_list = e_get_account_list ();
account = e_account_list_find (account_list, find, uid);
/* XXX EAccountList misuses const. */
return (EAccount *) account;
}
/**
* e_get_account_by_source_url:
* @source_url: a source URL
*
* Returns the #EAccount with the given source URL, or %NULL if no such
* account exists.
*
* Returns: an #EAccount having the given source URL, or %NULL
**/
EAccount *
e_get_account_by_source_url (const gchar *source_url)
{
EAccountList *account_list;
EAccount *account = NULL;
EIterator *iterator;
CamelProvider *provider;
CamelURL *source_curl;
g_return_val_if_fail (source_url != NULL, NULL);
source_curl = camel_url_new (source_url, NULL);
g_return_val_if_fail (source_curl != NULL, NULL);
provider = camel_provider_get (source_url, NULL);
g_return_val_if_fail (provider != NULL, NULL);
g_return_val_if_fail (provider->url_equal != NULL, NULL);
account_list = e_get_account_list ();
iterator = e_list_get_iterator (E_LIST (account_list));
while (account == NULL && e_iterator_is_valid (iterator)) {
EAccount *candidate;
CamelURL *curl;
/* XXX EIterator misuses const. */
candidate = (EAccount *) e_iterator_get (iterator);
e_iterator_next (iterator);
if (!account_has_source_url (candidate))
continue;
curl = camel_url_new (candidate->source->url, NULL);
if (curl == NULL)
continue;
if (provider->url_equal (curl, source_curl))
account = candidate;
camel_url_free (curl);
}
g_object_unref (iterator);
camel_url_free (source_curl);
return account;
}
/**
* e_get_account_by_transport_url:
* @transport_url: a transport URL
*
* Returns the #EAccount with the given transport URL, or %NULL if no
* such account exists.
*
* Returns: an #EAccount having the given transport URL, or %NULL
**/
EAccount *
e_get_account_by_transport_url (const gchar *transport_url)
{
EAccountList *account_list;
EAccount *account = NULL;
EIterator *iterator;
CamelProvider *provider;
CamelURL *transport_curl;
g_return_val_if_fail (transport_url != NULL, NULL);
transport_curl = camel_url_new (transport_url, NULL);
g_return_val_if_fail (transport_curl != NULL, NULL);
provider = camel_provider_get (transport_url, NULL);
g_return_val_if_fail (provider != NULL, NULL);
g_return_val_if_fail (provider->url_equal != NULL, NULL);
account_list = e_get_account_list ();
iterator = e_list_get_iterator (E_LIST (account_list));
while (account == NULL && e_iterator_is_valid (iterator)) {
EAccount *candidate;
CamelURL *curl;
/* XXX EIterator misuses const. */
candidate = (EAccount *) e_iterator_get (iterator);
e_iterator_next (iterator);
if (!account_has_transport_url (candidate))
continue;
curl = camel_url_new (candidate->transport->url, NULL);
if (curl == NULL)
continue;
if (provider->url_equal (curl, transport_curl))
account = candidate;
camel_url_free (curl);
}
g_object_unref (iterator);
camel_url_free (transport_curl);
return account;
}
/**
* e_get_any_enabled_account:
*
* Returns the default mail account if it's enabled, otherwise the first
* enabled mail account in the global #EAccountList, or finally %NULL if
* all mail accounts are disabled or none exist.
*
* Returns: an enabled #EAccount, or %NULL if there are none
**/
EAccount *
e_get_any_enabled_account (void)
{
EAccount *account;
EAccountList *account_list;
EIterator *iter;
account = e_get_default_account ();
if (account != NULL && account->enabled)
return account;
account = NULL;
account_list = e_get_account_list ();
iter = e_list_get_iterator (E_LIST (account_list));
while (e_iterator_is_valid (iter) && account == NULL) {
EAccount *candidate;
/* XXX EIterator misuses const. */
candidate = (EAccount *) e_iterator_get (iter);
if (candidate->enabled)
account = candidate;
else
e_iterator_next (iter);
}
g_object_unref (iter);
return account;
}
/**
* e_get_default_transport:
*
* Returns transport information for the default account if it's enabled and
* has transport information, or else from the first enabled mail account in
* the global #EAccountList that has transport information, or finally %NULL
* if no transport information could be found.
*
* Returns: an #EAccountService with transport info, or %NULL
**/
EAccountService *
e_get_default_transport (void)
{
EAccountList *account_list;
EAccount *account;
EIterator *iterator;
account = e_get_default_account ();
if (account_has_transport_url (account))
return account->transport;
account_list = e_get_account_list ();
iterator = e_list_get_iterator (E_LIST (account_list));
while (e_iterator_is_valid (iterator)) {
/* XXX EIterator misuses const. */
account = (EAccount *) e_iterator_get (iterator);
if (account_has_transport_url (account)) {
g_object_unref (iterator);
return account->transport;
}
e_iterator_next (iterator);
}
g_object_unref (iterator);
return NULL;
}
/**
* e_get_subscribable_accounts:
* @session: a #CamelSession
*
* Returns a list of enabled accounts that support folder subscriptions.
* The #EAccount objects are not referenced, but the list itself should
* be should be freed with g_list_free().
*
* Returns: a list of #EAccount objects
**/
GList *
e_get_subscribable_accounts (CamelSession *session)
{
EAccountList *account_list;
EAccount *account;
EIterator *iterator;
GList *subscribable = NULL;
g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL);
account_list = e_get_account_list ();
iterator = e_list_get_iterator (E_LIST (account_list));
while (e_iterator_is_valid (iterator)) {
CamelStore *store = NULL;
/* XXX EIterator misuses const. */
account = (EAccount *) e_iterator_get (iterator);
if (account->enabled) {
const gchar *url;
url = e_account_get_string (
account, E_ACCOUNT_SOURCE_URL);
store = (CamelStore *) camel_session_get_service (
session, url, CAMEL_PROVIDER_STORE, NULL);
}
e_iterator_next (iterator);
if (store == NULL)
continue;
if (!camel_store_supports_subscriptions (store))
continue;
subscribable = g_list_prepend (subscribable, account);
}
g_object_unref (iterator);
return g_list_reverse (subscribable);
}
cies, categories v, w, x, y, and z.mat | 2016-04-01 | 1 | -3/+3 |
* | Convert all p5-Test-use-ok dependencies to p5-Test-Simple, but only on | adamw | 2015-06-25 | 1 | -2/+7 |
* | Change my non-FreeBSD MAINTAINER mail to bofh@ | bofh | 2014-12-24 | 1 | -1/+1 |
* | Change the way Perl modules are installed, update the default Perl to 5.18. | mat | 2014-11-26 | 2 | -10/+1 |
* | - Add LICENSE | sunpoet | 2014-04-06 | 2 | -3/+7 |
* | support STAGEDIR. | vanilla | 2013-11-07 | 2 | -8/+6 |
* | Add NO_STAGE all over the place in preparation for the staging support (cat: ... | bapt | 2013-09-21 | 1 | -0/+1 |
* | - Convert to new perl framework | az | 2013-08-03 | 1 | -1/+2 |
* | - Reassign to the heap at maintainer's request | tabthorpe | 2012-10-01 | 1 | -6/+2 |
* | - Add TEST_DEPENDS | swills | 2012-04-10 | 1 | -0/+1 |
* | At the moment 1385 ports use BUILD_DEPENDS= ${RUN_DEPENDS} and 450 | eadler | 2012-01-22 | 1 | -1/+1 |
* | - Change PERL_CONFIGURE to "yes" for all values between 5.8.1+ and 5.8.9+ | sunpoet | 2011-09-17 | 1 | -1/+1 |
* | - Get Rid MD5 support | miwi | 2011-03-19 |