Add AbstractNotificationBackend to allow for a more modular approach to notifications
[quassel.git] / src / client / quasselui.h
index 747d8b8..0a855fc 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#ifndef _QUASSELUI_H_
-#define _QUASSELUI_H_
+#ifndef QUASSELUI_H
+#define QUASSELUI_H
 
 #include <QObject>
 #include "message.h"
 
-class AbstractUiMsg {
-
-  public:
-    virtual ~AbstractUiMsg() {};
-    virtual QString sender() const = 0;
-    virtual QString text() const = 0;
-    virtual MsgId msgId() const = 0;
-    virtual BufferInfo bufferInfo() const = 0;
-    virtual QDateTime timestamp() const = 0;
-
-};
-
+class MessageModel;
+class AbstractMessageProcessor;
 
 class AbstractUi : public QObject {
   Q_OBJECT
 
   public:
+    AbstractUi();
+    virtual ~AbstractUi() {};
     virtual void init() {};  // called after the client is initialized
-    virtual AbstractUiMsg *layoutMsg(const Message &) = 0;
+    virtual MessageModel *createMessageModel(QObject *parent) = 0;
+    virtual AbstractMessageProcessor *createMessageProcessor(QObject *parent) = 0;
+
+    inline static bool isVisible() { return _visible; }
+    inline static void setVisible(bool visible) { _visible = visible; }
 
   protected slots:
     virtual void connectedToCore() {}
@@ -52,8 +48,9 @@ class AbstractUi : public QObject {
     void connectToCore(const QVariantMap &connInfo);
     void disconnectFromCore();
 
+  private:
+    static AbstractUi *_instance;
+    static bool _visible;
 };
 
-
-
 #endif