OSDN Git Service

Slightly changed cache handling.
authorlordmulder <mulder2@gmx.de>
Sat, 31 Mar 2012 20:20:07 +0000 (22:20 +0200)
committerlordmulder <mulder2@gmx.de>
Sat, 31 Mar 2012 20:20:07 +0000 (22:20 +0200)
src/Config.h
src/Dialog_MainWindow.cpp
src/Model_FileSystem.cpp
src/Model_FileSystem.h

index da830f3..72cb686 100644 (file)
@@ -30,7 +30,7 @@
 #define VER_LAMEXP_MINOR_LO                                    4
 #define VER_LAMEXP_TYPE                                                Beta
 #define VER_LAMEXP_PATCH                                       11
-#define VER_LAMEXP_BUILD                                       944
+#define VER_LAMEXP_BUILD                                       947
 
 ///////////////////////////////////////////////////////////////////////////////
 // Tool versions (minimum expected versions!)
index aca58e5..d29ab6b 100644 (file)
@@ -94,7 +94,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
        m_qaacEncoderAvailable(lamexp_check_tool("qaac.exe") && lamexp_check_tool("libsoxrate.dll")),
        m_accepted(false),
        m_firstTimeShown(true),
-       m_outputFolderViewInitialized(3),
+       m_outputFolderViewInitialized(4),
        m_outputFolderViewCentering(false)
 {
        //Init the dialog, from the .ui file
index a135408..99462e8 100644 (file)
@@ -160,27 +160,16 @@ bool QFileSystemModelEx::hasChildren(const QModelIndex &parent) const
 {
        if(parent.isValid())
        {
-               return /*(QFileSystemModel::rowCount(parent) > 0) ||*/ hasSubfoldersCached(filePath(parent));
+               return hasSubfoldersCached(filePath(parent).toLower()); //return (QDir(QFileSystemModel::filePath(parent)).entryList(QDir::Dirs | QDir::NoDotAndDotDot).count() > 0);
        }
-       
        return true;
 }
 
-int QFileSystemModelEx::rowCount(const QModelIndex &parent) const
-{
-       if(parent.isValid())
-       {
-               removeFromCache(filePath(parent));
-       }
-
-       return QFileSystemModel::rowCount(parent);
-}
-
 void QFileSystemModelEx::fetchMore(const QModelIndex &parent)
 {
        if(parent.isValid())
        {
-               removeFromCache(filePath(parent));
+               removeFromCache(filePath(parent).toLower());
        }
 
        QFileSystemModel::fetchMore(parent);
@@ -191,7 +180,8 @@ QModelIndex QFileSystemModelEx::index(const QString &path, int column) const
        QFileInfo info(path);
        if(info.exists() && info.isDir())
        {
-               QStringList parts = QDir::fromNativeSeparators(info.canonicalFilePath()).split('/', QString::SkipEmptyParts);
+               QString fullPath = QDir::fromNativeSeparators(info.canonicalFilePath());
+               QStringList parts = fullPath.split('/', QString::SkipEmptyParts);
                for(int i = 2; i <= parts.count(); i++)
                {
                        QFileInfo currentPath(((QStringList) parts.mid(0, i)).join("/"));
@@ -200,7 +190,17 @@ QModelIndex QFileSystemModelEx::index(const QString &path, int column) const
                                return QModelIndex();
                        }
                }
-               return QFileSystemModel::index(path, column);
+               QModelIndex index = QFileSystemModel::index(fullPath, column);
+               if(index.isValid())
+               {
+                       QModelIndex temp = index;
+                       while(temp.isValid())
+                       {
+                               removeFromCache(filePath(temp).toLower());
+                               temp = temp.parent();
+                       }
+                       return index;
+               }
        }
        return QModelIndex();
 }
@@ -219,7 +219,7 @@ bool QFileSystemModelEx::FindFirstFileExInfoBasicOK = false;
 bool QFileSystemModelEx::hasSubfoldersCached(const QString &path)
 {
        QMutexLocker lock(&s_hasSubfolderMutex);
-       
+
        if(s_hasSubfolderCache.contains(path))
        {
                return s_hasSubfolderCache.value(path);
index 8e7412a..bd2fc62 100644 (file)
@@ -33,7 +33,7 @@ public:
        ~QFileSystemModelEx();
 
        virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
-       virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
+       //virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
        virtual void fetchMore(const QModelIndex &parent);
        virtual QModelIndex index(const QString &path, int column = 0) const;