aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpaster/urlopenprotocol.cpp
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2012-05-16 14:51:01 +0400
committerTobias Hunger <tobias.hunger@nokia.com>2012-05-16 16:58:00 +0200
commit338524baab706c15a0d0838b01e34a77139c79a2 (patch)
tree3330e5691dd5f1a92c54325d097548ce1e1f2710 /src/plugins/cpaster/urlopenprotocol.cpp
parentf17ad979973c479c43fcb52c9788e46dbed3e380 (diff)
Added "Open URL" action.
It was implemented in CodepasterPlugin because it provides facility to fetch files from network into editor with proper error reporting. Change-Id: I1ea7f1799dfa3ca8423a06a64b43b419f23046eb Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Diffstat (limited to 'src/plugins/cpaster/urlopenprotocol.cpp')
-rw-r--r--src/plugins/cpaster/urlopenprotocol.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/plugins/cpaster/urlopenprotocol.cpp b/src/plugins/cpaster/urlopenprotocol.cpp
new file mode 100644
index 00000000000..710c60b3012
--- /dev/null
+++ b/src/plugins/cpaster/urlopenprotocol.cpp
@@ -0,0 +1,50 @@
+#include "urlopenprotocol.h"
+
+#include <utils/qtcassert.h>
+
+#include <QFileInfo>
+#include <QNetworkReply>
+
+using namespace CodePaster;
+
+UrlOpenProtocol::UrlOpenProtocol(const NetworkAccessManagerProxyPtr &nw)
+ : NetworkProtocol(nw), m_fetchReply(0)
+{
+}
+
+QString UrlOpenProtocol::name() const
+{
+ return QLatin1String("Open URL"); // unused
+}
+
+unsigned UrlOpenProtocol::capabilities() const
+{
+ return 0;
+}
+
+void UrlOpenProtocol::fetch(const QString &url)
+{
+ QTC_ASSERT(!m_fetchReply, return);
+ m_fetchReply = httpGet(url);
+ connect(m_fetchReply, SIGNAL(finished()), this, SLOT(fetchFinished()));
+}
+
+void UrlOpenProtocol::fetchFinished()
+{
+ const QString title = m_fetchReply->url().toString();
+ QString content;
+ const bool error = m_fetchReply->error();
+ if (error) {
+ content = m_fetchReply->errorString();
+ } else {
+ content = QString::fromUtf8(m_fetchReply->readAll());
+ }
+ m_fetchReply->deleteLater();
+ m_fetchReply = 0;
+ emit fetchDone(title, content, error);
+}
+
+void UrlOpenProtocol::paste(const QString &, ContentType, const QString &,
+ const QString &, const QString &)
+{
+}