diff options
| author | Thilo Cestonaro <thilo@cestona.ro> | 2012-09-02 20:27:42 (GMT) | 
|---|---|---|
| committer | Thilo Cestonaro <thilo@cestona.ro> | 2012-09-02 20:32:56 (GMT) | 
| commit | c889fadf1dede0955ce74ce6897094e4f0c3e341 (patch) | |
| tree | be6a461a337fa9f46d9d9ac5e973d4e035c67a46 /Swift/QtUI/QtWebKitChatView.h | |
| parent | 6856199274e9c5e581220fccf520b8f011519d17 (diff) | |
| download | swift-contrib-c889fadf1dede0955ce74ce6897094e4f0c3e341.zip swift-contrib-c889fadf1dede0955ce74ce6897094e4f0c3e341.tar.bz2 | |
moved QtChatWindow Log stuff into QtWebKitChatViewephraim/chatview
added QtChatViewFactory
started implementation of QtBarriersFreeChatView
License: This patch is BSD-licensed, see http://www.opensource.org/licenses/bsd-license.php
Diffstat (limited to 'Swift/QtUI/QtWebKitChatView.h')
| -rw-r--r-- | Swift/QtUI/QtWebKitChatView.h | 145 | 
1 files changed, 145 insertions, 0 deletions
| diff --git a/Swift/QtUI/QtWebKitChatView.h b/Swift/QtUI/QtWebKitChatView.h new file mode 100644 index 0000000..45585c8 --- /dev/null +++ b/Swift/QtUI/QtWebKitChatView.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +/* + * Copyright (c) 2012 Thilo Cestonaro + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#ifndef SWIFT_QtWebKitChatView_H +#define SWIFT_QtWebKitChatView_H + +#include <QString> +#include <QWidget> +#include <QList> +#include <QWebElement> +#include <QInputDialog> +#include <QFileDialog> + +#include <boost/shared_ptr.hpp> + +#include "MessageSnippet.h" + +#include "QtChatView.h" +#include <Swift/Controllers/UIInterfaces/ChatWindow.h> +#include "Swift/Controllers/Settings/SettingsProvider.h" + +#include <SwifTools/LastLineTracker.h> + +class QWebPage; +class QUrl; + +namespace Swift { +	class QtWebView; +	class QtChatTheme; +	class UIEventStream; +	class QtChatWindowJSBridge; + +	class QtWebKitChatView : public QtChatView { +			Q_OBJECT + +		public: +			static const QString ButtonFileTransferCancel; +			static const QString ButtonFileTransferSetDescription; +			static const QString ButtonFileTransferSendRequest; +			static const QString ButtonFileTransferAcceptRequest; +			static const QString ButtonMUCInvite; + +		public: +			QtWebKitChatView(QtChatTheme* theme, QWidget* parent, UIEventStream* eventStream, SettingsProvider* settings, QMap<QString, QString> emoticons); +			virtual ~QtWebKitChatView(); +			void addMessage(boost::shared_ptr<ChatSnippet> snippet); +			void addLastSeenLine(); +			void replaceWithAction(const std::string& message, const std::string& id, const boost::posix_time::ptime& time); +			void replaceLastMessage(const QString& newMessage); +			void replaceLastMessage(const QString& newMessage, const QString& note); +			void replaceMessage(const std::string& newMessage, const QString& id, const QDateTime& time, const QString& style); +			void replaceMessage(const QString& message, const QString& id, const QDateTime& time, const QString& style); +			void rememberScrolledToBottom(); +			void setAckXML(const QString& id, const QString& xml); +			void setReceiptXML(const QString& id, const QString& xml); +			void displayReceiptInfo(const QString& id, bool showIt); +			QString linkimoticonify(const QString& message) const; + +			QString getLastSentMessage(); +			void addToJSEnvironment(const QString&, QObject*); +			void setFileTransferStatus(QString id, const ChatWindow::FileTransferState state, const QString& msg); +			void setFileTransferProgress(QString id, const int percentageDone); +			void setMUCInvitationJoined(QString id); +			void showEmoticons(bool show); +			void setAckState(std::string const& id, ChatWindow::AckState); +			void setMessageReceiptState(const std::string& id, ChatWindow::ReceiptState state); +			std::string addMessage(const std::string &message, const std::string &senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const QString& style, const boost::posix_time::ptime& time); +			std::string addMessage(const QString& message, const std::string& senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const QString& style, const boost::posix_time::ptime& time); +			void setChatWindowHasFocus(bool focus); +			std::string addAction(const std::string &message, const std::string &senderName, bool senderIsSelf, boost::shared_ptr<SecurityLabel> label, const std::string& avatarPath, const boost::posix_time::ptime& time); +			std::string addFileTransfer(const std::string& senderName, bool senderIsSelf, const std::string& filename, const boost::uintmax_t sizeInBytes); +			void addErrorMessage(const std::string& errorMessage); +			void addSystemMessage(const std::string& message); +			void addPresenceMessage(const std::string& message); +			void addMUCInvitation(const std::string& senderName, const JID& jid, const std::string& reason, const std::string& password, bool direct); + +			static QString buildChatWindowButton(const QString& name, const QString& id, const QString& arg1 = QString(), const QString& arg2 = QString(), const QString& arg3 = QString()); + +		public slots: +			void copySelectionToClipboard(); +			void scrollToBottom(); +			void handleLinkClicked(const QUrl&); +			void handleKeyPressEvent(QKeyEvent* event); +			void resetView(); +			void increaseFontSize(int numSteps = 1); +			void decreaseFontSize(); +			void resizeFont(int fontSizeSteps); + +		private slots: +			void handleViewLoadFinished(bool); +			void handleFrameSizeChanged(); +			void handleClearRequested(); +			void handleHTMLButtonClicked(QString id, QString arg1, QString arg2, QString arg3); + +		private: +			enum PreviousMessageKind { +				PreviosuMessageWasNone, +				PreviousMessageWasMessage, +				PreviousMessageWasSystem, +				PreviousMessageWasPresence, +				PreviousMessageWasFileTransfer, +				PreviousMessageWasMUCInvite +			}; + +			void headerEncode(); +			void messageEncode(); +			void addToDOM(boost::shared_ptr<ChatSnippet> snippet); +			QWebElement snippetToDOM(boost::shared_ptr<ChatSnippet> snippet); +			bool appendToPreviousCheck(PreviousMessageKind messageKind, const std::string& senderName, bool senderIsSelf) const; +			void handleSettingChanged(const std::string& setting); + +			bool viewReady_; +			bool isAtBottom_; +			QtWebView* webView_; +			QWebPage* webPage_; +			int fontSizeSteps_; +			QtChatTheme* theme_; +			QWebElement newInsertPoint_; +			QWebElement lineSeparator_; +			QWebElement lastElement_; +			QWebElement document_; +			bool previousMessageWasSelf_; +			QString previousSenderName_; +			PreviousMessageKind previousMessageKind_; +			int idCounter_; +			LastLineTracker lastLineTracker_; +			UIEventStream* eventStream_; +			std::map<QString, QString> descriptions_; +			QtChatWindowJSBridge* jsBridge_; +			SettingsProvider* settings_; +			QMap<QString, QString> emoticons_; +			bool showEmoticons_; +	}; +} + +#endif | 
 Swift
 Swift