QStringList JAccount::updateParameters(const QVariantMap ¶meters, bool forced) { Q_D(JAccount); QStringList result; if (!forced && d->parameters == parameters) return result; if (forced) d->hasChangedParameters = false; QString password = parameters.value(QLatin1String("password")).toString(); QString server = parameters.value(QLatin1String("connect-server")).toString(); int port = parameters.value(QLatin1String("port"), -1).toInt(); QString boshServer = parameters.value(QLatin1String("bosh-server")).toString(); int boshPort = parameters.value(QLatin1String("bosh-port"), -1).toInt(); QString resource = parameters.value(QLatin1String("resource")).toString(); int priority = parameters.value(QLatin1String("priority"), 30).toInt(); Presence &presence = d->client->presence(); presence.setPriority(priority); if (d->client->isConnected()) { d->hasChangedParameters = true; d->client->send(presence); if (d->client->server() != server) result << QLatin1String("connect-server"); if (d->client->port() != port) result << QLatin1String("port"); if (d->client->jid().resource() != resource) result << QLatin1String("resource"); } else { JID jid = d->client->jid(); jid.setResource(resource); d->client->setServer(port < 0 ? jid.domain() : server); d->client->setPort(port); } d->client->setPassword(password); if (!forced) { Config config = Account::config(); config.setValue(QLatin1String("resource"), resource); config.setValue(QLatin1String("priority"), priority); config.setValue(QLatin1String("autoDetect"), port < 0); config.setValue(QLatin1String("server"), server); config.setValue(QLatin1String("port"), port); config.setValue(QLatin1String("passwd"), password, Config::Crypted); config.beginGroup(QLatin1String("bosh")); config.setValue(QLatin1String("use"), !boshServer.isEmpty()); config.setValue(QLatin1String("server"), boshServer); config.setValue(QLatin1String("port"), boshPort); config.endGroup(); } d->parameters = parameters; emit parametersChanged(d->parameters); return result; }
IMClient::IMClient(const tstring& username, const tstring& resource, const tstring& password, const tstring& server, const tstring& server_addr, HWND hWnd, bool bLog, DWORD dwIdleTimeout) { TRY_CATCH m_hWnd = hWnd; JID jid; jid.setUsername( username.c_str() ); jid.setResource( resource.c_str() ); jid.setServer(server.c_str()); m_server = server; m_client = new Client(jid, password.c_str()); m_client->registerConnectionListener(this); m_client->setServer( server_addr.c_str()); // Todo we do not want auto presence - we will need to set presence after // connect due status selected by user // m_client->setAutoPresence(true); // m_client->setInitialPriority(4); removed in gloox 0.9 m_client->disco()->setVersion( _T("messageTest"), GLOOX_VERSION, _T("Linux") ); m_client->disco()->setIdentity( _T("client"), _T("bot") ); // // Our simple client version not requires Sessions // The messages will be handled in the blocked handleMessage() function m_client->registerMessageHandler(this); // // We will log this if( bLog ) registerLogHandler(); // // Register this bject to receive updates on roster operations // todo for future versions // m_client->rosterManager()->registerRosterListener( this ); m_client->setTls(true); // // m_bOnDisconnectCalled = FALSE; // // m_bDisconnected = FALSE; CATCH_THROW(_T("IMClient::IMClient")) }