aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-02-21 22:04:02 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-02-21 22:04:02 +0000
commitc01a575b144b19c110d2c1eb178119dadd4010b5 (patch)
treee270f75755257962c50d0436c9b7271814216ed7
parent05398dffc2b442e83117e4efed89d9c02f52842e (diff)
downloadqmmp-c01a575b144b19c110d2c1eb178119dadd4010b5.tar.gz
qmmp-c01a575b144b19c110d2c1eb178119dadd4010b5.tar.bz2
qmmp-c01a575b144b19c110d2c1eb178119dadd4010b5.zip
added cache for cover paths
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1564 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/metadatamanager.cpp12
-rw-r--r--src/qmmp/metadatamanager.h7
2 files changed, 12 insertions, 7 deletions
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp
index bcc7619cc..1c3653928 100644
--- a/src/qmmp/metadatamanager.cpp
+++ b/src/qmmp/metadatamanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -184,7 +184,7 @@ bool MetaDataManager::supports(const QString &fileName) const
return FALSE;
}
-QPixmap MetaDataManager::getCover(const QString &url) const
+QPixmap MetaDataManager::getCover(const QString &url)
{
if(!url.contains("://") && m_settings->useCoverFiles())
{
@@ -202,7 +202,7 @@ QPixmap MetaDataManager::getCover(const QString &url) const
return QPixmap();
}
-QString MetaDataManager::getCoverPath(const QString &url) const
+QString MetaDataManager::getCoverPath(const QString &url)
{
if(!m_settings->useCoverFiles())
return QString();
@@ -219,8 +219,12 @@ QString MetaDataManager::getCoverPath(const QString &url) const
else //local file
{
QString p = QFileInfo(url).absolutePath();
+ if(m_cover_cache.keys().contains(p))
+ return m_cover_cache.value(p);
QFileInfoList l = findCoverFiles(p, m_settings->coverSearchDepth());
- return l.isEmpty() ? QString() : l.at(0).filePath();
+ QString cover_path = l.isEmpty() ? QString() : l.at(0).filePath();
+ m_cover_cache.insert (p, cover_path);
+ return cover_path;
}
return QString();
}
diff --git a/src/qmmp/metadatamanager.h b/src/qmmp/metadatamanager.h
index 30570d28b..c08bac2e8 100644
--- a/src/qmmp/metadatamanager.h
+++ b/src/qmmp/metadatamanager.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -74,13 +74,13 @@ public:
* Returns cover pixmap for the given file \b fileName,
* or returns an empty pixmap if cover is not available.
*/
- QPixmap getCover(const QString &fileName) const;
+ QPixmap getCover(const QString &fileName);
/*!
* Returns cover file path for the given file \b fileName, or returns
* an empty string if cover file is not available. This function does not work
* with embedded covers.
*/
- QString getCoverPath(const QString &fileName) const;
+ QString getCoverPath(const QString &fileName);
/*!
* Returns a pointer to the MetaDataManager instance.
*/
@@ -92,6 +92,7 @@ private:
QList <DecoderFactory *> *m_decoderFactories;
QList <EngineFactory *> *m_engineFactories;
QList <InputSourceFactory *> *m_inputSourceFactories;
+ QMap <QString, QString> m_cover_cache;
QmmpSettings *m_settings;
static MetaDataManager* m_instance;
};