GitLab: Use apply functor in GitLabOptionsWidget

Babystep towards removing QObject inheritance of IOptionsPage

Change-Id: Ib36b8ce4dd1f6878abdfe20c0c4e3ddb95e927dd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-05-08 11:29:27 +02:00
parent de859dfd43
commit aa8a76c357

View File

@@ -134,18 +134,6 @@ class GitLabOptionsWidget : public Core::IOptionsPageWidget
public: public:
explicit GitLabOptionsWidget(GitLabOptionsPage *page, GitLabParameters *parameters); explicit GitLabOptionsWidget(GitLabOptionsPage *page, GitLabParameters *parameters);
GitLabParameters parameters() const;
void apply() final
{
GitLabParameters newParameters = parameters();
if (newParameters != *m_parameters) {
*m_parameters = newParameters;
m_parameters->toSettings(Core::ICore::settings());
emit m_page->settingsChanged();
}
}
private: private:
void showEditServerDialog(); void showEditServerDialog();
void showAddServerDialog(); void showAddServerDialog();
@@ -154,7 +142,6 @@ private:
void modifyCurrentServer(const GitLabServer &newServer); void modifyCurrentServer(const GitLabServer &newServer);
void updateButtonsState(); void updateButtonsState();
GitLabOptionsPage *m_page = nullptr;
GitLabParameters *m_parameters = nullptr; GitLabParameters *m_parameters = nullptr;
GitLabServerWidget *m_gitLabServerWidget = nullptr; GitLabServerWidget *m_gitLabServerWidget = nullptr;
QPushButton *m_edit = nullptr; QPushButton *m_edit = nullptr;
@@ -165,7 +152,7 @@ private:
}; };
GitLabOptionsWidget::GitLabOptionsWidget(GitLabOptionsPage *page, GitLabParameters *params) GitLabOptionsWidget::GitLabOptionsWidget(GitLabOptionsPage *page, GitLabParameters *params)
: m_page(page), m_parameters(params) : m_parameters(params)
{ {
auto defaultLabel = new QLabel(Tr::tr("Default:"), this); auto defaultLabel = new QLabel(Tr::tr("Default:"), this);
m_defaultGitLabServer = new QComboBox(this); m_defaultGitLabServer = new QComboBox(this);
@@ -213,18 +200,22 @@ GitLabOptionsWidget::GitLabOptionsWidget(GitLabOptionsPage *page, GitLabParamete
m_gitLabServerWidget->setGitLabServer( m_gitLabServerWidget->setGitLabServer(
m_defaultGitLabServer->currentData().value<GitLabServer>()); m_defaultGitLabServer->currentData().value<GitLabServer>());
}); });
}
GitLabParameters GitLabOptionsWidget::parameters() const setOnApply([page, this] {
{ GitLabParameters result;
GitLabParameters result; // get all configured gitlabservers
// get all configured gitlabservers for (int i = 0, end = m_defaultGitLabServer->count(); i < end; ++i)
for (int i = 0, end = m_defaultGitLabServer->count(); i < end; ++i) result.gitLabServers.append(m_defaultGitLabServer->itemData(i).value<GitLabServer>());
result.gitLabServers.append(m_defaultGitLabServer->itemData(i).value<GitLabServer>()); if (m_defaultGitLabServer->count())
if (m_defaultGitLabServer->count()) result.defaultGitLabServer = m_defaultGitLabServer->currentData().value<GitLabServer>().id;
result.defaultGitLabServer = m_defaultGitLabServer->currentData().value<GitLabServer>().id; result.curl = m_curl.filePath();
result.curl = m_curl.filePath();
return result; if (result != *m_parameters) {
*m_parameters = result;
m_parameters->toSettings(Core::ICore::settings());
emit page->settingsChanged();
}
});
} }
void GitLabOptionsWidget::showEditServerDialog() void GitLabOptionsWidget::showEditServerDialog()