From 6dca8914745d259f34ef19ab2dea3c32c9446118 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Sat, 31 Mar 2012 22:20:07 +0200 Subject: [PATCH] Slightly changed cache handling. --- src/Config.h | 2 +- src/Dialog_MainWindow.cpp | 2 +- src/Model_FileSystem.cpp | 32 ++++++++++++++++---------------- src/Model_FileSystem.h | 2 +- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Config.h b/src/Config.h index da830f33..72cb6869 100644 --- a/src/Config.h +++ b/src/Config.h @@ -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!) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index aca58e54..d29ab6be 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -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 diff --git a/src/Model_FileSystem.cpp b/src/Model_FileSystem.cpp index a1354080..99462e86 100644 --- a/src/Model_FileSystem.cpp +++ b/src/Model_FileSystem.cpp @@ -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); diff --git a/src/Model_FileSystem.h b/src/Model_FileSystem.h index 8e7412a1..bd2fc629 100644 --- a/src/Model_FileSystem.h +++ b/src/Model_FileSystem.h @@ -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;