コード例 #1
0
EmpathyAccountSettings *
empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self)
{
  EmpathyAccountSettings *settings;
  gchar *str;
  const gchar *display_name;
  TpConnectionManager *cm;
  TpConnectionManagerProtocol *proto;
  gchar *service;

  cm = empathy_protocol_chooser_dup_selected (self, &proto, &service);
  if (cm == NULL || proto == NULL)
    return NULL;

  if (service != NULL)
    display_name = empathy_service_name_to_display_name (service);
  else
    display_name = empathy_protocol_name_to_display_name (proto->name);

  /* Create account */
  /* To translator: %s is the name of the protocol, such as "Google Talk" or
   * "Yahoo!"
   */
  str = g_strdup_printf (_("New %s account"), display_name);
  settings = empathy_account_settings_new (cm->name, proto->name, service, str);

  g_free (str);

  if (!tp_strdiff (service, "google-talk"))
    {
      gchar *fallback_servers[] = {
          "talkx.l.google.com",
          "talkx.l.google.com:443,oldssl",
          "talkx.l.google.com:80",
          NULL};

      empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
          NULL, NULL);

      empathy_account_settings_set_strv (settings, "fallback-servers",
          fallback_servers);
    }
  else if (!tp_strdiff (service, "facebook"))
    {
      empathy_account_settings_set_icon_name_async (settings, "im-facebook",
          NULL, NULL);

      empathy_account_settings_set_string (settings, "server",
          "chat.facebook.com");
    }

  g_object_unref (cm);
  g_free (service);
  return settings;
}
コード例 #2
0
static void
account_assistant_protocol_changed_cb (GtkComboBox *chooser,
    EmpathyAccountAssistant *self)
{
  TpConnectionManager *cm;
  TpConnectionManagerProtocol *proto;
  EmpathyAccountSettings *settings;
  EmpathyAccountAssistantPriv *priv;
  char *str;
  GtkWidget *account_widget;
  EmpathyAccountWidget *widget_object = NULL;
  gboolean is_gtalk;

  priv = GET_PRIV (self);

  cm = empathy_protocol_chooser_dup_selected (
      EMPATHY_PROTOCOL_CHOOSER (chooser), &proto, &is_gtalk);

  if (cm == NULL || proto == NULL)
    /* we are not ready yet */
    return;

  /* Create account */
  /* To translator: %s is the protocol name */
  str = g_strdup_printf (_("New %s account"),
      empathy_protocol_name_to_display_name (
          is_gtalk ? "gtalk" : proto->name));

  settings = empathy_account_settings_new (cm->name, proto->name, str);

  if (is_gtalk)
    empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
      NULL, NULL);

  if (priv->first_resp == RESPONSE_CREATE_ACCOUNT)
    empathy_account_settings_set_boolean (settings, "register", TRUE);

  widget_object = empathy_account_widget_new_for_protocol (settings, TRUE);
  account_widget = empathy_account_widget_get_widget (widget_object);

  if (priv->current_account_widget != NULL)
    {
      g_signal_handlers_disconnect_by_func (priv->current_widget_object,
          account_assistant_handle_apply_cb, self);
      gtk_widget_destroy (priv->current_account_widget);
    }

  priv->current_account_widget = account_widget;
  priv->current_widget_object = widget_object;

  if (priv->settings != NULL)
    g_object_unref (priv->settings);

  priv->settings = settings;

  g_signal_connect (priv->current_widget_object, "handle-apply",
      G_CALLBACK (account_assistant_handle_apply_cb), self);

  gtk_box_pack_start (GTK_BOX (priv->enter_or_create_page), account_widget,
      FALSE, FALSE, 0);
  gtk_widget_show (account_widget);

  g_free (str);
}
コード例 #3
0
ファイル: empathy.c プロジェクト: komcg/empathy-smcgrath
static void
create_salut_account_am_ready_cb (GObject *source_object,
    GAsyncResult *result,
    gpointer user_data)
{
  TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object);
  EmpathyConnectionManagers *managers = user_data;
  EmpathyAccountSettings  *settings;
  TpConnectionManager *manager;
  const TpConnectionManagerProtocol *protocol;
  EBook      *book;
  EContact   *contact;
  gchar      *nickname = NULL;
  gchar      *first_name = NULL;
  gchar      *last_name = NULL;
  gchar      *email = NULL;
  gchar      *jid = NULL;
  GError     *error = NULL;

  if (!tp_account_manager_prepare_finish (account_manager, result, &error))
    {
      DEBUG ("Failed to prepare account manager: %s", error->message);
      g_error_free (error);
      goto out;
    }

  if (!should_create_salut_account (account_manager))
    goto out;

  manager = empathy_connection_managers_get_cm (managers, "salut");
  if (manager == NULL)
    {
      DEBUG ("Salut not installed, not making a salut account");
      goto out;
    }

  protocol = tp_connection_manager_get_protocol (manager, "local-xmpp");
  if (protocol == NULL)
    {
      DEBUG ("Salut doesn't support local-xmpp!!");
      goto out;
    }

  DEBUG ("Trying to add a salut account...");

  /* Get self EContact from EDS */
  if (!e_book_get_self (&contact, &book, &error))
    {
      DEBUG ("Failed to get self econtact: %s",
          error ? error->message : "No error given");
      g_clear_error (&error);
      goto out;
    }

  settings = empathy_account_settings_new ("salut", "local-xmpp",
      _("People nearby"));

  nickname = e_contact_get (contact, E_CONTACT_NICKNAME);
  first_name = e_contact_get (contact, E_CONTACT_GIVEN_NAME);
  last_name = e_contact_get (contact, E_CONTACT_FAMILY_NAME);
  email = e_contact_get (contact, E_CONTACT_EMAIL_1);
  jid = e_contact_get (contact, E_CONTACT_IM_JABBER_HOME_1);

  if (!tp_strdiff (nickname, "nickname"))
    {
      g_free (nickname);
      nickname = NULL;
    }

  DEBUG ("Salut account created:\nnickname=%s\nfirst-name=%s\n"
     "last-name=%s\nemail=%s\njid=%s\n",
     nickname, first_name, last_name, email, jid);

  empathy_account_settings_set_string (settings,
      "nickname", nickname ? nickname : "");
  empathy_account_settings_set_string (settings,
      "first-name", first_name ? first_name : "");
  empathy_account_settings_set_string (settings,
      "last-name", last_name ? last_name : "");
  empathy_account_settings_set_string (settings, "email", email ? email : "");
  empathy_account_settings_set_string (settings, "jid", jid ? jid : "");

  empathy_account_settings_apply_async (settings,
      salut_account_created, NULL);

  g_free (nickname);
  g_free (first_name);
  g_free (last_name);
  g_free (email);
  g_free (jid);
  g_object_unref (settings);
  g_object_unref (contact);
  g_object_unref (book);

 out:
  g_object_unref (managers);
}
コード例 #4
0
EmpathyAccountSettings *
empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self)
{
  EmpathyAccountSettings *settings = NULL;
  gchar *str;
  const gchar *display_name;
  TpConnectionManager *cm;
  TpConnectionManagerProtocol *proto;
  gchar *service = NULL;

  cm = empathy_protocol_chooser_dup_selected (self, &proto, &service);
  if (cm == NULL || proto == NULL)
    goto out;

  if (service != NULL)
    display_name = empathy_service_name_to_display_name (service);
  else
    display_name = empathy_protocol_name_to_display_name (proto->name);

  /* Create account */
  /* To translator: %s is the name of the protocol, such as "Google Talk" or
   * "Yahoo!"
   */
  str = g_strdup_printf (_("New %s account"), display_name);
  settings = empathy_account_settings_new (cm->name, proto->name, service, str);

  g_free (str);

  if (!tp_strdiff (service, "google-talk"))
    {
      gchar *fallback_servers[] = {
          "talkx.l.google.com",
          "talkx.l.google.com:443,oldssl",
          "talkx.l.google.com:80",
          NULL};

      gchar *extra_certificate_identities[] = {
          "talk.google.com",
          NULL};

      empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
          NULL, NULL);
      empathy_account_settings_set_string (settings, "server",
          extra_certificate_identities[0]);
      empathy_account_settings_set_boolean (settings, "require-encryption",
          TRUE);
      empathy_account_settings_set_strv (settings, "fallback-servers",
          fallback_servers);

      if (empathy_account_settings_have_tp_param (settings,
              "extra-certificate-identities"))
        {
          empathy_account_settings_set_strv (settings,
              "extra-certificate-identities", extra_certificate_identities);
        }
    }
  else if (!tp_strdiff (service, "facebook"))
    {
      empathy_account_settings_set_icon_name_async (settings, "im-facebook",
          NULL, NULL);
      empathy_account_settings_set_boolean (settings, "require-encryption",
          TRUE);
      empathy_account_settings_set_string (settings, "server",
          "chat.facebook.com");
    }

out:
  tp_clear_object (&cm);
  g_free (service);
  return settings;
}