static void account_created_cb (McAccountMonitor *mon, gchar *account_name, EmpathyAccountManager *manager) { McAccount *account; EmpathyAccountManagerPriv *priv = GET_PRIV (manager); TpConnectionStatus initial_status; account = mc_account_lookup (account_name); if (account) { AccountData *data; data = account_data_new_default (priv->mc, account); g_hash_table_insert (priv->accounts, g_object_ref (account), data); initial_status = mission_control_get_connection_status (priv->mc, account, NULL); if (initial_status == TP_CONNECTION_STATUS_CONNECTED) priv->connected++; else if (initial_status == TP_CONNECTION_STATUS_CONNECTING) priv->connecting++; account_manager_update_connection (manager, data, account); g_signal_emit (manager, signals[ACCOUNT_CREATED], 0, account); g_object_unref (account); } }
static AccountData * account_data_new_default (MissionControl *mc, McAccount *account) { McPresence actual_p; TpConnectionStatus actual_c; GError *err = NULL; actual_p = mission_control_get_presence_actual (mc, &err); if (err != NULL) { actual_p = MC_PRESENCE_UNSET; g_clear_error (&err); } actual_c = mission_control_get_connection_status (mc, account, &err); if (err != NULL) { actual_c = TP_CONNECTION_STATUS_DISCONNECTED; g_error_free (err); } return account_data_new (actual_p, actual_c, mc_account_is_enabled (account)); }
gboolean empathy_account_chooser_filter_is_connected (McAccount *account, gpointer user_data) { MissionControl *mc; TpConnectionStatus status; g_return_val_if_fail (MC_IS_ACCOUNT (account), FALSE); mc = empathy_mission_control_new (); status = mission_control_get_connection_status (mc, account, NULL); g_object_unref (mc); return status == TP_CONNECTION_STATUS_CONNECTED; }