Gerrit: Update remotes on settings change

If the user is changed, we need to refresh at least the fallback server.

Task-number: QTCREATORBUG-20536
Change-Id: If21830ae5607907db9aaee164bc85b971ff93010
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Orgad Shaneh
2018-05-31 22:16:46 +03:00
committed by Orgad Shaneh
parent 4a868d6a18
commit 909f30f006
5 changed files with 30 additions and 1 deletions

View File

@@ -216,6 +216,23 @@ void GerritDialog::refresh()
m_ui->treeView->sortByColumn(-1);
}
void GerritDialog::scheduleUpdateRemotes()
{
if (isVisible())
updateRemotes();
else
m_shouldUpdateRemotes = true;
}
void GerritDialog::showEvent(QShowEvent *event)
{
QDialog::showEvent(event);
if (m_shouldUpdateRemotes) {
m_shouldUpdateRemotes = false;
updateRemotes();
}
}
void GerritDialog::remoteChanged()
{
const GerritServer server = m_ui->remoteComboBox->currentServer();

View File

@@ -62,6 +62,7 @@ public:
void fetchStarted(const QSharedPointer<Gerrit::Internal::GerritChange> &change);
void fetchFinished();
void refresh();
void scheduleUpdateRemotes();
signals:
void fetchDisplay(const QSharedPointer<Gerrit::Internal::GerritChange> &);
@@ -77,6 +78,7 @@ private:
void slotFetchCheckout();
void remoteChanged();
void updateRemotes(bool forceReload = false);
void showEvent(QShowEvent *event) override;
void manageProgressIndicator();
@@ -101,6 +103,7 @@ private:
QString m_repository;
bool m_fetchRunning = false;
bool m_updatingRemotes = false;
bool m_shouldUpdateRemotes = false;
};
} // namespace Internal

View File

@@ -72,6 +72,7 @@ void GerritOptionsPage::apply()
newParameters.setPortFlagBySshType();
*m_parameters = newParameters;
m_parameters->toSettings(Core::ICore::settings());
emit settingsChanged();
}
}
}

View File

@@ -73,6 +73,9 @@ public:
void apply() override;
void finish() override;
signals:
void settingsChanged();
private:
const QSharedPointer<GerritParameters> &m_parameters;
QPointer<GerritOptionsWidget> m_widget;

View File

@@ -292,7 +292,12 @@ bool GerritPlugin::initialize(ActionContainer *ac)
connect(pushAction, &QAction::triggered, this, [this]() { push(); });
ac->addAction(m_pushToGerritCommand);
new GerritOptionsPage(m_parameters, this);
auto options = new GerritOptionsPage(m_parameters, this);
connect(options, &GerritOptionsPage::settingsChanged,
this, [this] {
if (m_dialog)
m_dialog->scheduleUpdateRemotes();
});
return true;
}