コード例 #1
0
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);
    }
}
コード例 #2
0
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));
}
コード例 #3
0
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;
}