File system search: Support ~/ for the directory that is searched

Start using Utils::FileName for that.

Task-number: QTCREATORBUG-7753
Change-Id: I07276fcf1c609c68fcb63ac11a8833c78afd4fdd
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Eike Ziller
2014-02-13 15:57:43 +01:00
parent 075e978a8e
commit f844ab4c0b
2 changed files with 20 additions and 17 deletions

View File

@@ -88,13 +88,13 @@ Utils::FileIterator *FindInFiles::files(const QStringList &nameFilters,
QVariant FindInFiles::additionalParameters() const QVariant FindInFiles::additionalParameters() const
{ {
return qVariantFromValue(path()); return qVariantFromValue(path().toString());
} }
QString FindInFiles::label() const QString FindInFiles::label() const
{ {
const QChar slash = QLatin1Char('/'); const QChar slash = QLatin1Char('/');
const QStringList &nonEmptyComponents = QDir::cleanPath(QFileInfo(path()).absoluteFilePath()) const QStringList &nonEmptyComponents = path().toFileInfo().absoluteFilePath()
.split(slash, QString::SkipEmptyParts); .split(slash, QString::SkipEmptyParts);
return tr("Directory '%1':").arg(nonEmptyComponents.isEmpty() ? QString(slash) : nonEmptyComponents.last()); return tr("Directory '%1':").arg(nonEmptyComponents.isEmpty() ? QString(slash) : nonEmptyComponents.last());
} }
@@ -103,7 +103,7 @@ QString FindInFiles::toolTip() const
{ {
//: %3 is filled by BaseFileFind::runNewSearch //: %3 is filled by BaseFileFind::runNewSearch
return tr("Path: %1\nFilter: %2\n%3") return tr("Path: %1\nFilter: %2\n%3")
.arg(QDir::toNativeSeparators(QFileInfo(path()).absoluteFilePath())) .arg(path().toUserOutput())
.arg(fileNameFilters().join(QLatin1String(","))); .arg(fileNameFilters().join(QLatin1String(",")));
} }
@@ -125,7 +125,7 @@ QWidget *FindInFiles::createConfigWidget()
m_directory->setInsertPolicy(QComboBox::InsertAtTop); m_directory->setInsertPolicy(QComboBox::InsertAtTop);
m_directory->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_directory->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
m_directory->setModel(&m_directoryStrings); m_directory->setModel(&m_directoryStrings);
syncComboWithSettings(m_directory, m_directorySetting); syncComboWithSettings(m_directory, m_directorySetting.toUserOutput());
dirLabel->setBuddy(m_directory); dirLabel->setBuddy(m_directory);
gridLayout->addWidget(m_directory, 0, 1); gridLayout->addWidget(m_directory, 0, 1);
QPushButton *browseButton = new QPushButton(tr("&Browse...")); QPushButton *browseButton = new QPushButton(tr("&Browse..."));
@@ -149,7 +149,7 @@ void FindInFiles::openFileBrowser()
{ {
if (!m_directory) if (!m_directory)
return; return;
QString oldDir = path(); QString oldDir = path().toString();
if (!QDir(oldDir).exists()) if (!QDir(oldDir).exists())
oldDir.clear(); oldDir.clear();
QString dir = QFileDialog::getExistingDirectory(m_configWidget, QString dir = QFileDialog::getExistingDirectory(m_configWidget,
@@ -158,9 +158,9 @@ void FindInFiles::openFileBrowser()
m_directory->setEditText(QDir::toNativeSeparators(dir)); m_directory->setEditText(QDir::toNativeSeparators(dir));
} }
QString FindInFiles::path() const Utils::FileName FindInFiles::path() const
{ {
return QDir::fromNativeSeparators(Utils::FileUtils::normalizePathName( return Utils::FileName::fromUserInput(Utils::FileUtils::normalizePathName(
m_directory->currentText())); m_directory->currentText()));
} }
@@ -170,7 +170,7 @@ void FindInFiles::writeSettings(QSettings *settings)
writeCommonSettings(settings); writeCommonSettings(settings);
settings->setValue(QLatin1String("directories"), m_directoryStrings.stringList()); settings->setValue(QLatin1String("directories"), m_directoryStrings.stringList());
if (m_directory) if (m_directory)
settings->setValue(QLatin1String("currentDirectory"), m_directory->currentText()); settings->setValue(QLatin1String("currentDirectory"), path().toString());
settings->endGroup(); settings->endGroup();
} }
@@ -179,14 +179,15 @@ void FindInFiles::readSettings(QSettings *settings)
settings->beginGroup(QLatin1String("FindInFiles")); settings->beginGroup(QLatin1String("FindInFiles"));
readCommonSettings(settings, QLatin1String("*.cpp,*.h")); readCommonSettings(settings, QLatin1String("*.cpp,*.h"));
m_directoryStrings.setStringList(settings->value(QLatin1String("directories")).toStringList()); m_directoryStrings.setStringList(settings->value(QLatin1String("directories")).toStringList());
m_directorySetting = settings->value(QLatin1String("currentDirectory")).toString(); m_directorySetting = Utils::FileName::fromString(
settings->value(QLatin1String("currentDirectory")).toString());
settings->endGroup(); settings->endGroup();
syncComboWithSettings(m_directory, m_directorySetting); syncComboWithSettings(m_directory, m_directorySetting.toUserOutput());
} }
void FindInFiles::setDirectory(const QString &directory) void FindInFiles::setDirectory(const Utils::FileName &directory)
{ {
syncComboWithSettings(m_directory, QDir::toNativeSeparators(directory)); syncComboWithSettings(m_directory, directory.toUserOutput());
} }
void FindInFiles::findOnFileSystem(const QString &path) void FindInFiles::findOnFileSystem(const QString &path)
@@ -194,6 +195,6 @@ void FindInFiles::findOnFileSystem(const QString &path)
QTC_ASSERT(m_instance, return); QTC_ASSERT(m_instance, return);
const QFileInfo fi(path); const QFileInfo fi(path);
const QString folder = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath(); const QString folder = fi.isDir() ? fi.absoluteFilePath() : fi.absolutePath();
m_instance->setDirectory(folder); m_instance->setDirectory(Utils::FileName::fromString(folder));
FindPlugin::instance()->openFindDialog(m_instance); FindPlugin::instance()->openFindDialog(m_instance);
} }

View File

@@ -32,6 +32,8 @@
#include "basefilefind.h" #include "basefilefind.h"
#include <utils/fileutils.h>
#include <QPointer> #include <QPointer>
#include <QStringListModel> #include <QStringListModel>
@@ -55,7 +57,7 @@ public:
void writeSettings(QSettings *settings); void writeSettings(QSettings *settings);
void readSettings(QSettings *settings); void readSettings(QSettings *settings);
void setDirectory(const QString &directory); void setDirectory(const Utils::FileName &directory);
protected: protected:
Utils::FileIterator *files(const QStringList &nameFilters, Utils::FileIterator *files(const QStringList &nameFilters,
@@ -71,10 +73,10 @@ private slots:
void openFileBrowser(); void openFileBrowser();
private: private:
QString path() const; Utils::FileName path() const;
QStringListModel m_directoryStrings; QStringListModel m_directoryStrings;
QString m_directorySetting; Utils::FileName m_directorySetting;
QPointer<QWidget> m_configWidget; QPointer<QWidget> m_configWidget;
QPointer<QComboBox> m_directory; QPointer<QComboBox> m_directory;
}; };