From c01a575b144b19c110d2c1eb178119dadd4010b5 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Sun, 21 Feb 2010 22:04:02 +0000 Subject: 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 --- src/qmmp/metadatamanager.cpp | 12 ++++++++---- src/qmmp/metadatamanager.h | 7 ++++--- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src') 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 *m_decoderFactories; QList *m_engineFactories; QList *m_inputSourceFactories; + QMap m_cover_cache; QmmpSettings *m_settings; static MetaDataManager* m_instance; }; -- cgit v1.2.3-13-gbd6f