diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-13 13:03:27 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-13 13:03:27 +0000 |
| commit | 3423cc3621abea72c9f9d1b11bec219137f75f44 (patch) | |
| tree | af133d0e2465f00df0ff7d3e0baec0eda15c6d76 /src/qmmpui | |
| parent | 91bec81b83ce201a0c06cc70372207964d712d2c (diff) | |
| download | qmmp-3423cc3621abea72c9f9d1b11bec219137f75f44.tar.gz qmmp-3423cc3621abea72c9f9d1b11bec219137f75f44.tar.bz2 qmmp-3423cc3621abea72c9f9d1b11bec219137f75f44.zip | |
added some optimizations
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3587 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.cpp | 63 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.h | 6 | ||||
| -rw-r--r-- | src/qmmpui/qmmpuisettings.cpp | 10 |
4 files changed, 39 insertions, 41 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp index d4ce69002..ef1caf8e1 100644 --- a/src/qmmpui/fileloader.cpp +++ b/src/qmmpui/fileloader.cpp @@ -39,6 +39,7 @@ void FileLoader::addFile(const QString &path) QList <FileInfo *> playList = MetaDataManager::instance()->createPlayList(path, use_meta); foreach(FileInfo *info, playList) emit newPlayListTrack(new PlayListTrack(info)); + qDeleteAll(playList); } void FileLoader::addDirectory(const QString& s) diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp index f156c5368..7b69bfebd 100644 --- a/src/qmmpui/playlisttrack.cpp +++ b/src/qmmpui/playlisttrack.cpp @@ -24,18 +24,17 @@ PlayListTrack::PlayListTrack() : QMap<Qmmp::MetaData, QString>(), PlayListItem(), m_flag(FREE) { - m_info = 0; + m_settings = QmmpUiSettings::instance(); m_length = 0; } PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData, QString>(other), PlayListItem(),m_flag(FREE) { + m_settings = QmmpUiSettings::instance(); m_formattedTitle = other.m_formattedTitle; - if (other.m_info) - m_info = new FileInfo(*(other.m_info)); - else - m_info = 0; + m_formattedLength = other.m_formattedLength; + m_titleFormat = other.m_titleFormat; setSelected(other.isSelected()); setFlag(other.flag()); m_length = other.m_length; @@ -45,38 +44,30 @@ PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData, PlayListTrack::PlayListTrack(FileInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()), PlayListItem(), m_flag(FREE) { + m_settings = QmmpUiSettings::instance(); setLength(m_length = info->length()); - m_info = info; - insert(Qmmp::URL, m_info->path()); + insert(Qmmp::URL, info->path()); } PlayListTrack::~PlayListTrack() -{ - if (m_info) - delete m_info; -} +{} void PlayListTrack::updateMetaData(const QMap <Qmmp::MetaData, QString> &metaData) { QMap <Qmmp::MetaData, QString>::operator =(metaData); - readMetadata(); + formatMetaData(); } void PlayListTrack::updateMetaData() { - if (m_info) - { - delete m_info; - m_info = 0; - } QList <FileInfo *> list = MetaDataManager::instance()->createPlayList(value(Qmmp::URL)); if(!list.isEmpty() && !list.at(0)->path().contains("://")) { - m_info = list.at(0); - m_length = m_info->length(); - QMap <Qmmp::MetaData, QString>::operator =(m_info->metaData()); - insert(Qmmp::URL, m_info->path()); - readMetadata(); + FileInfo *info = list.at(0); + m_length = info->length(); + QMap <Qmmp::MetaData, QString>::operator =(info->metaData()); + insert(Qmmp::URL, info->path()); + formatMetaData(); } while(list.size() > 1) delete list.takeLast(); @@ -95,13 +86,23 @@ bool PlayListTrack::isGroup() const const QString PlayListTrack::formattedTitle() { - if(m_formattedTitle.isEmpty()) - readMetadata(); + if(m_formattedTitle.isEmpty() || m_titleFormat != m_settings->format()) + { + m_titleFormat = m_settings->format(); + formatMetaData(); + } return m_formattedTitle; } const QString PlayListTrack::formattedLength() { + if(m_length != 0 && m_formattedLength.isEmpty()) + { + MetaDataFormatter f; + m_formattedLength = f.formatLength(m_length); + } + else if(m_length == 0) + m_formattedLength.clear(); return m_formattedLength; } @@ -113,8 +114,7 @@ qint64 PlayListTrack::length() const void PlayListTrack::setLength(qint64 length) { m_length = length; - MetaDataFormatter f; - m_formattedLength = f.formatLength(m_length); + m_formattedLength.clear(); } const QString PlayListTrack::url() const @@ -132,17 +132,14 @@ PlayListTrack::FLAGS PlayListTrack::flag() const return m_flag; } -void PlayListTrack::readMetadata() +void PlayListTrack::formatMetaData() { - MetaDataFormatter f(QmmpUiSettings::instance()->format()); + MetaDataFormatter f(m_settings->format()); m_formattedTitle = f.parse(this); if (m_formattedTitle.isEmpty()) m_formattedTitle = value(Qmmp::URL).section('/',-1); - if (m_info) - delete m_info; - m_info = 0; - if (QmmpUiSettings::instance()->convertUnderscore()) + if (m_settings->convertUnderscore()) m_formattedTitle.replace("_", " "); - if (QmmpUiSettings::instance()->convertTwenty()) + if (m_settings->convertTwenty()) m_formattedTitle.replace("%20", " "); } diff --git a/src/qmmpui/playlisttrack.h b/src/qmmpui/playlisttrack.h index d2cd5416c..cabf8fbbc 100644 --- a/src/qmmpui/playlisttrack.h +++ b/src/qmmpui/playlisttrack.h @@ -25,6 +25,7 @@ #include <qmmp/qmmp.h> #include "playlistitem.h" +class QmmpUiSettings; /** @brief The PlayListTrack class provides an item for use with the PlayListModel class. * @author Ilya Kotov <forkotov02@hotmail.ru> @@ -106,10 +107,11 @@ public: void setFlag(FLAGS); private: - void readMetadata(); + void formatMetaData(); QString m_formattedTitle; QString m_formattedLength; - FileInfo *m_info; + QString m_titleFormat; + QmmpUiSettings *m_settings; qint64 m_length; FLAGS m_flag; }; diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp index 33dab8fdf..458d946ab 100644 --- a/src/qmmpui/qmmpuisettings.cpp +++ b/src/qmmpui/qmmpuisettings.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2012 by Ilya Kotov * + * Copyright (C) 2012-2013 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -81,18 +81,16 @@ void QmmpUiSettings::setConvertTwenty(bool yes) void QmmpUiSettings::setFormat(const QString &format) { - /*m_format = format; + m_format = format; if(format != m_format) { m_format = format; - //emit settingsChanged(); + emit playListSettingsChanged(); foreach(PlayListModel *model, PlayListManager::instance()->playLists()) { - foreach(PlayListTrack *item, model->items()) - item->setText(QString()); model->doCurrentVisibleRequest(); } - }*/ + } } void QmmpUiSettings::setUseMetadata(bool yes) |
