#include "mainwindow.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace QExtend; QStringList wsStyle = QStringList() <<"default"<<"earth"<<"modern-blue"<<"mscgen"<<"omegapple"<<"qsd"<<"rose"<<"roundgreen"<<"napkin"; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),m_styleAction(this) { QList lp = QNetworkProxyFactory::systemProxyForQuery (QUrl("http://www.websequencediagrams.com/")); m_manager.setProxy(lp[0]); QSplitter * split = new QSplitter; split->addWidget(m_editor); split->addWidget(m_display); setCentralWidget(split); m_styleAction->setExclusive(true); foreach (const QString & s,wsStyle) { m_styleAction->addAction (s)->setCheckable (true); } QMenu * menu = menuBar()->addMenu("style"); menu->addActions(m_styleAction->actions()); menuBar()->addAction("Copy to clipboard",this,SLOT(copyTtoClipboard())); menuBar()->addAction("Help",this,SLOT(help())); m_actionScheduler->addListenEmitter(EMITTER(m_editor , textChanged ())); m_actionScheduler->addListenProperty(m_editor,"plainText", "message"); foreach(const QAction * act, m_styleAction->actions()) { m_actionScheduler->addListenEmitterProperty(EMITTER(act , toggled ( bool) ) , "text", "style"); } EMITTER( m_actionScheduler , launchAction(const QVariantMap &) ) >> RECEIVER ( this , sendRequest(const QVariantMap &) ); EMITTER( this , loadFinished()) >> RECEIVER (m_actionScheduler , actionFinished()); m_styleAction->actions()[2]->setChecked(true); connect(&m_manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply *))); } MainWindow::~MainWindow() { } void MainWindow::requestFinished(QNetworkReply *reply) { QString content = reply->header(QNetworkRequest::ContentTypeHeader).toString(); qDebug() <<"requestFinished : " << content; QByteArray arr = reply->readAll(); qDebug() <<"requestFinished : " << arr; if(!content.contains("image") ) { QString val = arr; JsonParser parser; QVariantMap tt = parser.parse(val); qDebug() << tt; if(!tt["errors"].toList().isEmpty()) { statusBar()->showMessage(tt["errors"].toString()); } else { statusBar()->showMessage("downloading"); QString uu = tt["img"].toString(); m_manager.get(QNetworkRequest("http://www.websequencediagrams.com/"+uu)); return; } } else { statusBar()->showMessage("OK"); QPixmap pixmap; pixmap.loadFromData(arr); m_display->setPixmap(pixmap); } emit loadFinished(); } void MainWindow::sendRequest(const QVariantMap & map) { QUrl url; url.addQueryItem("style",map["style"].toString()); url.addEncodedQueryItem("message",QUrl::toPercentEncoding (map["message"].toString())); QNetworkRequest request(QString("http://www.websequencediagrams.com")); m_manager.post(request,url.encodedQuery()); } void MainWindow::copyTtoClipboard() { QClipboard *clipboard = QApplication::clipboard(); clipboard->setPixmap(*m_display->pixmap()); } void MainWindow::help() { QDesktopServices::openUrl(QUrl("http://www.websequencediagrams.com/examples.html")); }