mucs initial, just display; archive fixes

This commit is contained in:
Blue 2019-07-11 11:51:52 +03:00
parent 30c59fbb91
commit eda96e138d
19 changed files with 626 additions and 43 deletions

View file

@ -8,7 +8,10 @@
#include <QXmppRosterManager.h>
#include <QXmppCarbonManager.h>
#include <QXmppMamManager.h>
#include <QXmppMucManager.h>
#include <QXmppClient.h>
#include <QXmppBookmarkManager.h>
#include <QXmppBookmarkSet.h>
#include "../global.h"
#include "contact.h"
@ -18,6 +21,7 @@ namespace Core
class Account : public QObject
{
Q_OBJECT
class MucInfo;
public:
Account(const QString& p_login, const QString& p_server, const QString& p_password, const QString& p_name, QObject* parent = 0);
~Account();
@ -54,6 +58,9 @@ signals:
void availabilityChanged(int);
void addGroup(const QString& name);
void removeGroup(const QString& name);
void addRoom(const QString& jid, const QMap<QString, QVariant>& data);
void changeRoom(const QString& jid, const QMap<QString, QVariant>& data);
void removeRoom(const QString& jid);
void addContact(const QString& jid, const QString& group, const QMap<QString, QVariant>& data);
void removeContact(const QString& jid);
void removeContact(const QString& jid, const QString& group);
@ -74,12 +81,15 @@ private:
std::map<QString, std::set<QString>> groups;
QXmppCarbonManager* cm;
QXmppMamManager* am;
QXmppMucManager* mm;
QXmppBookmarkManager* bm;
std::map<QString, Contact*> contacts;
unsigned int maxReconnectTimes;
unsigned int reconnectTimes;
std::map<QString, QString> queuedContacts;
std::set<QString> outOfRosterContacts;
std::map<QString, MucInfo> mucInfo;
private slots:
void onClientConnected();
@ -101,6 +111,16 @@ private slots:
void onMamMessageReceived(const QString& bareJid, const QXmppMessage& message);
void onMamResultsReceived(const QString &queryId, const QXmppResultSetReply &resultSetReply, bool complete);
void onMucRoomAdded(QXmppMucRoom* room);
void onMucJoined();
void onMucLeft();
void onMucNameChanged(const QString& roomName);
void onMucNickNameChanged(const QString& nickName);
void onMucError(const QXmppStanza::Error& error);
void onMucMessage(const QXmppMessage& message);
void bookmarksReceived(const QXmppBookmarkSet& bookmarks);
void onContactGroupAdded(const QString& group);
void onContactGroupRemoved(const QString& group);
void onContactNameChanged(const QString& name);
@ -119,8 +139,28 @@ private:
void initializeMessage(Shared::Message& target, const QXmppMessage& source, bool outgoing = false, bool forwarded = false, bool guessing = false) const;
Shared::SubscriptionState castSubscriptionState(QXmppRosterIq::Item::SubscriptionType qs) const;
void logMessage(const QXmppMessage& msg, const QString& reason = "Message wasn't handled: ");
class MucInfo {
public:
MucInfo(bool p_al, bool p_jo, const QString& p_jid, const QString& p_name, const QString& p_nick):
autoJoin(p_al),
joined(p_jo),
jid(p_jid),
name(p_name),
nick(p_nick),
removed(false) {}
bool autoJoin;
bool joined;
QString jid;
QString name;
QString nick;
bool removed;
};
};
}
#endif // CORE_ACCOUNT_H