* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _GUI_H_
-#define _GUI_H_
+#ifndef _CLIENT_H_
+#define _CLIENT_H_
-#include <QtCore>
-#include <QtGui>
-#include <QtNetwork>
+#include <QAbstractSocket>
+#include <QTcpSocket>
+#include <QList>
+#include <QPointer>
-#include "global.h"
#include "buffer.h"
#include "message.h"
-#include "clientproxy.h"
-#include "buffertreemodel.h"
-//#include "bufferviewwidget.h"
-class MainWin;
-class ClientProxy;
+
+class AbstractUi;
+class BufferTreeModel;
+class QtGui;
+class SignalProxy;
+
+class QTimer;
class Client : public QObject {
Q_OBJECT
public:
static Client *instance();
+ static void init(AbstractUi *);
static void destroy();
+ static QList<BufferId> allBufferIds();
static Buffer *buffer(BufferId);
static BufferId statusBufferId(QString net);
static BufferId bufferId(QString net, QString buf);
static BufferTreeModel *bufferModel();
+ static SignalProxy *signalProxy();
+
+ static AbstractUiMsg *layoutMsg(const Message &);
+
+ static bool isConnected();
+
+ static void storeSessionData(const QString &key, const QVariant &data);
+ static QVariant retrieveSessionData(const QString &key, const QVariant &def = QVariant());
+ static QStringList sessionDataKeys();
+
+ enum ClientMode { LocalCore, RemoteCore };
+ static ClientMode clientMode;
signals:
void sendInput(BufferId, QString message);
void bufferDestroyed(Buffer *);
void backlogReceived(Buffer *, QList<Message>);
void requestBacklog(BufferId, QVariant, QVariant);
+ void requestNetworkStates();
- void recvPartialItem(quint32 avail, quint32 size);
+ void recvPartialItem(uint avail, uint size);
void coreConnectionError(QString errorMsg);
+ void coreConnectionMsg(const QString &msg);
+ void coreConnectionProgress(uint part, uint total);
+
+ void connected();
+ void disconnected();
+
+ void sessionDataChanged(const QString &key);
+ void sessionDataChanged(const QString &key, const QVariant &data);
+ void sendSessionData(const QString &key, const QVariant &data);
public slots:
//void selectBuffer(Buffer *);
- void connectToCore(QString host, quint16 port);
+ //void connectToLocalCore();
+ void connectToCore(const QVariantMap &);
void disconnectFromCore();
private slots:
- void updateCoreData(UserId, QString);
- void updateLocalData(QString, QVariant);
- void recvProxySignal(ClientSignal sig, QVariant arg1, QVariant arg2, QVariant arg3);
+ void recvCoreState(const QVariant &state);
+ void recvSessionData(const QString &key, const QVariant &data);
- void serverError(QAbstractSocket::SocketError);
- void serverHasData();
- void coreConnected();
- void coreDisconnected();
+ void coreSocketError(QAbstractSocket::SocketError);
+ void coreHasData();
+ void coreSocketConnected();
+ void coreSocketDisconnected();
+ void coreSocketStateChanged(QAbstractSocket::SocketState);
void userInput(BufferId, QString);
void networkConnected(QString);
void networkDisconnected(QString);
void recvNetworkState(QString, QVariant);
- void recvMessage(Message message);
+ void recvMessage(const Message &message);
void recvStatusMsg(QString network, QString message);
void setTopic(QString net, QString buf, QString);
- void addNick(QString net, QString nick, VarMap props);
+ void addNick(QString net, QString nick, QVariantMap props);
void removeNick(QString net, QString nick);
void renameNick(QString net, QString oldnick, QString newnick);
- void updateNick(QString net, QString nick, VarMap props);
+ void updateNick(QString net, QString nick, QVariantMap props);
void setOwnNick(QString net, QString nick);
- void recvBacklogData(BufferId, QList<QVariant>, bool);
+ void recvBacklogData(BufferId, QVariantList, bool);
void updateBufferId(BufferId);
+ void removeBuffer(Buffer *);
+
void layoutMsg();
private:
void init();
static Client *instanceptr;
- void syncToCore();
+ void syncToCore(const QVariant &coreState);
+ QVariant connectToLocalCore(QString user, QString passwd); // defined in main.cpp
+ void disconnectFromLocalCore(); // defined in main.cpp
- enum ClientMode { LocalCore, RemoteCore };
- static ClientMode clientMode;
-
- MainWin *mainWin;
- ClientProxy *clientProxy;
+ AbstractUi *mainUi;
+ SignalProxy *_signalProxy;
BufferTreeModel *_bufferModel;
- QTcpSocket socket;
+ QPointer<QIODevice> socket;
quint32 blockSize;
+ static bool connectedToCore;
+ static QVariantMap coreConnectionInfo;
static QHash<BufferId, Buffer *> buffers;
static QHash<uint, BufferId> bufferIds;
- static QHash<QString, QHash<QString, VarMap> > nicks;
- static QHash<QString, bool> connected;
+ static QHash<QString, QHash<QString, QVariantMap> > nicks;
+ static QHash<QString, bool> netConnected;
+ static QStringList netsAwaitingInit;
static QHash<QString, QString> ownNick;
- static QList<BufferId> coreBuffers;
QTimer *layoutTimer;
- QList<Message> layoutQueue;
+ QList<Buffer *> layoutQueue;
+
+ QVariantMap sessionData;
};
#endif