/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #ifndef SWIFT_QtChatView_H #define SWIFT_QtChatView_H #include #include #include #include #include #include "ChatSnippet.h" class QWebPage; class QUrl; namespace Swift { class QtWebView; class QtChatTheme; class QtChatView : public QWidget { Q_OBJECT public: QtChatView(QtChatTheme* theme, QWidget* parent); void addMessage(boost::shared_ptr snippet); void replaceLastMessage(const QString& newMessage); void replaceLastMessage(const QString& newMessage, const QString& note); void rememberScrolledToBottom(); void setAckXML(const QString& id, const QString& xml); signals: void gotFocus(); public slots: void copySelectionToClipboard(); void scrollToBottom(); void handleLinkClicked(const QUrl&); void handleKeyPressEvent(QKeyEvent* event); void resetView(); private slots: void handleViewLoadFinished(bool); void handleFrameSizeChanged(); void handleClearRequested(); private: void headerEncode(); void messageEncode(); void addQueuedSnippets(); void addToDOM(boost::shared_ptr snippet); QWebElement snippetToDOM(boost::shared_ptr snippet); bool viewReady_; bool isAtBottom_; QtWebView* webView_; QWebPage* webPage_; QList > queuedSnippets_; QtChatTheme* theme_; QWebElement newInsertPoint_; QWebElement lastElement_; QWebElement document_; }; } #endif