#ifndef SQUAWK_H #define SQUAWK_H #include #include #include #include #include #include "accounts.h" #include "conversation.h" #include "models/roster.h" #include "../global.h" namespace Ui { class Squawk; } class Squawk : public QMainWindow { Q_OBJECT public: explicit Squawk(QWidget *parent = nullptr); ~Squawk() override; signals: void newAccountRequest(const QMap&); void connectAccount(const QString&); void disconnectAccount(const QString&); void changeState(int state); void sendMessage(const QString& account, const QMap& data); public slots: void newAccount(const QMap& account); void accountConnectionStateChanged(const QString& account, int state); void accountAvailabilityChanged(const QString& account, int state); void addGroup(const QString& account, const QString& name); void removeGroup(const QString& account, const QString& name); void addContact(const QString& account, const QString& jid, const QString& group, const QMap& data); void removeContact(const QString& account, const QString& jid, const QString& group); void removeContact(const QString& account, const QString& jid); void changeContact(const QString& account, const QString& jid, const QMap& data); void addPresence(const QString& account, const QString& jid, const QString& name, const QMap& data); void removePresence(const QString& account, const QString& jid, const QString& name); void stateChanged(int state); void accountMessage(const QString& account, const QMap& data); private: typedef std::map Conversations; QScopedPointer m_ui; Accounts* accounts; Models::Roster rosterModel; Conversations conversations; protected: void closeEvent(QCloseEvent * event) override; private slots: void onAccounts(); void onAccountsClosed(QObject* parent = 0); void onConversationClosed(QObject* parent = 0); void onComboboxActivated(int index); void onRosterItemDoubleClicked(const QModelIndex& item); void onConversationMessage(const QString& item); }; #endif // SQUAWK_H