squawk/core/account.h

80 lines
2.4 KiB
C
Raw Normal View History

2019-03-29 14:54:34 +00:00
#ifndef CORE_ACCOUNT_H
#define CORE_ACCOUNT_H
#include <QtCore/QObject>
2019-04-03 21:23:51 +00:00
#include <map>
2019-04-06 10:14:32 +00:00
#include <set>
2019-03-29 14:54:34 +00:00
#include <qxmpp/QXmppClient.h>
#include "../global.h"
2019-03-29 14:54:34 +00:00
namespace Core
{
class Account : public QObject
{
Q_OBJECT
2019-03-29 14:54:34 +00:00
public:
2019-03-30 20:13:13 +00:00
Account(const QString& p_login, const QString& p_server, const QString& p_password, const QString& p_name, QObject* parent = 0);
2019-03-29 14:54:34 +00:00
~Account();
void connect();
void disconnect();
Shared::ConnectionState getState() const;
QString getName() const;
QString getLogin() const;
QString getServer() const;
QString getPassword() const;
QString getResource() const;
Shared::Availability getAvailability() const;
void setName(const QString& p_name);
void setLogin(const QString& p_login);
void setServer(const QString& p_server);
void setPassword(const QString& p_password);
void setResource(const QString& p_resource);
void setAvailability(Shared::Availability avail);
2019-04-09 22:01:25 +00:00
QString getFullJid() const;
void sendMessage(const Shared::Message& data);
signals:
void connectionStateChanged(int);
void availabilityChanged(int);
2019-04-03 21:23:51 +00:00
void addGroup(const QString& name);
void removeGroup(const QString& name);
void addContact(const QString& jid, const QString& group, const QMap<QString, QVariant>& data);
2019-04-06 10:14:32 +00:00
void removeContact(const QString& jid);
void removeContact(const QString& jid, const QString& group);
void changeContact(const QString& jid, const QMap<QString, QVariant>& data);
2019-04-07 14:02:41 +00:00
void addPresence(const QString& jid, const QString& name, const QMap<QString, QVariant>& data);
void removePresence(const QString& jid, const QString& name);
void message(const Shared::Message& data);
2019-03-29 14:54:34 +00:00
private:
2019-03-30 20:13:13 +00:00
QString name;
2019-03-29 14:54:34 +00:00
QXmppClient client;
QXmppConfiguration config;
QXmppPresence presence;
Shared::ConnectionState state;
2019-04-06 10:14:32 +00:00
std::map<QString, std::set<QString>> groups;
private slots:
void onClientConnected();
2019-04-02 15:46:18 +00:00
void onClientDisconnected();
2019-04-03 21:23:51 +00:00
void onRosterReceived();
2019-04-07 14:02:41 +00:00
void onRosterItemAdded(const QString& bareJid);
void onRosterItemChanged(const QString& bareJid);
void onRosterItemRemoved(const QString& bareJid);
void onRosterPresenceChanged(const QString& bareJid, const QString& resource);
void onPresenceReceived(const QXmppPresence& presence);
2019-04-09 15:04:08 +00:00
void onMessageReceived(const QXmppMessage& message);
2019-04-06 10:14:32 +00:00
private:
void addedAccount(const QString &bareJid);
2019-03-29 14:54:34 +00:00
};
}
#endif // CORE_ACCOUNT_H