src/gui/dialogs/qfileinfogatherer.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/src/gui/dialogs/qfileinfogatherer.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/src/gui/dialogs/qfileinfogatherer.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -55,7 +55,18 @@
 
 #ifndef QT_NO_FILESYSTEMMODEL
 
-bool QFileInfoGatherer::fetchedRoot = false;
+#ifdef QT_BUILD_INTERNAL
+static bool fetchedRoot = false;
+Q_AUTOTEST_EXPORT void qt_test_resetFetchedRoot()
+{
+    fetchedRoot = false;
+}
+
+Q_AUTOTEST_EXPORT bool qt_test_isFetchedRoot()
+{
+    return fetchedRoot;
+}
+#endif
 
 /*!
     Creates thread
@@ -216,41 +227,10 @@
     }
 }
 
-/*
-    QFileInfo::permissions is different depending upon your platform.
-
-    "normalize this" so they can mean the same to us.
-*/
-QFile::Permissions QFileInfoGatherer::translatePermissions(const QFileInfo &fileInfo) const {
-    QFile::Permissions permissions = fileInfo.permissions();
-#ifdef Q_OS_WIN
-    return permissions;
-#else
-    QFile::Permissions p = permissions;
-    p &= ~(QFile::ReadUser|QFile::WriteUser|QFile::ExeUser);
-    if (                                     permissions & QFile::ReadOther
-        || (fileInfo.ownerId() == userId  && permissions & QFile::ReadOwner)
-        || (fileInfo.groupId() == groupId && permissions & QFile::ReadGroup))
-        p |= QFile::ReadUser;
-
-    if (                                     permissions & QFile::WriteOther
-        || (fileInfo.ownerId() == userId  && permissions & QFile::WriteOwner)
-        || (fileInfo.groupId() == groupId && permissions & QFile::WriteGroup))
-        p |= QFile::WriteUser;
-
-    if (                                     permissions & QFile::ExeOther
-        || (fileInfo.ownerId() == userId  && permissions & QFile::ExeOwner)
-        || (fileInfo.groupId() == groupId && permissions & QFile::ExeGroup))
-        p |= QFile::ExeUser;
-    return p;
-#endif
-}
-
 QExtendedInformation QFileInfoGatherer::getInfo(const QFileInfo &fileInfo) const
 {
     QExtendedInformation info(fileInfo);
     info.icon = m_iconProvider->icon(fileInfo);
-    info.setPermissions(translatePermissions(fileInfo));
     info.displayType = m_iconProvider->type(fileInfo);
 #ifndef QT_NO_FILESYSTEMWATCHER
     // ### Not ready to listen all modifications
@@ -309,7 +289,7 @@
 
     // List drives
     if (path.isEmpty()) {
-#if defined Q_AUTOTEST_EXPORT
+#ifdef QT_BUILD_INTERNAL
         fetchedRoot = true;
 #endif
         QFileInfoList infoList;
@@ -328,7 +308,8 @@
         return;
     }
 
-    QTime base = QTime::currentTime();
+    QElapsedTimer base;
+    base.start();
     QFileInfo fileInfo;
     bool firstTime = true;
     QList<QPair<QString, QFileInfo> > updatedFiles;
@@ -354,11 +335,13 @@
     }
     if (!updatedFiles.isEmpty())
         emit updates(path, updatedFiles);
+    emit directoryLoaded(path);
 }
 
-void QFileInfoGatherer::fetch(const QFileInfo &fileInfo, QTime &base, bool &firstTime, QList<QPair<QString, QFileInfo> > &updatedFiles, const QString &path) {
+void QFileInfoGatherer::fetch(const QFileInfo &fileInfo, QElapsedTimer &base, bool &firstTime, QList<QPair<QString, QFileInfo> > &updatedFiles, const QString &path) {
     updatedFiles.append(QPair<QString, QFileInfo>(fileInfo.fileName(), fileInfo));
-    QTime current = QTime::currentTime();
+    QElapsedTimer current;
+    current.start();
     if ((firstTime && updatedFiles.count() > 100) || base.msecsTo(current) > 1000) {
         emit updates(path, updatedFiles);
         updatedFiles.clear();