X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=gui%2Fbuffer.h;h=7738ebe1e8e5b3a5ec27def9ee24bf5f7529dc73;hb=c66cfafe5dfa8ccdb830e1ae412e7b51cbcdd184;hp=5df19aa7a3c33dac6e4c30d7232cd6072eed48eb;hpb=d6a96a47a3964b9c0b1ea2413601d70d0d327413;p=quassel.git diff --git a/gui/buffer.h b/gui/buffer.h index 5df19aa7..7738ebe1 100644 --- a/gui/buffer.h +++ b/gui/buffer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005/06 by The Quassel Team * + * Copyright (C) 2005-07 by The Quassel Team * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -24,31 +24,60 @@ #include #include -#include "ui_bufferwidget.h" - +#include "chatwidget.h" #include "global.h" #include "message.h" +class ChatWidget; +class ChatLine; +class ChatWidgetContents; class BufferWidget; +struct BufferState; +//!\brief Encapsulates the contents of a single channel, query or server status context. +/** A Buffer maintains a list of existing nicks and their status. New messages can be appended using + * displayMsg(). A buffer displays its contents by way of a BufferWidget, which can be shown + * (and created on demand) by calling showWidget(). + */ class Buffer : public QObject { Q_OBJECT public: - Buffer(QString network, QString buffer); + //Buffer(QString network, QString buffer); + Buffer(BufferId); ~Buffer(); + static void init(); + enum Type { ServerBuffer, ChannelBuffer, QueryBuffer }; + Type bufferType() { return type; } bool isActive() { return active; } - public: - QWidget *getWidget(); + + QString networkName() { return _networkName; } + QString bufferName() { return _bufferName; } + BufferId bufferId() { return id; } + QList contents() { return lines; } + VarMap nickList() { return nicks; } + QString topic() { return _topic; } + QString ownNick() { return _ownNick; } signals: - void userInput(QString, QString, QString); - void nickListChanged(QStringList); + void userInput(BufferId, QString); + //void msgDisplayed(Message); + void chatLineAppended(ChatLine *); + void chatLinePrepended(ChatLine *); + void nickListChanged(VarMap nicks); + void topicSet(QString topic); + void ownNickSet(QString ownNick); + void bufferUpdated(Buffer *); + void bufferDestroyed(Buffer *); public slots: void setActive(bool active = true); - void displayMsg(Message); + //void displayMsg(Message); + //void prependMessages(QList); // for backlog + void appendChatLine(ChatLine *); + void prependChatLine(ChatLine *); + //void prependChatLines(QList); //void recvStatusMsg(QString msg); void setTopic(QString); //void setNicks(QStringList); @@ -58,61 +87,22 @@ class Buffer : public QObject { void updateNick(QString nick, VarMap props); void setOwnNick(QString nick); - QWidget * showWidget(QWidget *parent = 0); - void hideWidget(); - - void scrollToEnd(); - - private slots: - void userInput(QString); - - private: - bool active; - BufferWidget *widget; - VarMap nicks; - QString topic; - QString ownNick; - QString networkName, bufferName; - - QList contents; -}; - -class BufferWidget : public QWidget { - Q_OBJECT - - public: - BufferWidget(QString netname, QString bufname, bool active, QString ownNick, QList contents, QWidget *parent = 0); - - void setActive(bool act = true); - signals: - void userInput(QString); - - public slots: - void displayMsg(Message); - void updateNickList(VarMap nicks); - void setOwnNick(QString ownNick); - void setTopic(QString topic); - void renderContents(); - void scrollToEnd(); - - private slots: - void enterPressed(); - void itemExpansionChanged(QTreeWidgetItem *); - void updateTitle(); + void processUserInput(QString); private: - Ui::BufferWidget ui; + BufferId id; bool active; - QList contents; + Type type; - QString stdCol, errorCol, noticeCol, joinCol, quitCol, partCol, kickCol, serverCol, nickCol, inactiveCol; - QString CSS; - QString networkName; - QString bufferName; + VarMap nicks; + QString _topic; + QString _ownNick; + QString _networkName, _bufferName; + BufferState *state; - bool opsExpanded, voicedExpanded, usersExpanded; + //QList _contents; + QList lines; - QString htmlFromMsg(Message); }; #endif