From b97aec31a788b7aca41c58115b42debc96873f93 Mon Sep 17 00:00:00 2001 From: dt Date: Fri, 17 Sep 2010 13:59:59 +0200 Subject: [PATCH] Path Chooser: Add a basedirectory Reviewed-By: Friedemann Kleint --- src/libs/utils/pathchooser.cpp | 17 ++++++++++++++++- src/libs/utils/pathchooser.h | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index bb16ae1a0c1..c0abba1484a 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -89,6 +89,7 @@ struct PathChooserPrivate QString m_dialogTitleOverride; QString m_dialogFilter; QString m_initialBrowsePathOverride; + QString m_baseDirectory; }; PathChooserPrivate::PathChooserPrivate(PathChooser *chooser) : @@ -142,9 +143,23 @@ QAbstractButton *PathChooser::buttonAtIndex(int index) const return findChildren().at(index); } +QString PathChooser::baseDirectory() const +{ + return m_d->m_baseDirectory; +} + +void PathChooser::setBaseDirectory(const QString &directory) +{ + m_d->m_baseDirectory = directory; +} + QString PathChooser::path() const { - return m_d->m_lineEdit->text(); + const QString path = m_d->m_lineEdit->text(); + if (!m_d->m_baseDirectory.isEmpty() && QFileInfo(path).isRelative()) + return QFileInfo(m_d->m_baseDirectory + QLatin1Char('/') + path).absoluteFilePath(); + else + return QFileInfo(path).absoluteFilePath(); } void PathChooser::setPath(const QString &path) diff --git a/src/libs/utils/pathchooser.h b/src/libs/utils/pathchooser.h index b0eff161533..9d2b1a20973 100644 --- a/src/libs/utils/pathchooser.h +++ b/src/libs/utils/pathchooser.h @@ -56,6 +56,7 @@ class QTCREATOR_UTILS_EXPORT PathChooser : public QWidget Q_PROPERTY(QString path READ path WRITE setPath DESIGNABLE true) Q_PROPERTY(QString promptDialogTitle READ promptDialogTitle WRITE setPromptDialogTitle DESIGNABLE true) Q_PROPERTY(Kind expectedKind READ expectedKind WRITE setExpectedKind DESIGNABLE true) + Q_PROPERTY(QString baseDirectory READ baseDirectory WRITE setBaseDirectory DESIGNABLE true) public: static const char * const browseButtonLabel; @@ -87,6 +88,9 @@ public: QString path() const; + QString baseDirectory() const; + void setBaseDirectory(const QString &directory); + /** Returns the suggested label title when used in a form layout. */ static QString label();