YES! We finally have dynamic signals between Core and Client, meaning that arbitrary
[quassel.git] / src / qtgui / mainwin.h
index 7876b50..f522449 100644 (file)
 #ifndef _MAINWIN_H_
 #define _MAINWIN_H_
 
-#include <QtGui>
-#include "gui/ui_mainwin.h"
+#include "ui_mainwin.h"
 
-#include "global.h"
-#include "message.h"
-#include "chatwidget.h"
+#include "qtgui.h"
+#include "bufferviewfilter.h"
 
 class ServerListDlg;
 class CoreConnectDlg;
-class BufferViewDock;
 class Buffer;
-class BufferWidget;
 class SettingsDlg;
+class QtGui;
+class Message;
 
-//!\brief The main window and central object of Quassel GUI.
-/** In addition to displaying the main window including standard stuff like a menubar,
- * dockwidgets and of course the chat window, this class also stores all data it
- * receives from the core, and it maintains a list of all known nicks.
- */
+//!\brief The main window of Quassel's QtGui.
 class MainWin : public QMainWindow {
   Q_OBJECT
 
   public:
-    MainWin();
-    ~MainWin();
+    MainWin(QtGui *gui, QWidget *parent = 0);
+    virtual ~MainWin();
 
     void init();
-    void registerBufferViewDock(BufferViewDock *);
+    void addBufferView(const QString &, QAbstractItemModel *, const BufferViewFilter::Modes &, const QStringList &);
+
+    AbstractUiMsg *layoutMsg(const Message &);
 
   protected:
     void closeEvent(QCloseEvent *event);
 
-  signals:
-    //void sendInput(BufferId, QString message);
-    //void bufferSelected(Buffer *);
-    //void bufferUpdated(Buffer *);
-    //void bufferActivity(Buffer::ActivityLevel, Buffer *);
-    //void bufferDestroyed(Buffer *);
-    //void backlogReceived(Buffer *, QList<Message>);
-    //void requestBacklog(BufferId, QVariant, QVariant);
-
-    void importOldBacklog();
+  protected slots:
+    void connectedToCore();
+    void disconnectedFromCore();
 
   private slots:
-    
-    //void userInput(BufferId, QString);
-    //void networkConnected(QString);
-    //void networkDisconnected(QString);
-    //void recvNetworkState(QString, QVariant);
-    //void recvMessage(Message message);
-    //void recvStatusMsg(QString network, QString message);
-    //void setTopic(QString net, QString buf, QString);
-    //void addNick(QString net, QString nick, VarMap props);
-    //void removeNick(QString net, QString nick);
-    //void renameNick(QString net, QString oldnick, QString newnick);
-    //void updateNick(QString net, QString nick, VarMap props);
-    //void setOwnNick(QString net, QString nick);
-    //void recvBacklogData(BufferId, QList<QVariant>, bool);
-    //void updateBufferId(BufferId);
 
     void showServerList();
     void showSettingsDlg();
+    void showCoreConnectionDlg(bool autoConnect = false);
+    void coreConnectionDlgFinished(int result);
 
     void showBuffer(BufferId);
     void showBuffer(Buffer *);
 
     void importBacklog();
 
+  signals:
+    void connectToCore(const QVariantMap &connInfo);
+    void disconnectFromCore();
+    void requestBacklog(BufferId, QVariant, QVariant);
+    void importOldBacklog();
+
   private:
     Ui::MainWin ui;
+    QtGui *gui;
 
     void setupMenus();
     void setupViews();
     void setupSettingsDlg();
-    //void syncToCore();  // implemented in main_mono.cpp or main_gui.cpp
-    //Buffer * getBuffer(QString net, QString buf);
-    //Buffer *getBuffer(BufferId);
-    //BufferId getStatusBufferId(QString net);
-    //BufferId getBufferId(QString net, QString buf);
-    //void buffersUpdated();
+
+    void enableMenus();
 
     QSystemTrayIcon *systray;
-    //QWorkspace *workspace;
-    //QWidget *widget;
-    //BufferWidget *bufferWidget;
 
     ServerListDlg *serverListDlg;
     CoreConnectDlg *coreConnectDlg;
     SettingsDlg *settingsDlg;
 
-    //QString currentNetwork, currentBuffer;
-    //QHash<QString, QHash<QString, Buffer*> > buffers;
     uint currentBuffer;
-    //QHash<BufferId, Buffer *> buffers;
-    //QHash<uint, BufferId> bufferIds;
-    //QHash<QString, QHash<QString, VarMap> > nicks;
-    //QHash<QString, bool> connected;
-    //QHash<QString, QString> ownNick;
-    //QHash<QString, QList<Message> > coreBackLog;
-    //QList<BufferId> coreBuffers;
-
-    QList<BufferViewDock *> netViews;
-
-    //QTimer *layoutTimer;
-    //QList<Message> layoutQueue;
+    QString currentProfile;
+
+    QList<QDockWidget *> netViews;
+
+    friend class QtGui;
 };
 
 #endif