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); }
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); }