Esempio n. 1
0
QStringList JAccount::updateParameters(const QVariantMap &parameters, 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;
}
Esempio n. 2
0
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"))
}