From 07c44f7bd3c0b6061cba5a525995f616f1083672 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 7 Aug 2012 19:45:16 +0200 Subject: 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 --- src/widgets/dialogs/qfileinfogatherer.cpp | 5 +++-- src/widgets/dialogs/qfileinfogatherer_p.h | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp index d1718bb5bf..22a7d50f7c 100644 --- a/src/widgets/dialogs/qfileinfogatherer.cpp +++ b/src/widgets/dialogs/qfileinfogatherer.cpp @@ -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)); } diff --git a/src/widgets/dialogs/qfileinfogatherer_p.h b/src/widgets/dialogs/qfileinfogatherer_p.h index e3bfb067f6..9837b1aa08 100644 --- a/src/widgets/dialogs/qfileinfogatherer_p.h +++ b/src/widgets/dialogs/qfileinfogatherer_p.h @@ -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 > &updatedFiles, const QString &path); - QString translateDriveName(const QFileInfo &drive) const; +private: mutable QMutex mutex; + // begin protected by mutex QWaitCondition condition; - QAtomicInt abort; - QStack path; QStack files; + // end protected by mutex + QAtomicInt abort; #ifndef QT_NO_FILESYSTEMWATCHER QFileSystemWatcher *watcher; -- cgit v1.2.3