00001 #include "mainwindow.hpp" 00002 #include <QMenuBar> 00003 #include <QNetworkRequest> 00004 #include <QNetworkReply> 00005 #include <QDebug> 00006 #include <QLabel> 00007 #include <QMenu> 00008 #include <QActionGroup> 00009 #include <QSplitter> 00010 #include <QClipboard> 00011 #include <QApplication> 00012 #include <QStatusBar> 00013 #include <QPlainTextEdit> 00014 #include <QNetworkProxyFactory> 00015 #include <QVariant> 00016 #include <QString> 00017 #include <QDesktopServices> 00018 #include <QExtend/Core/JsonParser> 00019 using namespace QExtend; 00020 QStringList wsStyle = QStringList() <<"default"<<"earth"<<"modern-blue"<<"mscgen"<<"omegapple"<<"qsd"<<"rose"<<"roundgreen"<<"napkin"; 00021 00022 00023 MainWindow::MainWindow(QWidget *parent) 00024 : QMainWindow(parent),m_styleAction(this) 00025 { 00026 QList<QNetworkProxy> lp = QNetworkProxyFactory::systemProxyForQuery (QUrl("http://www.websequencediagrams.com/")); 00027 m_manager.setProxy(lp[0]); 00028 00029 QSplitter * split = new QSplitter; 00030 split->addWidget(m_editor); 00031 split->addWidget(m_display); 00032 setCentralWidget(split); 00033 00034 00035 m_styleAction->setExclusive(true); 00036 foreach (const QString & s,wsStyle) 00037 { 00038 m_styleAction->addAction (s)->setCheckable (true); 00039 } 00040 00041 00042 QMenu * menu = menuBar()->addMenu("style"); 00043 menu->addActions(m_styleAction->actions()); 00044 menuBar()->addAction("Copy to clipboard",this,SLOT(copyTtoClipboard())); 00045 menuBar()->addAction("Help",this,SLOT(help())); 00046 00047 m_actionScheduler->addListenEmitter(EMITTER(m_editor , textChanged ())); 00048 m_actionScheduler->addListenProperty(m_editor,"plainText", "message"); 00049 foreach(const QAction * act, m_styleAction->actions()) 00050 { 00051 m_actionScheduler->addListenEmitterProperty(EMITTER(act , toggled ( bool) ) , "text", "style"); 00052 } 00053 00054 00055 EMITTER( m_actionScheduler , launchAction(const QVariantMap &) ) >> RECEIVER ( this , sendRequest(const QVariantMap &) ); 00056 EMITTER( this , loadFinished()) >> RECEIVER (m_actionScheduler , actionFinished()); 00057 00058 m_styleAction->actions()[2]->setChecked(true); 00059 00060 00061 00062 connect(&m_manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply *))); 00063 } 00064 00065 MainWindow::~MainWindow() 00066 { 00067 00068 } 00069 00070 void MainWindow::requestFinished(QNetworkReply *reply) 00071 { 00072 QString content = reply->header(QNetworkRequest::ContentTypeHeader).toString(); 00073 qDebug() << content; 00074 if(content =="text/html" ) 00075 { 00076 00077 QString val = reply->readAll(); 00078 JsonParser parser; 00079 QVariantMap tt = parser.parse(val); 00080 00081 qDebug() << tt; 00082 if(!tt["errors"].toList().isEmpty()) 00083 { 00084 statusBar()->showMessage(tt["errors"].toString()); 00085 } 00086 else 00087 { 00088 statusBar()->showMessage("downloading"); 00089 00090 QString uu = tt["img"].toString(); 00091 m_manager.get(QNetworkRequest("http://www.websequencediagrams.com/"+uu)); 00092 return; 00093 } 00094 } 00095 else 00096 { 00097 statusBar()->showMessage("OK"); 00098 QPixmap pixmap; 00099 pixmap.loadFromData(reply->readAll()); 00100 m_display->setPixmap(pixmap); 00101 00102 } 00103 emit loadFinished(); 00104 00105 } 00106 00107 00108 00109 void MainWindow::sendRequest(const QVariantMap & map) 00110 { 00111 QUrl url; 00112 url.addQueryItem("style",map["style"].toString()); 00113 url.addEncodedQueryItem("message",QUrl::toPercentEncoding (map["message"].toString())); 00114 qDebug() << url.encodedQuery(); 00115 00116 QNetworkRequest request(QString("http://www.websequencediagrams.com")); 00117 m_manager.post(request,url.encodedQuery()); 00118 00119 } 00120 00121 void MainWindow::copyTtoClipboard() 00122 { 00123 QClipboard *clipboard = QApplication::clipboard(); 00124 clipboard->setPixmap(*m_display->pixmap()); 00125 } 00126 void MainWindow::help() 00127 { 00128 QDesktopServices::openUrl(QUrl("http://www.websequencediagrams.com/examples.html")); 00129 } 00130
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2010 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.