gboolean
empathy_notify_manager_notification_is_enabled  (EmpathyNotifyManager *self)
{
  EmpathyNotifyManagerPriv *priv = GET_PRIV (self);
  GSettings *gsettings = g_settings_new (EMPATHY_PREFS_NOTIFICATIONS_SCHEMA);
  TpConnectionPresenceType presence;
  gboolean ret = FALSE;

  if (!g_settings_get_boolean (gsettings, EMPATHY_PREFS_NOTIFICATIONS_ENABLED))
    goto finally;

  if (!tp_account_manager_is_prepared (priv->account_manager,
        TP_ACCOUNT_MANAGER_FEATURE_CORE))
    {
      DEBUG ("account manager is not ready yet; display the notification");
      ret = TRUE;

      goto finally;
    }

  presence = tp_account_manager_get_most_available_presence (
      priv->account_manager,
      NULL, NULL);

  if (presence != TP_CONNECTION_PRESENCE_TYPE_AVAILABLE &&
      presence != TP_CONNECTION_PRESENCE_TYPE_UNSET)
    {
      if (g_settings_get_boolean (gsettings,
            EMPATHY_PREFS_NOTIFICATIONS_DISABLED_AWAY))
        goto finally;
    }

  ret = TRUE;

finally:
  g_object_unref (gsettings);

  return ret;
}
Ejemplo n.º 2
0
gboolean
empathy_account_manager_get_accounts_connected (gboolean *connecting)
{
  TpAccountManager *manager;
  GList *accounts, *l;
  gboolean out_connecting = FALSE;
  gboolean out_connected = FALSE;

  manager = tp_account_manager_dup ();

  if (G_UNLIKELY (!tp_account_manager_is_prepared (manager,
          TP_ACCOUNT_MANAGER_FEATURE_CORE)))
    g_critical (G_STRLOC ": %s called before AccountManager ready", G_STRFUNC);

  accounts = tp_account_manager_get_valid_accounts (manager);

  for (l = accounts; l != NULL; l = l->next)
    {
      TpConnectionStatus s = tp_account_get_connection_status (
          TP_ACCOUNT (l->data), NULL);

      if (s == TP_CONNECTION_STATUS_CONNECTING)
        out_connecting = TRUE;
      else if (s == TP_CONNECTION_STATUS_CONNECTED)
        out_connected = TRUE;

      if (out_connecting && out_connected)
        break;
    }

  g_list_free (accounts);
  g_object_unref (manager);

  if (connecting != NULL)
    *connecting = out_connecting;

  return out_connected;
}