/* * Copyright (c) 2010 Remko Tronçon * Licensed under the GNU General Public License v3. * See Documentation/Licenses/GPLv3.txt for more information. */ #include <QtDebug> #include <QApplication> #include <iostream> #include <QWidget> #include <QFile> #include <QDateTime> #include <QLineEdit> #include <QVBoxLayout> #include <QWebView> #include <QWebFrame> #include <QNetworkRequest> #include <QNetworkReply> #include <QNetworkAccessManager> #include "../QtChatView.h" #include "../MessageSnippet.h" #include "../SystemMessageSnippet.h" using namespace Swift; /* class MyNetworkReply : public QNetworkReply { public: MyNetworkReply() { } qint64 readData(char*, qint64) { return 0; } virtual void abort() { } }; class MyNetworkAccessManager : public QNetworkAccessManager { public: MyNetworkAccessManager() { } QNetworkReply * createRequest (Operation op, const QNetworkRequest& request, QIODevice* outgoingData = 0) { assert(op == QNetworkAccessManager::GetOperation); qDebug() << "Requesting: " << request.url(); return QNetworkAccessManager::createRequest(op, request, outgoingData); //return new MyNetworkReply(); } }; QVBoxLayout* mainLayout = new QVBoxLayout(this); webView_ = new QWebView(this); QFile file(":/themes/Stockholm/Contents/Resources/Incoming/Content.html"); file.open(QIODevice::ReadOnly); QString content = QString::fromUtf8(file.readAll()); webPage_ = new QWebPage(this); webPage_->setNetworkAccessManager(new MyNetworkAccessManager()); webView_->setPage(webPage_); QString pagehtml = "<head>" //"<base href=\"file:///Users/remko/src/swift/resources/themes/Stockholm/Contents/Resources/\"/>" "<base href=\"file:///Users/remko/src/swift/resources/themes/Stockholm/Contents/Resources/\"/>" "<link rel=\"stylesheet\" type=\"text/css\" href=\"main.css\"/>" "<link rel=\"stylesheet\" type=\"text/css\" href=\"Variants/Alt Blue - Blue.css\"/>" "</head><body>" + content + "</body>"; qDebug() << pagehtml; webPage_->mainFrame()->setHtml(pagehtml); */ /* class ChatView : public QWidget { public: ChatView(QWidget* parent) : QWidget(parent) { setFocusPolicy(Qt::NoFocus); QVBoxLayout* mainLayout = new QVBoxLayout(this); mainLayout->setSpacing(0); mainLayout->setContentsMargins(0,0,0,0); webView_ = new QWebView(this); webView_->setFocusPolicy(Qt::NoFocus); mainLayout->addWidget(webView_); webPage_ = new QWebPage(this); webPage_->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); webView_->setPage(webPage_); connect(webPage_, SIGNAL(selectionChanged()), SLOT(copySelectionToClipboard())); QString pageHTML = "<head></head><body><div id=\"chat\"></div></body>"; webPage_->mainFrame()->setHtml(pageHTML); } void appendHTML(const QString& html) { webPage_->mainFrame()->evaluateJavaScript( "newNode = document.createElement(\"div\");" "newNode.innerHTML = \"" + html + "\";" "chatElement = document.getElementById(\"chat\");" "chatElement.appendChild(newNode);"); webPage_->mainFrame()->setScrollBarValue(Qt::Vertical, webPage_->mainFrame()->scrollBarMaximum(Qt::Vertical)); } private: QWebView* webView_; QWebPage* webPage_; }; */ class MyWidget : public QWidget { Q_OBJECT public: MyWidget() : previousWasIncoming_(false), previousWasOutgoing_(false), previousWasSystem_(false) { QVBoxLayout* mainLayout = new QVBoxLayout(this); chatView_ = new QtChatView(this); mainLayout->addWidget(chatView_); input1_ = new QLineEdit(this); connect(input1_, SIGNAL(returnPressed()), SLOT(addIncoming())); mainLayout->addWidget(input1_); input2_ = new QLineEdit(this); connect(input2_, SIGNAL(returnPressed()), SLOT(addOutgoing())); mainLayout->addWidget(input2_); input3_ = new QLineEdit(this); connect(input3_, SIGNAL(returnPressed()), SLOT(addSystem())); mainLayout->addWidget(input3_); resize(300,200); } public slots: void addIncoming() { chatView_->addMessage(MessageSnippet(input1_->text(), "Me", QDateTime::currentDateTime(), "qrc:/icons/avatar.png", true, previousWasIncoming_)); previousWasIncoming_ = true; previousWasOutgoing_ = false; previousWasSystem_ = false; input1_->clear(); } void addOutgoing() { chatView_->addMessage(MessageSnippet(input2_->text(), "You", QDateTime::currentDateTime(), "qrc:/icons/avatar.png", false, previousWasOutgoing_)); previousWasIncoming_ = false; previousWasOutgoing_ = true; previousWasSystem_ = false; input2_->clear(); } void addSystem() { chatView_->addMessage(SystemMessageSnippet(input3_->text(), QDateTime::currentDateTime(), previousWasSystem_)); previousWasIncoming_ = false; previousWasOutgoing_ = false; previousWasSystem_ = true; input3_->clear(); } private: bool previousWasIncoming_; bool previousWasOutgoing_; bool previousWasSystem_; QtChatView* chatView_; QLineEdit* input1_; QLineEdit* input2_; QLineEdit* input3_; }; int main(int argc, char* argv[]) { QApplication app(argc, argv); MyWidget w; w.show(); return app.exec(); } #include "main.moc"