diff options
| author | Peter Penz <[email protected]> | 2010-10-08 20:07:13 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2010-10-08 20:07:13 +0000 |
| commit | 396706a741c3bb43be2aac6f77cc8e6412c6187c (patch) | |
| tree | 00de332242a53af636064b80d41f87a8695f4fe6 /src/search/filenamesearchprotocol.cpp | |
| parent | eade3a4a3de22afe5498618799307000e3445c84 (diff) | |
Allow to use wildcards when searching filenames or simple text files with the filenamesearchprotocol.
svn path=/trunk/KDE/kdebase/apps/; revision=1183944
Diffstat (limited to 'src/search/filenamesearchprotocol.cpp')
| -rw-r--r-- | src/search/filenamesearchprotocol.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/search/filenamesearchprotocol.cpp b/src/search/filenamesearchprotocol.cpp index a08d883f3..59e49782f 100644 --- a/src/search/filenamesearchprotocol.cpp +++ b/src/search/filenamesearchprotocol.cpp @@ -26,24 +26,29 @@ #include <QCoreApplication> #include <QEventLoop> +#include <QRegExp> FileNameSearchProtocol::FileNameSearchProtocol( const QByteArray &pool, const QByteArray &app ) : SlaveBase("search", pool, app), m_checkContent(false), - m_searchPattern() + m_regExp(0) { } FileNameSearchProtocol::~FileNameSearchProtocol() { + delete m_regExp; + m_regExp = 0; } void FileNameSearchProtocol::listDir(const KUrl& url) { + delete m_regExp; + m_regExp = 0; + const QStringList searchValues = url.allQueryItemValues("search"); - m_searchPattern.clear(); if (!searchValues.isEmpty()) { - m_searchPattern = searchValues.first(); + m_regExp = new QRegExp(searchValues.first(), Qt::CaseInsensitive, QRegExp::Wildcard); } m_checkContent = false; @@ -79,7 +84,7 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory) const KFileItemList items = dirLister->items(); foreach (const KFileItem& item, items) { bool addItem = false; - if (m_searchPattern.isEmpty() || item.name().contains(m_searchPattern, Qt::CaseInsensitive)) { + if ((m_regExp == 0) || item.name().contains(*m_regExp)) { addItem = true; } else if (m_checkContent && item.mimetype().startsWith(QLatin1String("text/"))) { addItem = containsPattern(item.url()); @@ -105,6 +110,8 @@ void FileNameSearchProtocol::searchDirectory(const KUrl& directory) bool FileNameSearchProtocol::containsPattern(const KUrl& fileName) const { + Q_ASSERT(m_regExp != 0); + QFile file(fileName.path()); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { return false; @@ -113,7 +120,7 @@ bool FileNameSearchProtocol::containsPattern(const KUrl& fileName) const QTextStream in(&file); while (!in.atEnd()) { const QString line = in.readLine(); - if (line.contains(m_searchPattern)) { + if (line.contains(*m_regExp)) { return true; } } |
