aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-account-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/e-mail-account-store.c')
-rw-r--r--mail/e-mail-account-store.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/mail/e-mail-account-store.c b/mail/e-mail-account-store.c
index a78034aee5..9c777b5c6b 100644
--- a/mail/e-mail-account-store.c
+++ b/mail/e-mail-account-store.c
@@ -1365,6 +1365,47 @@ e_mail_account_store_queue_enabled_services (EMailAccountStore *store,
}
}
+gboolean
+e_mail_account_store_have_enabled_service (EMailAccountStore *store,
+ GType service_type)
+{
+ GtkTreeModel *tree_model;
+ GtkTreeIter iter;
+ gboolean iter_set;
+ gint column;
+ gboolean found = FALSE;
+
+ g_return_val_if_fail (E_IS_MAIL_ACCOUNT_STORE (store), FALSE);
+
+ tree_model = GTK_TREE_MODEL (store);
+
+ iter_set = gtk_tree_model_get_iter_first (tree_model, &iter);
+
+ while (iter_set && !found) {
+ GValue value = G_VALUE_INIT;
+ gboolean enabled;
+
+ column = E_MAIL_ACCOUNT_STORE_COLUMN_ENABLED;
+ gtk_tree_model_get_value (tree_model, &iter, column, &value);
+ enabled = g_value_get_boolean (&value);
+ g_value_unset (&value);
+
+ if (enabled) {
+ CamelService *service;
+
+ column = E_MAIL_ACCOUNT_STORE_COLUMN_SERVICE;
+ gtk_tree_model_get_value (tree_model, &iter, column, &value);
+ service = g_value_get_object (&value);
+ found = service && G_TYPE_CHECK_INSTANCE_TYPE (service, service_type);
+ g_value_unset (&value);
+ }
+
+ iter_set = gtk_tree_model_iter_next (tree_model, &iter);
+ }
+
+ return found;
+}
+
void
e_mail_account_store_reorder_services (EMailAccountStore *store,
GQueue *ordered_services)