From 5e798b0bf4d311779774aa40fbe0884dd9ca3b51 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Wed, 11 Oct 2017 05:44:30 +0300
Subject: [PATCH] Gerrit: Improve error message when Gerrit remote is missing

Task-number: QTCREATORBUG-18980
Change-Id: I99336732d59136f9aec9fc0a97fb3135e9c43f65
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
---
 src/plugins/git/gerrit/gerritplugin.cpp     |  6 +++---
 src/plugins/git/gerrit/gerritpushdialog.cpp | 10 +++++-----
 src/plugins/git/gerrit/gerritpushdialog.h   |  4 ++--
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/plugins/git/gerrit/gerritplugin.cpp b/src/plugins/git/gerrit/gerritplugin.cpp
index 5e088aa5a8..ba644b6530 100644
--- a/src/plugins/git/gerrit/gerritplugin.cpp
+++ b/src/plugins/git/gerrit/gerritplugin.cpp
@@ -317,9 +317,9 @@ void GerritPlugin::push(const QString &topLevel)
     // QScopedPointer is required to delete the dialog when leaving the function
     GerritPushDialog dialog(topLevel, m_reviewers, m_parameters, ICore::mainWindow());
 
-    if (!dialog.isValid()) {
-        QMessageBox::warning(ICore::mainWindow(), tr("Initialization Failed"),
-                              tr("Failed to initialize dialog. Aborting."));
+    const QString initErrorMessage = dialog.initErrorMessage();
+    if (!initErrorMessage.isEmpty()) {
+        QMessageBox::warning(ICore::mainWindow(), tr("Initialization Failed"), initErrorMessage);
         return;
     }
 
diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp
index d293373e0b..54c7f1f6af 100644
--- a/src/plugins/git/gerrit/gerritpushdialog.cpp
+++ b/src/plugins/git/gerrit/gerritpushdialog.cpp
@@ -135,8 +135,10 @@ GerritPushDialog::GerritPushDialog(const QString &workingDir, const QString &rev
 
     initRemoteBranches();
 
-    if (m_ui->remoteComboBox->isEmpty())
+    if (m_ui->remoteComboBox->isEmpty()) {
+        m_initErrorMessage = tr("Cannot find a Gerrit remote. Add one and try again.");
         return;
+    }
 
     m_ui->localBranchComboBox->init(workingDir);
     connect(m_ui->localBranchComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
@@ -158,8 +160,6 @@ GerritPushDialog::GerritPushDialog(const QString &workingDir, const QString &rev
 
     connect(m_ui->remoteComboBox, &GerritRemoteChooser::remoteChanged,
             this, [this] { setRemoteBranches(); });
-
-    m_isValid = true;
 }
 
 GerritPushDialog::~GerritPushDialog()
@@ -209,9 +209,9 @@ void GerritPushDialog::setChangeRange()
                 tr("Number of commits between %1 and %2: %3").arg(branch, remote, range));
 }
 
-bool GerritPushDialog::isValid() const
+QString GerritPushDialog::initErrorMessage() const
 {
-    return m_isValid;
+    return m_initErrorMessage;
 }
 
 void GerritPushDialog::storeTopic()
diff --git a/src/plugins/git/gerrit/gerritpushdialog.h b/src/plugins/git/gerrit/gerritpushdialog.h
index c425fd53d8..05f486386c 100644
--- a/src/plugins/git/gerrit/gerritpushdialog.h
+++ b/src/plugins/git/gerrit/gerritpushdialog.h
@@ -56,7 +56,7 @@ public:
     QString selectedPushType() const;
     QString selectedTopic() const;
     QString reviewers() const;
-    bool isValid() const;
+    QString initErrorMessage() const;
     void storeTopic();
 
 private:
@@ -73,9 +73,9 @@ private:
     QString calculateChangeRange(const QString &branch);
     QString m_workingDir;
     QString m_suggestedRemoteBranch;
+    QString m_initErrorMessage;
     Ui::GerritPushDialog *m_ui;
     RemoteBranchesMap m_remoteBranches;
-    bool m_isValid = false;
     bool m_hasLocalCommits = false;
 };
 
-- 
GitLab