forked from qt-creator/qt-creator
ProjectExplorer: Use IOptionPage::setWidgetCreator() for settings
Change-Id: I4267e577ce91d97e633e8cdf513bde496d3f7c09 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -25,15 +25,14 @@
|
|||||||
using namespace Core;
|
using namespace Core;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
enum { UseCurrentDirectory, UseProjectDirectory };
|
enum { UseCurrentDirectory, UseProjectDirectory };
|
||||||
|
|
||||||
class ProjectExplorerSettingsWidget : public QWidget
|
class ProjectExplorerSettingsWidget : public IOptionsPageWidget
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit ProjectExplorerSettingsWidget(QWidget *parent = nullptr);
|
ProjectExplorerSettingsWidget();
|
||||||
|
|
||||||
ProjectExplorerSettings settings() const;
|
ProjectExplorerSettings settings() const;
|
||||||
void setSettings(const ProjectExplorerSettings &s);
|
void setSettings(const ProjectExplorerSettings &s);
|
||||||
@@ -44,6 +43,13 @@ public:
|
|||||||
bool useProjectsDirectory();
|
bool useProjectsDirectory();
|
||||||
void setUseProjectsDirectory(bool v);
|
void setUseProjectsDirectory(bool v);
|
||||||
|
|
||||||
|
void apply() final
|
||||||
|
{
|
||||||
|
ProjectExplorerPlugin::setProjectExplorerSettings(settings());
|
||||||
|
DocumentManager::setProjectsDirectory(projectsDirectory());
|
||||||
|
DocumentManager::setUseProjectsDirectory(useProjectsDirectory());
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void slotDirectoryButtonGroupChanged();
|
void slotDirectoryButtonGroupChanged();
|
||||||
|
|
||||||
@@ -68,8 +74,7 @@ private:
|
|||||||
QButtonGroup *m_directoryButtonGroup;
|
QButtonGroup *m_directoryButtonGroup;
|
||||||
};
|
};
|
||||||
|
|
||||||
ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
|
ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget()
|
||||||
QWidget(parent)
|
|
||||||
{
|
{
|
||||||
m_currentDirectoryRadioButton = new QRadioButton(Tr::tr("Current directory"));
|
m_currentDirectoryRadioButton = new QRadioButton(Tr::tr("Current directory"));
|
||||||
m_directoryRadioButton = new QRadioButton(Tr::tr("Directory"));
|
m_directoryRadioButton = new QRadioButton(Tr::tr("Directory"));
|
||||||
@@ -165,6 +170,10 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
|
|||||||
|
|
||||||
connect(m_directoryButtonGroup, &QButtonGroup::buttonClicked,
|
connect(m_directoryButtonGroup, &QButtonGroup::buttonClicked,
|
||||||
this, &ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged);
|
this, &ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged);
|
||||||
|
|
||||||
|
setSettings(ProjectExplorerPlugin::projectExplorerSettings());
|
||||||
|
setProjectsDirectory(DocumentManager::projectsDirectory());
|
||||||
|
setUseProjectsDirectory(DocumentManager::useProjectsDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
|
ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
|
||||||
@@ -236,7 +245,8 @@ void ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged()
|
|||||||
m_projectsDirectoryPathChooser->setEnabled(enable);
|
m_projectsDirectoryPathChooser->setEnabled(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------ ProjectExplorerSettingsPage
|
// ProjectExplorerSettingsPage
|
||||||
|
|
||||||
ProjectExplorerSettingsPage::ProjectExplorerSettingsPage()
|
ProjectExplorerSettingsPage::ProjectExplorerSettingsPage()
|
||||||
{
|
{
|
||||||
setId(Constants::BUILD_AND_RUN_SETTINGS_PAGE_ID);
|
setId(Constants::BUILD_AND_RUN_SETTINGS_PAGE_ID);
|
||||||
@@ -244,32 +254,7 @@ ProjectExplorerSettingsPage::ProjectExplorerSettingsPage()
|
|||||||
setCategory(Constants::BUILD_AND_RUN_SETTINGS_CATEGORY);
|
setCategory(Constants::BUILD_AND_RUN_SETTINGS_CATEGORY);
|
||||||
setDisplayCategory(Tr::tr("Build & Run"));
|
setDisplayCategory(Tr::tr("Build & Run"));
|
||||||
setCategoryIconPath(":/projectexplorer/images/settingscategory_buildrun.png");
|
setCategoryIconPath(":/projectexplorer/images/settingscategory_buildrun.png");
|
||||||
|
setWidgetCreator([] { return new ProjectExplorerSettingsWidget; });
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *ProjectExplorerSettingsPage::widget()
|
} // ProjectExplorer::Internal
|
||||||
{
|
|
||||||
if (!m_widget) {
|
|
||||||
m_widget = new ProjectExplorerSettingsWidget;
|
|
||||||
m_widget->setSettings(ProjectExplorerPlugin::projectExplorerSettings());
|
|
||||||
m_widget->setProjectsDirectory(DocumentManager::projectsDirectory());
|
|
||||||
m_widget->setUseProjectsDirectory(DocumentManager::useProjectsDirectory());
|
|
||||||
}
|
|
||||||
return m_widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectExplorerSettingsPage::apply()
|
|
||||||
{
|
|
||||||
if (m_widget) {
|
|
||||||
ProjectExplorerPlugin::setProjectExplorerSettings(m_widget->settings());
|
|
||||||
DocumentManager::setProjectsDirectory(m_widget->projectsDirectory());
|
|
||||||
DocumentManager::setUseProjectsDirectory(m_widget->useProjectsDirectory());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProjectExplorerSettingsPage::finish()
|
|
||||||
{
|
|
||||||
delete m_widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace ProjectExplorer
|
|
||||||
|
@@ -5,25 +5,12 @@
|
|||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
#include <QPointer>
|
namespace ProjectExplorer::Internal {
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class ProjectExplorerSettingsWidget;
|
|
||||||
|
|
||||||
class ProjectExplorerSettingsPage : public Core::IOptionsPage
|
class ProjectExplorerSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ProjectExplorerSettingsPage();
|
ProjectExplorerSettingsPage();
|
||||||
|
|
||||||
QWidget *widget() override;
|
|
||||||
void apply() override;
|
|
||||||
void finish() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
QPointer<ProjectExplorerSettingsWidget> m_widget;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // ProjectExplorer::Internal
|
||||||
} // namespace ProjectExplorer
|
|
||||||
|
Reference in New Issue
Block a user