コード例 #1
0
void
empathy_idle_set_presence (EmpathyIdle *idle,
			   TpConnectionPresenceType   state,
			   const gchar *status)
{
	EmpathyIdlePriv *priv;
	const gchar     *default_status;

	priv = GET_PRIV (idle);

	DEBUG ("Changing presence to %s (%d)", status, state);

	/* Do not set translated default messages */
	default_status = empathy_presence_get_default_message (state);
	if (!tp_strdiff (status, default_status)) {
		status = NULL;
	}

	if (state != TP_CONNECTION_PRESENCE_TYPE_OFFLINE &&
			!empathy_connectivity_is_online (priv->connectivity)) {
		DEBUG ("Empathy is not online");

		priv->saved_state = state;
		if (tp_strdiff (priv->status, status)) {
			g_free (priv->saved_status);
			priv->saved_status = NULL;
			if (!EMP_STR_EMPTY (status)) {
				priv->saved_status = g_strdup (status);
			}
		}
		return;
	}

	empathy_idle_do_set_presence (idle, state, status);
}
コード例 #2
0
void
empathy_presence_manager_set_presence (EmpathyPresenceManager *self,
    TpConnectionPresenceType state,
    const gchar *status)
{
  const gchar     *default_status;

  DEBUG ("Changing presence to %s (%d)", status, state);

  g_free (self->priv->requested_status_message);
  self->priv->requested_presence_type = state;
  self->priv->requested_status_message = g_strdup (status);

  /* Do not set translated default messages */
  default_status = empathy_presence_get_default_message (state);
  if (!tp_strdiff (status, default_status))
    status = NULL;

  if (state != TP_CONNECTION_PRESENCE_TYPE_OFFLINE &&
      !empathy_connectivity_is_online (self->priv->connectivity))
    {
      DEBUG ("Empathy is not online");

      self->priv->saved_state = state;
      if (tp_strdiff (self->priv->status, status))
        {
          g_free (self->priv->saved_status);
          self->priv->saved_status = NULL;
          if (!EMP_STR_EMPTY (status))
            self->priv->saved_status = g_strdup (status);
        }
      return;
    }

  empathy_presence_manager_do_set_presence (self, state, status);
}