/** * Fills the treelist with accounts, should be called whenever the account * list is modified. */ static void account_store_fill() { g_return_if_fail(account_list_dialog != NULL); gtk_list_store_clear(account_store); // IP2IP account must be first account_t *ip2ip = account_list_get_by_id(IP2IP_PROFILE); g_return_if_fail(ip2ip != NULL); ip2ip->state = ACCOUNT_STATE_IP2IP_READY; GtkTreeIter iter; gtk_list_store_append(account_store, &iter); account_store_add(&iter, ip2ip); for (size_t i = 0; i < account_list_get_size(); ++i) { account_t *a = account_list_get_nth(i); g_return_if_fail(a != NULL); // we don't want to process the IP2IP twice if (a != ip2ip) { gtk_list_store_append(account_store, &iter); account_store_add(&iter, a); } } }
guint account_list_get_registered_accounts(void) { guint res = 0; for (guint i = 0; i < account_list_get_size(); i++) if (account_list_get_nth(i)->state == (ACCOUNT_STATE_REGISTERED)) res++; return res; }
static guint account_list_get_position(account_t *account) { guint size = account_list_get_size(); for (guint i = 0; i < size; i++) { account_t *tmp = account_list_get_nth(i); if (utf8_case_equal(tmp->accountID, account->accountID)) return i; } // Not found return -1; }
gchar * account_list_get_ordered_list(void) { gchar *order = strdup(""); for (guint i = 0; i < account_list_get_size(); i++) { account_t * account = account_list_get_nth(i); if (account) { gchar *new_order = g_strconcat(order, account->accountID, "/", NULL); g_free(order); order = new_order; } } return order; }