From 6ef67df88b379332430deadbac91d391f203681e Mon Sep 17 00:00:00 2001 From: goro <qtc-committer@nokia.com> Date: Fri, 19 Dec 2008 18:25:20 +0100 Subject: [PATCH] PathChooser migration for Qt4 build config page --- src/libs/utils/pathchooser.cpp | 16 +++++- src/libs/utils/pathchooser.h | 3 ++ .../qt4buildconfigwidget.cpp | 41 +++++++-------- .../qt4projectmanager/qt4buildconfigwidget.h | 1 + .../qt4projectmanager/qt4buildconfigwidget.ui | 51 +++++++------------ 5 files changed, 53 insertions(+), 59 deletions(-) diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index b769ea75589..91504b496c9 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -90,6 +90,7 @@ struct PathChooserPrivate PathValidatingLineEdit *m_lineEdit; PathChooser::Kind m_acceptingKind; QString m_dialogTitleOverride; + QString m_initialBrowsePathOverride; }; PathChooserPrivate::PathChooserPrivate(PathChooser *chooser) : @@ -143,9 +144,15 @@ void PathChooser::setPath(const QString &path) void PathChooser::slotBrowse() { + emit beforeBrowsing(); + QString predefined = path(); - if (!predefined.isEmpty() && !QFileInfo(predefined).isDir()) - predefined.clear(); + if ((predefined.isEmpty() || !QFileInfo(predefined).isDir()) + && !m_d->m_initialBrowsePathOverride.isNull()) { + predefined = m_d->m_initialBrowsePathOverride; + if (!QFileInfo(predefined).isDir()) + predefined.clear(); + } // Prompt for a file/dir QString dialogTitle; @@ -271,6 +278,11 @@ void PathChooser::setPromptDialogTitle(const QString &title) m_d->m_dialogTitleOverride = title; } +void PathChooser::setInitialBrowsePathBackup(const QString &path) +{ + m_d->m_initialBrowsePathOverride = path; +} + QString PathChooser::makeDialogTitle(const QString &title) { if (m_d->m_dialogTitleOverride.isNull()) diff --git a/src/libs/utils/pathchooser.h b/src/libs/utils/pathchooser.h index f22c20120b7..5fcc8ee228c 100644 --- a/src/libs/utils/pathchooser.h +++ b/src/libs/utils/pathchooser.h @@ -71,6 +71,8 @@ public: void setPromptDialogTitle(const QString &title); + void setInitialBrowsePathBackup(const QString &path); + bool isValid() const; QString errorMessage() const; @@ -91,6 +93,7 @@ private: signals: void validChanged(); void changed(); + void beforeBrowsing(); void browsingFinished(); void returnPressed(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp index 2ee2d0f8bc0..13fb5980a90 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.cpp @@ -54,6 +54,8 @@ Qt4BuildConfigWidget::Qt4BuildConfigWidget(Qt4Project *project) { m_ui = new Ui::Qt4BuildConfigWidget(); m_ui->setupUi(this); + m_ui->shadowBuildDirEdit->setPromptDialogTitle(tr("Shadow Build Directory")); + m_ui->shadowBuildDirEdit->setExpectedKind(Core::Utils::PathChooser::Directory); m_ui->invalidQtWarningLabel->setVisible(false); connect(m_ui->nameLineEdit, SIGNAL(textEdited(QString)), @@ -62,10 +64,10 @@ Qt4BuildConfigWidget::Qt4BuildConfigWidget(Qt4Project *project) connect(m_ui->shadowBuildCheckBox, SIGNAL(clicked(bool)), this, SLOT(shadowBuildCheckBoxClicked(bool))); - connect(m_ui->shadowBuildButton, SIGNAL(clicked(bool)), - this, SLOT(shadowBuildButtonClicked())); + connect(m_ui->shadowBuildDirEdit, SIGNAL(beforeBrowsing()), + this, SLOT(onBeforeBeforeShadowBuildDirBrowsed())); - connect(m_ui->shadowBuildLineEdit, SIGNAL(textEdited(QString)), + connect(m_ui->shadowBuildDirEdit, SIGNAL(changed()), this, SLOT(shadowBuildLineEditTextChanged())); connect(m_ui->qtVersionComboBox, SIGNAL(currentIndexChanged(QString)), @@ -102,10 +104,9 @@ void Qt4BuildConfigWidget::init(const QString &buildConfiguration) bool shadowBuild = m_pro->value(buildConfiguration, "useShadowBuild").toBool(); m_ui->shadowBuildCheckBox->setChecked(shadowBuild); - m_ui->shadowBuildLineEdit->setEnabled(shadowBuild); - m_ui->shadowBuildLineEdit->setText(m_pro->buildDirectory(buildConfiguration)); + m_ui->shadowBuildDirEdit->setEnabled(shadowBuild); + m_ui->shadowBuildDirEdit->setPath(m_pro->buildDirectory(buildConfiguration)); shadowBuildLineEditTextChanged(); // Update the import label - m_ui->shadowBuildButton->setEnabled(shadowBuild); } void Qt4BuildConfigWidget::changeConfigName(const QString &newName) @@ -145,47 +146,39 @@ void Qt4BuildConfigWidget::setupQtVersionsComboBox() this, SLOT(qtVersionComboBoxCurrentIndexChanged(QString))); } -void Qt4BuildConfigWidget::shadowBuildButtonClicked() +void Qt4BuildConfigWidget::onBeforeBeforeShadowBuildDirBrowsed() { - QString initialDirectory = m_ui->shadowBuildLineEdit->text(); - if (initialDirectory.isEmpty()) - initialDirectory = QFileInfo(m_pro->file()->fileName()).absolutePath(); - - QString shadowBuildDirectory = - QFileDialog::getExistingDirectory(this, tr("Shadow Build Directory"), initialDirectory ); - - if (shadowBuildDirectory != QString::null) - m_ui->shadowBuildLineEdit->setText(shadowBuildDirectory); - shadowBuildLineEditTextChanged(); + QString initialDirectory = QFileInfo(m_pro->file()->fileName()).absolutePath(); + if (!initialDirectory.isEmpty()) + m_ui->shadowBuildDirEdit->setInitialBrowsePathBackup(initialDirectory); } void Qt4BuildConfigWidget::shadowBuildCheckBoxClicked(bool checked) { - m_ui->shadowBuildLineEdit->setEnabled(checked); - m_ui->shadowBuildButton->setEnabled(checked); + m_ui->shadowBuildDirEdit->setEnabled(checked); bool b = m_ui->shadowBuildCheckBox->isChecked(); m_pro->setValue(m_buildConfiguration, "useShadowBuild", b); if (b) - m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildLineEdit->text()); + m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path()); else m_pro->setValue(m_buildConfiguration, "buildDirectory", QVariant(QString::null)); } void Qt4BuildConfigWidget::shadowBuildLineEditTextChanged() { - m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildLineEdit->text()); + m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path()); // if the directory already exists // check if we have a build in there and // offer to import it m_ui->importLabel->setVisible(false); if (m_ui->shadowBuildCheckBox->isChecked()) { - QString qtPath = m_pro->qt4ProjectManager()->versionManager()->findQtVersionFromMakefile(m_ui->shadowBuildLineEdit->text()); + QString qtPath = m_pro->qt4ProjectManager()->versionManager()->findQtVersionFromMakefile(m_ui->shadowBuildDirEdit->path()); if (!qtPath.isEmpty()) { m_ui->importLabel->setVisible(true); } } -// QFileInfo fi(m_ui->shadowBuildLineEdit->text()); +// QFileInfo fi(m_ui->shadowBuildDirEdit->path()); // if (fi.exists()) { // m_ui->shadowBuildLineEdit->setStyleSheet(""); // m_ui->shadowBuildLineEdit->setToolTip(""); @@ -198,7 +191,7 @@ void Qt4BuildConfigWidget::shadowBuildLineEditTextChanged() void Qt4BuildConfigWidget::importLabelClicked() { if (m_ui->shadowBuildCheckBox->isChecked()) { - QString directory = m_ui->shadowBuildLineEdit->text(); + QString directory = m_ui->shadowBuildDirEdit->path(); if (!directory.isEmpty()) { QtVersionManager *vm = m_pro->qt4ProjectManager()->versionManager(); QString qtPath = vm->findQtVersionFromMakefile(directory); diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.h b/src/plugins/qt4projectmanager/qt4buildconfigwidget.h index 622ce98be2e..da126023a09 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.h +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.h @@ -61,6 +61,7 @@ private slots: void setupQtVersionsComboBox(); void shadowBuildCheckBoxClicked(bool checked); void shadowBuildButtonClicked(); + void onBeforeBeforeShadowBuildDirBrowsed(); void shadowBuildLineEditTextChanged(); void importLabelClicked(); void qtVersionComboBoxCurrentIndexChanged(const QString &); diff --git a/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui b/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui index f62d4a69b53..ab5e8858611 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui +++ b/src/plugins/qt4projectmanager/qt4buildconfigwidget.ui @@ -110,39 +110,6 @@ </property> </widget> </item> - <item row="3" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLineEdit" name="shadowBuildLineEdit"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>100</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>16777215</width> - <height>16777215</height> - </size> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="shadowBuildButton"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>...</string> - </property> - </widget> - </item> - </layout> - </item> <item row="4" column="1"> <widget class="QLabel" name="importLabel"> <property name="text"> @@ -153,6 +120,16 @@ </property> </widget> </item> + <item row="3" column="1"> + <widget class="Core::Utils::PathChooser" name="shadowBuildDirEdit" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> </layout> </item> <item row="0" column="1"> @@ -186,6 +163,14 @@ </item> </layout> </widget> + <customwidgets> + <customwidget> + <class>Core::Utils::PathChooser</class> + <extends>QWidget</extends> + <header location="global">utils/pathchooser.h</header> + <container>1</container> + </customwidget> + </customwidgets> <resources/> <connections/> </ui> -- GitLab