I'm making one xmpp client and I have a lot doubts in extensions ..
I did need get a list of old messages with one user, so .. I'm using the QXmppArchiveManager class for that. So I make one class like that:
...
class QXmppArchiveManager;
class MessageController : public QXmppClient
{
...
private:
QNetworkAccessManager *nam_;
QXmppClient *xmppClient_;
QXmppArchiveManager *archiveMng_;
QDateTime m_startDate;
QDateTime m_endDate;
protected slots:
virtual void onConnected();
virtual void onMessageReceived(const QXmppMessage &);
virtual void archiveListReceived(const QList<QXmppArchiveChat> &chats, const QXmppResultSetReply &rsmReply);
}
And implements
...
void MessageController::onConnected() //before client connects listener...
{
QXmppResultSetQuery rsmQuery;
rsmQuery.setMax(0);
m_startDate = QDateTime::currentDateTime().addDays(-201);
m_endDate = QDateTime::currentDateTime();
archiveMng_->listCollections("", m_startDate, m_endDate, rsmQuery);
}
void MessageController::connect()
{
xmppClient_ = new QXmppClient();
QObject::connect( xmppClient_, SIGNAL( connected() ), this, SLOT( onConnected() ) );
QObject::connect( xmppClient_, SIGNAL( messageReceived( QXmppMessage ) ), this, SLOT( onMessageReceived( QXmppMessage ) ) );
archiveMng_ = new QXmppArchiveManager;
xmppClient_->addExtension(archiveMng_);
QObject::connect(archiveMng_, SIGNAL(archiveChatReceived(QXmppArchiveChat, QXmppResultSetReply)),
SLOT(archiveChatReceived(QXmppArchiveChat, QXmppResultSetReply)));
QObject::connect(archiveMng_, SIGNAL(archiveListReceived(QList<QXmppArchiveChat>, QXmppResultSetReply)),
SLOT(archiveListReceived(QList<QXmppArchiveChat>, QXmppResultSetReply)));
xmppClient_->logger()->setLoggingType( QXmppLogger::StdoutLogging );
QXmppConfiguration config;
config.setDomain("(censored)");
config.setHost("(censored)");
config.setPort(5222);
config.setUser((censored));
config.setPassword((censored));
config.setResource("Android-Client");
xmppClient_->connectToServer( config );
}
void MessageController::archiveChatReceived(const QXmppArchiveChat &chat, const QXmppResultSetReply &rsmReply)
{
qDebug() << "archiveChatReceived";
}
void MessageController::archiveListReceived(const QList<QXmppArchiveChat> &chats, const QXmppResultSetReply &rsmReply)
{
qDebug() << "archiveListReceived";
}
The problem is ... this code not called this listeners, in this case not call "archiveListReceived".
How I can fix that ?
Thanks