diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp index 26406a3150c387e54cbe48bf1d21b29b962882c8..57a21dee21997c75ba089fa6d951154a13251c1f 100644 --- a/src/plugins/cpaster/codepasterprotocol.cpp +++ b/src/plugins/cpaster/codepasterprotocol.cpp @@ -118,17 +118,22 @@ Core::IOptionsPage* CodePasterProtocol::settingsPage() void CodePasterProtocol::fetchFinished() { - if (reply->error()) { - ICore::instance()->messageManager()->printToOutputPane(reply->errorString(), true); + QString title; + QString content; + bool error = reply->error(); + if (error) { + content = reply->errorString(); } else { - QString data = reply->readAll(); - if (data.contains("<B>No such paste!</B>")) - ICore::instance()->messageManager()->printToOutputPane(tr("No such paste"), true); - QString title = QString::fromLatin1("Codepaster: %1").arg(fetchId); - EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, data); + content = reply->readAll(); + if (content.contains("<B>No such paste!</B>")) { + content = tr("No such paste"); + error = true; + } + title = QString::fromLatin1("Codepaster: %1").arg(fetchId); } reply->deleteLater(); reply = 0; + emit fetchDone(title, content, error); } void CodePasterProtocol::listFinished() diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp index d4ca9a4daf695b19fec6f2fc425e23080af7ef52..3dffbcadd3e7439ce7473cc50343ad06dd17bbbd 100644 --- a/src/plugins/cpaster/cpasterplugin.cpp +++ b/src/plugins/cpaster/cpasterplugin.cpp @@ -95,6 +95,8 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m 0}; for(int i=0; protos[i] != 0; ++i) { connect(protos[i], SIGNAL(pasteDone(QString)), this, SLOT(finishPost(QString))); + connect(protos[i], SIGNAL(fetchDone(QString,QString,bool)), + this, SLOT(finishFetch(QString,QString,bool))); m_settingsPage->addProtocol(protos[i]->name()); if (protos[i]->hasSettings()) addObject(protos[i]->settingsPage()); @@ -251,4 +253,16 @@ void CodepasterPlugin::finishPost(const QString &link) m_settingsPage->displayOutput()); } +void CodepasterPlugin::finishFetch(const QString &titleDescription, + const QString &content, + bool error) +{ + QString title = titleDescription; + if (error) { + ICore::instance()->messageManager()->printToOutputPane(content, true); + } else { + EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, content); + } +} + Q_EXPORT_PLUGIN(CodepasterPlugin) diff --git a/src/plugins/cpaster/cpasterplugin.h b/src/plugins/cpaster/cpasterplugin.h index ea2af4a7e8b279ef86de9d90411acffcb62e6008..210a26d1f106c497603023b78abd77658f67b0cb 100644 --- a/src/plugins/cpaster/cpasterplugin.h +++ b/src/plugins/cpaster/cpasterplugin.h @@ -64,6 +64,9 @@ public slots: void post(); void fetch(); void finishPost(const QString &link); + void finishFetch(const QString &titleDescription, + const QString &content, + bool error); private: QAction *m_postAction; diff --git a/src/plugins/cpaster/pastebindotcomprotocol.cpp b/src/plugins/cpaster/pastebindotcomprotocol.cpp index 166fb936325ad4da950974706c38ccc2f7bbde48..4dc047cd512f0d2e3eb34885f151daefa7cca893 100644 --- a/src/plugins/cpaster/pastebindotcomprotocol.cpp +++ b/src/plugins/cpaster/pastebindotcomprotocol.cpp @@ -115,14 +115,18 @@ void PasteBinDotComProtocol::postRequestFinished(int id, bool error) void PasteBinDotComProtocol::fetchFinished() { - if (reply->error()) { - ICore::instance()->messageManager()->printToOutputPane(reply->errorString(), true); + QString title; + QString content; + bool error = reply->error(); + if (error) { + content = reply->errorString(); } else { - QString title = QString::fromLatin1("Pastebin.com: %1").arg(fetchId); - QString data = reply->readAll(); - EditorManager::instance()->newFile(Core::Constants::K_DEFAULT_TEXT_EDITOR, &title, data); + title = QString::fromLatin1("Pastebin.com: %1").arg(fetchId); + content = reply->readAll(); } reply->deleteLater(); + reply = 0; + emit fetchDone(title, content, error); } Core::IOptionsPage* PasteBinDotComProtocol::settingsPage() diff --git a/src/plugins/cpaster/protocol.h b/src/plugins/cpaster/protocol.h index a45c04790c65e01fe794f396ca8385a874bd934b..5b45326c06c6db9ed58ebda05b310c0045a8fef0 100644 --- a/src/plugins/cpaster/protocol.h +++ b/src/plugins/cpaster/protocol.h @@ -61,6 +61,9 @@ public: signals: void pasteDone(const QString &link); + void fetchDone(const QString &titleDescription, + const QString &content, + bool error); }; #endif // PROTOCOL_H