QFileInfoGatherer: general cleanups

- fix typo in comment
- make translateDriveName file-static
- use QList::reserve()
- explicit ctor
- annotate functions called by owning thread/run()
- iconProvider() and resolveSymlinks() shouldn't be slots
- private instead of protected
- run() marked Q_DECL_OVERRIDE
- annotate which members are protected by 'mutex'

Change-Id: Ic176a030b0597c98f48185efd17260fd62532460
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
Marc Mutz 2012-08-07 19:45:16 +02:00 committed by The Qt Project
parent 0c2b7b1020
commit 07c44f7bd3
2 changed files with 14 additions and 12 deletions

View File

@ -129,7 +129,7 @@ QFileIconProvider *QFileInfoGatherer::iconProvider() const
void QFileInfoGatherer::fetchExtendedInformation(const QString &path, const QStringList &files)
{
QMutexLocker locker(&mutex);
// See if we already have this dir/file in our que
// See if we already have this dir/file in our queue
int loc = this->path.lastIndexOf(path);
while (loc > 0) {
if (this->files.at(loc) == files) {
@ -243,7 +243,7 @@ QExtendedInformation QFileInfoGatherer::getInfo(const QFileInfo &fileInfo) const
return info;
}
QString QFileInfoGatherer::translateDriveName(const QFileInfo &drive) const
static QString translateDriveName(const QFileInfo &drive)
{
QString driveName = drive.absoluteFilePath();
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
@ -280,6 +280,7 @@ void QFileInfoGatherer::getFileInfos(const QString &path, const QStringList &fil
if (files.isEmpty()) {
infoList = QDir::drives();
} else {
infoList.reserve(files.count());
for (int i = 0; i < files.count(); ++i)
infoList << QFileInfo(files.at(i));
}

View File

@ -157,36 +157,37 @@ Q_SIGNALS:
void directoryLoaded(const QString &path);
public:
QFileInfoGatherer(QObject *parent = 0);
explicit QFileInfoGatherer(QObject *parent = 0);
~QFileInfoGatherer();
// only callable from this->thread():
void clear();
void removePath(const QString &path);
QExtendedInformation getInfo(const QFileInfo &info) const;
QFileIconProvider *iconProvider() const;
bool resolveSymlinks() const;
public Q_SLOTS:
void list(const QString &directoryPath);
void fetchExtendedInformation(const QString &path, const QStringList &files);
void updateFile(const QString &path);
void setResolveSymlinks(bool enable);
bool resolveSymlinks() const;
void setIconProvider(QFileIconProvider *provider);
QFileIconProvider *iconProvider() const;
protected:
void run();
void getFileInfos(const QString &path, const QStringList &files);
private:
void run() Q_DECL_OVERRIDE;
// called by run():
void getFileInfos(const QString &path, const QStringList &files);
void fetch(const QFileInfo &info, QElapsedTimer &base, bool &firstTime, QList<QPair<QString, QFileInfo> > &updatedFiles, const QString &path);
QString translateDriveName(const QFileInfo &drive) const;
private:
mutable QMutex mutex;
// begin protected by mutex
QWaitCondition condition;
QAtomicInt abort;
QStack<QString> path;
QStack<QStringList> files;
// end protected by mutex
QAtomicInt abort;
#ifndef QT_NO_FILESYSTEMWATCHER
QFileSystemWatcher *watcher;