X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.h;h=27417e5ea8f799220c9beb9048c03415ec1811e4;hb=a3a8e528916f4930bd731ed074bcdd190d4fe327;hp=ce64b090bf5369e793a2159768e728a9c21dc951;hpb=9ac6ae4ee26819874d8843ba09f38a24088d663d;p=quassel.git diff --git a/src/core/coresession.h b/src/core/coresession.h index ce64b090..27417e5e 100644 --- a/src/core/coresession.h +++ b/src/core/coresession.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -27,10 +27,13 @@ #include "message.h" -class Server; +class Identity; +class NetworkConnection; class SignalProxy; class Storage; +class QScriptEngine; + class CoreSession : public QObject { Q_OBJECT @@ -48,7 +51,7 @@ public: SignalProxy *signalProxy() const; - void attachServer(Server *server); + void attachNetworkConnection(NetworkConnection *conn); //! Return necessary data for restoring the session after restarting the core QVariant state() const; @@ -58,7 +61,7 @@ public slots: //! Store a piece session-wide data and distribute it to connected clients. void storeSessionData(const QString &key, const QVariant &data); - void serverStateRequested(); + void networkStateRequested(); void addClient(QIODevice *connection); @@ -69,6 +72,21 @@ public slots: void sendBacklog(BufferInfo, QVariant, QVariant); void msgFromGui(BufferInfo, QString message); + //! Create an identity and propagate the changes to the clients. + /** \param identity The identity to be created. + */ + void createIdentity(const Identity &identity); + + //! Update an identity and propagate the changes to the clients. + /** \param identity The identity to be updated. + */ + void updateIdentity(const Identity &identity); + + //! Remove identity and propagate that fact to the clients. + /** \param identity The identity to be removed. + */ + void removeIdentity(IdentityId identity); + signals: void msgFromGui(uint netid, QString buf, QString message); void displayMsg(Message message); @@ -83,21 +101,43 @@ signals: void sessionDataChanged(const QString &key); void sessionDataChanged(const QString &key, const QVariant &data); + void scriptResult(QString result); + + //! Identity has been created. + /** This signal is propagated to the clients to tell them that the given identity has been created. + * \param identity The new identity. + */ + void identityCreated(const Identity &identity); + + //! Identity has been removed. + /** This signal is propagated to the clients to inform them about the removal of the given identity. + * \param identity The identity that has been removed. + */ + void identityRemoved(IdentityId identity); + private slots: void recvStatusMsgFromServer(QString msg); void recvMessageFromServer(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None); - void serverConnected(uint networkid); - void serverDisconnected(uint networkid); + void networkConnected(uint networkid); + void networkDisconnected(uint networkid); + void scriptRequest(QString script); + private: + void initScriptEngine(); + UserId user; SignalProxy *_signalProxy; Storage *storage; - QHash servers; + QHash connections; QVariantMap sessionData; QMutex mutex; + + QScriptEngine *scriptEngine; + + QHash _identities; }; #endif