From 473a736689a05bebabd70e94434fe75fe5959bff Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Fri, 23 Apr 2010 15:07:34 +0200
Subject: [PATCH] CodePaster: Clean up configuration checks, part II

Point user to settings if something goes wrong.
---
 src/plugins/cpaster/codepasterprotocol.cpp | 22 ++++++++--------------
 src/plugins/cpaster/codepasterprotocol.h   |  4 ++--
 2 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp
index f86c9f800b6..dcf2159bb10 100644
--- a/src/plugins/cpaster/codepasterprotocol.cpp
+++ b/src/plugins/cpaster/codepasterprotocol.cpp
@@ -71,17 +71,17 @@ unsigned CodePasterProtocol::capabilities() const
     return ListCapability|PostCommentCapability|PostDescriptionCapability;
 }
 
-bool CodePasterProtocol::isValidHostName(const QString& hostName)
+bool CodePasterProtocol::checkConfiguration(QString *errorMessage) const
 {
-    if (hostName.isEmpty()) {
-        Core::ICore::instance()->messageManager()->printToOutputPane(
+    if (m_page->hostName().isEmpty()) {
+        if (errorMessage) {
+            *errorMessage =
 #ifdef Q_OS_MAC
-                       tr("No Server defined in the CodePaster preferences."),
+                       tr("No Server defined in the CodePaster preferences.");
 #else
-                       tr("No Server defined in the CodePaster options."),
+                       tr("No Server defined in the CodePaster options.");
 #endif
-                       true /*error*/);
-        Core::ICore::instance()->messageManager()->showOutputPane();
+        }
         return false;
     }
     return true;
@@ -92,8 +92,6 @@ void CodePasterProtocol::fetch(const QString &id)
     QTC_ASSERT(!m_fetchReply, return; )
 
     QString hostName = m_page->hostName();
-    if (!isValidHostName(hostName))
-        return;
     QString link = "http://";
     link.append(hostName);
     link.append("/?format=raw&id=");
@@ -108,8 +106,6 @@ void CodePasterProtocol::list()
     QTC_ASSERT(!m_listReply, return; )
 
     QString hostName = m_page->hostName();
-    if (!isValidHostName(hostName))
-        return;
     QString link = QLatin1String("http://");
     link += hostName;
     link += QLatin1String("/?command=browse&format=raw");
@@ -125,8 +121,6 @@ void CodePasterProtocol::paste(const QString &text,
 {
     QTC_ASSERT(!m_pasteReply, return; )
     const QString hostName = m_page->hostName();
-    if (!isValidHostName(hostName))
-        return;
 
     QByteArray data = "command=processcreate&submit=submit&highlight_type=0&description=";
     data += QUrl::toPercentEncoding(description);
@@ -165,7 +159,7 @@ bool CodePasterProtocol::hasSettings() const
     return true;
 }
 
-Core::IOptionsPage *CodePasterProtocol::settingsPage()
+Core::IOptionsPage *CodePasterProtocol::settingsPage() const
 {
     return m_page;
 }
diff --git a/src/plugins/cpaster/codepasterprotocol.h b/src/plugins/cpaster/codepasterprotocol.h
index 554169fd194..e899248ad07 100644
--- a/src/plugins/cpaster/codepasterprotocol.h
+++ b/src/plugins/cpaster/codepasterprotocol.h
@@ -51,8 +51,9 @@ public:
 
     virtual unsigned capabilities() const;
     bool hasSettings() const;
-    Core::IOptionsPage *settingsPage();
+    Core::IOptionsPage *settingsPage() const;
 
+    virtual bool checkConfiguration(QString *errorMessage = 0) const;
     void fetch(const QString &id);
     void list();
     void paste(const QString &text,
@@ -66,7 +67,6 @@ public slots:
     void pasteFinished();
 
 private:
-    bool isValidHostName(const QString& hostName);
     CodePasterSettingsPage *m_page;
     QNetworkReply *m_pasteReply;
     QNetworkReply *m_fetchReply;
-- 
GitLab