diff --git a/src/plugins/git/gerrit/gerritdialog.cpp b/src/plugins/git/gerrit/gerritdialog.cpp index 8ed04952b72..af471345dc6 100644 --- a/src/plugins/git/gerrit/gerritdialog.cpp +++ b/src/plugins/git/gerrit/gerritdialog.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -110,6 +111,10 @@ GerritDialog::GerritDialog(const QSharedPointer &p, connect(m_ui->treeView, &QAbstractItemView::activated, this, &GerritDialog::slotActivated); + m_ui->resetRemoteButton->setIcon(Utils::Icons::RESET_TOOLBAR.icon()); + connect(m_ui->resetRemoteButton, &QToolButton::clicked, + this, [this] { updateRemotes(true); }); + m_displayButton = addActionButton(tr("&Show"), [this]() { slotFetchDisplay(); }); m_cherryPickButton = addActionButton(tr("Cherry &Pick"), [this]() { slotFetchCherryPick(); }); m_checkoutButton = addActionButton(tr("C&heckout"), [this]() { slotFetchCheckout(); }); @@ -225,7 +230,7 @@ void GerritDialog::remoteChanged() slotRefresh(); } -void GerritDialog::updateRemotes() +void GerritDialog::updateRemotes(bool forceReload) { m_ui->remoteComboBox->clear(); if (m_repository.isEmpty() || !QFileInfo(m_repository).isDir()) @@ -239,7 +244,7 @@ void GerritDialog::updateRemotes() while (mapIt.hasNext()) { mapIt.next(); GerritServer server; - if (!server.fillFromRemote(mapIt.value(), *m_parameters)) + if (!server.fillFromRemote(mapIt.value(), *m_parameters, forceReload)) continue; addRemote(server, mapIt.key()); } diff --git a/src/plugins/git/gerrit/gerritdialog.h b/src/plugins/git/gerrit/gerritdialog.h index 21c4500be3c..6c1f087764e 100644 --- a/src/plugins/git/gerrit/gerritdialog.h +++ b/src/plugins/git/gerrit/gerritdialog.h @@ -76,7 +76,7 @@ private: void slotFetchCheckout(); void slotRefresh(); void remoteChanged(); - void updateRemotes(); + void updateRemotes(bool forceReload = false); void addRemote(const GerritServer &server, const QString &name); void manageProgressIndicator(); diff --git a/src/plugins/git/gerrit/gerritdialog.ui b/src/plugins/git/gerrit/gerritdialog.ui index cf8ce050d7c..c7be2cd2cda 100644 --- a/src/plugins/git/gerrit/gerritdialog.ui +++ b/src/plugins/git/gerrit/gerritdialog.ui @@ -65,6 +65,13 @@ + + + + Refresh Remote Servers + + + diff --git a/src/plugins/git/gerrit/gerritserver.cpp b/src/plugins/git/gerrit/gerritserver.cpp index babe4fd0f47..668e7f0e3dc 100644 --- a/src/plugins/git/gerrit/gerritserver.cpp +++ b/src/plugins/git/gerrit/gerritserver.cpp @@ -118,7 +118,9 @@ QString GerritServer::url(UrlType urlType) const return res; } -bool GerritServer::fillFromRemote(const QString &remote, const GerritParameters ¶meters) +bool GerritServer::fillFromRemote(const QString &remote, + const GerritParameters ¶meters, + bool forceReload) { const GitRemote r(remote); if (!r.isValid) @@ -143,7 +145,8 @@ bool GerritServer::fillFromRemote(const QString &remote, const GerritParameters curlBinary = parameters.curl; if (curlBinary.isEmpty() || !QFile::exists(curlBinary)) return false; - switch (loadSettings()) { + const StoredHostValidity validity = forceReload ? Invalid : loadSettings(); + switch (validity) { case Invalid: rootPath = r.path; // Strip the last part of the path, which is always the repo name diff --git a/src/plugins/git/gerrit/gerritserver.h b/src/plugins/git/gerrit/gerritserver.h index dad3a790851..f9f58236131 100644 --- a/src/plugins/git/gerrit/gerritserver.h +++ b/src/plugins/git/gerrit/gerritserver.h @@ -74,7 +74,7 @@ public: static QString defaultHost(); QString hostArgument() const; QString url(UrlType urlType = DefaultUrl) const; - bool fillFromRemote(const QString &remote, const GerritParameters ¶meters); + bool fillFromRemote(const QString &remote, const GerritParameters ¶meters, bool forceReload); StoredHostValidity loadSettings(); void saveSettings(StoredHostValidity validity) const; int testConnection();