static void fx_login(PurpleAccount *account) { PurplePresence *presence; PurpleConnection *pc = purple_account_get_connection(account); const gchar *mobileno = purple_account_get_username(account); const gchar *password = purple_connection_get_password(pc); const gchar *status_id; fetion_account *ac = session_new(account); /* construct a user object */ ac->user = fetion_user_new(mobileno, password); ac->account = account; ac->gc = pc; ac->chan_ready = 1; purple_connection_set_protocol_data(pc, ac); presence = purple_account_get_presence(account); status_id = get_status_id(ac->user->state); if(ac->user->state == 0) status_id = "Hidden"; purple_presence_set_status_active(presence, status_id, TRUE); purple_connection_update_progress(pc, "Connecting", 1, 2); purple_ssl_connect(ac->account, SSI_SERVER, PURPLE_SSL_DEFAULT_PORT, (PurpleSslInputFunction)ssi_auth_action, (PurpleSslErrorFunction)0, ac); }
void QuetzalAccount::setStatus(Status status) { PurpleStatus *purple_status = quetzal_get_correct_status(m_account->presence, status); debug() << purple_status_get_id(purple_status) << purple_status_get_name(purple_status); purple_presence_set_status_active(m_account->presence, purple_status_get_id(purple_status), TRUE); if (status.type() != Status::Offline) purple_account_connect(m_account); }
QuetzalAccount::QuetzalAccount(const QString &id, QuetzalProtocol *protocol) : Account(id, protocol) { Q_ASSERT(!"Shouldn't use this constructor"); m_isLoading = false; Config cfg = config(); QString purpleId = id; if (protocol->id() == QLatin1String("irc")) { purpleId = cfg.value(QLatin1String("nicks"), QStringList()).value(0); purpleId += QLatin1Char('@'); int size = cfg.beginArray("servers"); if (size == 0) { qCritical("Invalid irc account without server info: \"%s\"", qPrintable(id)); deleteLater(); return; } cfg.setArrayIndex(0); purpleId += cfg.value(QLatin1String("hostName"), QString()); cfg.endArray(); } m_account = purple_account_new(purpleId.toUtf8(), protocol->plugin()->info->id); m_account->ui_data = this; fillStatusActions(); setContactsFactory(new QuetzalContactsFactory(this)); // if (PURPLE_PLUGIN_PROTOCOL_INFO(m_account->gc->prpl)->chat_info != NULL) { // addAction((new ActionGenerator(QIcon(), QT_TRANSLATE_NOOP("Quetzal", "Join groupchat"), this, SLOT(showJoinGroupChat())))->setType(1)); // } debug() << "created!" << this << m_account->protocol_id; // Hack for anti-auto-connect for (GList *it = purple_presence_get_statuses(m_account->presence); it; it = it->next) { PurpleStatus *status = reinterpret_cast<PurpleStatus *>(it->data); // debug() << purple_status_type_get_primitive(purple_status_get_type(status)) // << !!purple_status_is_online(status) // << purple_status_get_id(status) // << purple_status_get_name(status); if (!purple_status_is_online(status)) { purple_presence_set_status_active(m_account->presence, purple_status_get_id(status), TRUE); break; } } m_isLoading = true; load(cfg); m_isLoading = false; // if (protocol->id() == "jabber" && id.contains("qutim.org")) { if (!purple_account_get_enabled(m_account, "qutim")) purple_account_set_enabled(m_account, "qutim", TRUE); // purple_account_connect(m_account); // } else // purple_account_set_enabled(m_account, "qutim", FALSE); }