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:
parent
0c2b7b1020
commit
07c44f7bd3
@ -129,7 +129,7 @@ QFileIconProvider *QFileInfoGatherer::iconProvider() const
|
|||||||
void QFileInfoGatherer::fetchExtendedInformation(const QString &path, const QStringList &files)
|
void QFileInfoGatherer::fetchExtendedInformation(const QString &path, const QStringList &files)
|
||||||
{
|
{
|
||||||
QMutexLocker locker(&mutex);
|
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);
|
int loc = this->path.lastIndexOf(path);
|
||||||
while (loc > 0) {
|
while (loc > 0) {
|
||||||
if (this->files.at(loc) == files) {
|
if (this->files.at(loc) == files) {
|
||||||
@ -243,7 +243,7 @@ QExtendedInformation QFileInfoGatherer::getInfo(const QFileInfo &fileInfo) const
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QFileInfoGatherer::translateDriveName(const QFileInfo &drive) const
|
static QString translateDriveName(const QFileInfo &drive)
|
||||||
{
|
{
|
||||||
QString driveName = drive.absoluteFilePath();
|
QString driveName = drive.absoluteFilePath();
|
||||||
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
|
#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()) {
|
if (files.isEmpty()) {
|
||||||
infoList = QDir::drives();
|
infoList = QDir::drives();
|
||||||
} else {
|
} else {
|
||||||
|
infoList.reserve(files.count());
|
||||||
for (int i = 0; i < files.count(); ++i)
|
for (int i = 0; i < files.count(); ++i)
|
||||||
infoList << QFileInfo(files.at(i));
|
infoList << QFileInfo(files.at(i));
|
||||||
}
|
}
|
||||||
|
@ -157,36 +157,37 @@ Q_SIGNALS:
|
|||||||
void directoryLoaded(const QString &path);
|
void directoryLoaded(const QString &path);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QFileInfoGatherer(QObject *parent = 0);
|
explicit QFileInfoGatherer(QObject *parent = 0);
|
||||||
~QFileInfoGatherer();
|
~QFileInfoGatherer();
|
||||||
|
|
||||||
|
// only callable from this->thread():
|
||||||
void clear();
|
void clear();
|
||||||
void removePath(const QString &path);
|
void removePath(const QString &path);
|
||||||
QExtendedInformation getInfo(const QFileInfo &info) const;
|
QExtendedInformation getInfo(const QFileInfo &info) const;
|
||||||
|
QFileIconProvider *iconProvider() const;
|
||||||
|
bool resolveSymlinks() const;
|
||||||
|
|
||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void list(const QString &directoryPath);
|
void list(const QString &directoryPath);
|
||||||
void fetchExtendedInformation(const QString &path, const QStringList &files);
|
void fetchExtendedInformation(const QString &path, const QStringList &files);
|
||||||
void updateFile(const QString &path);
|
void updateFile(const QString &path);
|
||||||
void setResolveSymlinks(bool enable);
|
void setResolveSymlinks(bool enable);
|
||||||
bool resolveSymlinks() const;
|
|
||||||
void setIconProvider(QFileIconProvider *provider);
|
void setIconProvider(QFileIconProvider *provider);
|
||||||
QFileIconProvider *iconProvider() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void run();
|
|
||||||
void getFileInfos(const QString &path, const QStringList &files);
|
|
||||||
|
|
||||||
private:
|
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);
|
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;
|
mutable QMutex mutex;
|
||||||
|
// begin protected by mutex
|
||||||
QWaitCondition condition;
|
QWaitCondition condition;
|
||||||
QAtomicInt abort;
|
|
||||||
|
|
||||||
QStack<QString> path;
|
QStack<QString> path;
|
||||||
QStack<QStringList> files;
|
QStack<QStringList> files;
|
||||||
|
// end protected by mutex
|
||||||
|
QAtomicInt abort;
|
||||||
|
|
||||||
#ifndef QT_NO_FILESYSTEMWATCHER
|
#ifndef QT_NO_FILESYSTEMWATCHER
|
||||||
QFileSystemWatcher *watcher;
|
QFileSystemWatcher *watcher;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user