summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/projectexplorersettingspage.cpp
diff options
context:
space:
mode:
authorAaron McCarthy <mccarthy.aaron@gmail.com>2012-10-05 21:34:09 +1000
committerAaron McCarthy <mccarthy.aaron@gmail.com>2012-10-27 10:27:50 +0200
commit1b3909e45a18648cd635c082b0839688206ae3cb (patch)
treed41bcea80e6621fbe3b48234f48e7af29256f83b /src/plugins/projectexplorer/projectexplorersettingspage.cpp
parent2198fa90eb078a130a77924fbea56fda1696a365 (diff)
downloadqt-creator-1b3909e45a18648cd635c082b0839688206ae3cb.tar.gz
Add option to place shadow build directory parallel to source tree.
This option requires that the projects directory setting is enabled. For example with the following settings: Projects directory: $HOME/depot Build directory: $HOME/build This will by default place the default shadow build directory in the $HOME/build tree instead of adjacent to the source in $HOME/depot. Change-Id: I74bfc00883d0479d5965350c760d14ef7602cc34 Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Diffstat (limited to 'src/plugins/projectexplorer/projectexplorersettingspage.cpp')
-rw-r--r--src/plugins/projectexplorer/projectexplorersettingspage.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index 830efb5f5d..bb40f64a20 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -53,6 +53,8 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget(QWidget *parent) :
m_ui.directoryButtonGroup->setId(m_ui.directoryRadioButton, UseProjectDirectory);
connect(m_ui.directoryButtonGroup, SIGNAL(buttonClicked(int)),
this, SLOT(slotDirectoryButtonGroupChanged()));
+ connect(m_ui.buildDirectoryCheckBox, SIGNAL(toggled(bool)),
+ this, SLOT(slotBuildDirectoryCheckBoxChanged(bool)));
}
void ProjectExplorerSettingsWidget::setJomVisible(bool v)
@@ -118,9 +120,40 @@ void ProjectExplorerSettingsWidget::setUseProjectsDirectory(bool b)
}
}
+bool ProjectExplorerSettingsWidget::useBuildDirectory() const
+{
+ return m_ui.buildDirectoryCheckBox->isChecked();
+}
+
+void ProjectExplorerSettingsWidget::setUseBuildDirectory(bool v)
+{
+ if (useBuildDirectory() != v) {
+ m_ui.buildDirectoryCheckBox->setChecked(v);
+ slotBuildDirectoryCheckBoxChanged(v);
+ }
+}
+
+QString ProjectExplorerSettingsWidget::buildDirectory() const
+{
+ return m_ui.buildDirectoryPathChooser->path();
+}
+
+void ProjectExplorerSettingsWidget::setBuildDirectory(const QString &bd)
+{
+ m_ui.buildDirectoryPathChooser->setPath(bd);
+}
+
void ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged()
{
- m_ui.projectsDirectoryPathChooser->setEnabled(useProjectsDirectory());
+ bool enable = useProjectsDirectory();
+ m_ui.projectsDirectoryPathChooser->setEnabled(enable);
+ m_ui.buildDirectoryCheckBox->setEnabled(enable);
+ m_ui.buildDirectoryPathChooser->setEnabled(enable && useBuildDirectory());
+}
+
+void ProjectExplorerSettingsWidget::slotBuildDirectoryCheckBoxChanged(bool checked)
+{
+ m_ui.buildDirectoryPathChooser->setEnabled(useProjectsDirectory() && checked);
}
QString ProjectExplorerSettingsWidget::searchKeywords() const
@@ -167,6 +200,8 @@ QWidget *ProjectExplorerSettingsPage::createPage(QWidget *parent)
m_widget->setSettings(ProjectExplorerPlugin::instance()->projectExplorerSettings());
m_widget->setProjectsDirectory(Core::DocumentManager::projectsDirectory());
m_widget->setUseProjectsDirectory(Core::DocumentManager::useProjectsDirectory());
+ m_widget->setUseBuildDirectory(Core::DocumentManager::useBuildDirectory());
+ m_widget->setBuildDirectory(Core::DocumentManager::buildDirectory());
if (m_searchKeywords.isEmpty())
m_searchKeywords = m_widget->searchKeywords();
return m_widget;
@@ -178,6 +213,8 @@ void ProjectExplorerSettingsPage::apply()
ProjectExplorerPlugin::instance()->setProjectExplorerSettings(m_widget->settings());
Core::DocumentManager::setProjectsDirectory(m_widget->projectsDirectory());
Core::DocumentManager::setUseProjectsDirectory(m_widget->useProjectsDirectory());
+ Core::DocumentManager::setUseBuildDirectory(m_widget->useBuildDirectory());
+ Core::DocumentManager::setBuildDirectory(m_widget->buildDirectory());
}
}