diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 18:29:11 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-04-30 18:29:11 +0000 |
| commit | aa167f22dbbeb4c2b680bc860dbc409d5a447864 (patch) | |
| tree | fd5a0ac440a784de26546e23acf798b042bec75b /src/qmmpui | |
| parent | 4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6 (diff) | |
| download | qmmp-aa167f22dbbeb4c2b680bc860dbc409d5a447864.tar.gz qmmp-aa167f22dbbeb4c2b680bc860dbc409d5a447864.tar.bz2 qmmp-aa167f22dbbeb4c2b680bc860dbc409d5a447864.zip | |
changed playlist API, fixed some issues
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7940 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 6 | ||||
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 6 | ||||
| -rw-r--r-- | src/qmmpui/mediaplayer.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter.cpp | 6 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter.h | 4 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 30 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 22 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 6 | ||||
| -rw-r--r-- | src/qmmpui/playlistparser.cpp | 2 | ||||
| -rw-r--r-- | src/qmmpui/playlisttask.cpp | 4 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.cpp | 47 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.h | 16 |
12 files changed, 61 insertions, 96 deletions
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp index 386fd9676..6d6676765 100644 --- a/src/qmmpui/detailsdialog.cpp +++ b/src/qmmpui/detailsdialog.cpp @@ -132,16 +132,16 @@ void DetailsDialog::updatePage() m_ui->pageLabel->setText(tr("%1/%2").arg(m_page + 1).arg(m_tracks.count())); m_track = m_tracks.at(m_page); - m_path = m_track->url(); + m_path = m_track->path(); setWindowTitle (m_path.section('/',-1)); m_ui->pathEdit->setText(m_path); //load metadata and create metadata model QList <TrackInfo *> flist = MetaDataManager::instance()->createPlayList(m_path, TrackInfo::MetaData); - if(!flist.isEmpty() && QFile::exists(m_track->url())) + if(!flist.isEmpty() && QFile::exists(m_track->path())) m_metaData = flist.at(0)->metaData(); else - m_metaData = *m_track; + m_metaData = m_track->metaData(); qDeleteAll(flist); QPixmap cover = MetaDataManager::instance()->getCover(m_path); diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp index c9c13da68..b02f73bf6 100644 --- a/src/qmmpui/fileloader.cpp +++ b/src/qmmpui/fileloader.cpp @@ -61,7 +61,7 @@ void FileLoader::insertPlayList(const QString &fmt, const QByteArray &contents, while (!tracks.isEmpty() && !m_finished) { PlayListTrack *t = tracks.takeFirst(); - QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(), + QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->path(), m_use_meta ? TrackInfo::MetaData : TrackInfo::NoParts); if(infoList.count() != 1) //invalid or unsupported track { @@ -90,7 +90,7 @@ void FileLoader::insertPlayList(const QString &path, PlayListItem *before) while (!tracks.isEmpty() && !m_finished) { PlayListTrack *t = tracks.takeFirst(); - QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(), m_use_meta ? TrackInfo::MetaData : TrackInfo::NoParts); + QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->path(), m_use_meta ? TrackInfo::MetaData : TrackInfo::NoParts); if(infoList.count() != 1) //invalid or unsupported track { qDeleteAll(infoList); @@ -319,7 +319,7 @@ void FileLoader::removeIgnoredTracks(QList<PlayListTrack *> *tracks, const QStri foreach(PlayListTrack *track, *tracks) { - if(ignoredPaths.contains(track->url())) + if(ignoredPaths.contains(track->path())) { tracks->removeAll(track); delete track; diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp index 9550e3210..a2581e694 100644 --- a/src/qmmpui/mediaplayer.cpp +++ b/src/qmmpui/mediaplayer.cpp @@ -82,7 +82,7 @@ void MediaPlayer::play(qint64 offset) if (m_pl_manager->currentPlayList()->count() == 0) return; - QString s = m_pl_manager->currentPlayList()->currentTrack()->url(); + QString s = m_pl_manager->currentPlayList()->currentTrack()->path(); if (s.isEmpty()) { m_nextUrl.clear(); @@ -150,10 +150,10 @@ void MediaPlayer::updateNextUrl() if(track) { - bool ok = m_core->play(track->url(), true); + bool ok = m_core->play(track->path(), true); if(ok) { - m_nextUrl = track->url(); + m_nextUrl = track->path(); qDebug("MediaPlayer: next track state: received"); } else @@ -207,7 +207,7 @@ void MediaPlayer::updateMetaData() qDebug("== end of metadata =="); PlayListModel *pl = m_pl_manager->currentPlayList(); - if (pl->currentTrack() && pl->currentTrack()->url() == m_core->metaData().value(Qmmp::URL)) + if (pl->currentTrack() && pl->currentTrack()->path() == m_core->metaData().value(Qmmp::URL)) { pl->currentTrack()->updateMetaData(m_core->metaData()); pl->updateMetaData(); diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp index de5159e80..bb019b442 100644 --- a/src/qmmpui/metadataformatter.cpp +++ b/src/qmmpui/metadataformatter.cpp @@ -98,12 +98,12 @@ const QString MetaDataFormatter::pattern() const QString MetaDataFormatter::format(const PlayListTrack *item) const { - return format(*item, item->length(), item->trackIndex()); + return format(item->metaData(), item->duration(), item->trackIndex()); } -QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length, int track) const +QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 duration, int track) const { - return evalute(&m_nodes, &metaData, length, track).trimmed(); + return evalute(&m_nodes, &metaData, duration, track).trimmed(); } QString MetaDataFormatter::format(const TrackInfo *info, int track) const diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h index e11fac6fd..d0446183d 100644 --- a/src/qmmpui/metadataformatter.h +++ b/src/qmmpui/metadataformatter.h @@ -73,10 +73,10 @@ public: /*! * Converts metadata to one string using template. * @param metaData Metadata array. - * @param length Length in seconds. + * @param duration Duration in milliseconds seconds. * @param track Index of track. */ - QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length = 0, int track = 0) const; + QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 duration = 0, int track = 0) const; /*! * Converts metadata of \b TrackInfo pointer \b info to one string using template. * \param info pointer to \b TrackInfo object. diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp index f18322b93..72846a830 100644 --- a/src/qmmpui/playlistmanager.cpp +++ b/src/qmmpui/playlistmanager.cpp @@ -276,32 +276,34 @@ void PlayListManager::readPlayLists() else if (param == "file") { tracks << new PlayListTrack(); - tracks.last()->insert(Qmmp::URL, value); + tracks.last()->setPath(value); } else if (tracks.isEmpty()) continue; else if (param == "title") - tracks.last()->insert(Qmmp::TITLE, value); + tracks.last()->setValue(Qmmp::TITLE, value); else if (param == "artist") - tracks.last()->insert(Qmmp::ARTIST, value); + tracks.last()->setValue(Qmmp::ARTIST, value); else if (param == "albumartist") - tracks.last()->insert(Qmmp::ALBUMARTIST, value); + tracks.last()->setValue(Qmmp::ALBUMARTIST, value); else if (param == "album") - tracks.last()->insert(Qmmp::ALBUM, value); + tracks.last()->setValue(Qmmp::ALBUM, value); else if (param == "comment") - tracks.last()->insert(Qmmp::COMMENT, value); + tracks.last()->setValue(Qmmp::COMMENT, value); else if (param == "genre") - tracks.last()->insert(Qmmp::GENRE, value); + tracks.last()->setValue(Qmmp::GENRE, value); else if (param == "composer") - tracks.last()->insert(Qmmp::COMPOSER, value); + tracks.last()->setValue(Qmmp::COMPOSER, value); else if (param == "year") - tracks.last()->insert(Qmmp::YEAR, value); + tracks.last()->setValue(Qmmp::YEAR, value); else if (param == "track") - tracks.last()->insert(Qmmp::TRACK, value); + tracks.last()->setValue(Qmmp::TRACK, value); else if (param == "disc") - tracks.last()->insert(Qmmp::DISCNUMBER, value); + tracks.last()->setValue(Qmmp::DISCNUMBER, value); + else if (param == "duration") + tracks.last()->setDuration(value.toInt()); else if (param == "length") - tracks.last()->setLength(value.toInt()); + tracks.last()->setDuration(value.toInt() * 1000); } buffer.close(); if(m_models.isEmpty()) @@ -348,7 +350,7 @@ void PlayListManager::writePlayLists() if(m->isGroup()) continue; PlayListTrack *t = dynamic_cast<PlayListTrack *>(m); - tmpFile.write(QString("file=%1\n").arg(t->url()).toUtf8()); + tmpFile.write(QString("file=%1\n").arg(t->path()).toUtf8()); tmpFile.write(QString("title=%1\n").arg(t->value(Qmmp::TITLE)).toUtf8()); tmpFile.write(QString("artist=%1\n").arg(t->value(Qmmp::ARTIST)).toUtf8()); tmpFile.write(QString("albumartist=%1\n").arg(t->value(Qmmp::ALBUMARTIST)).toUtf8()); @@ -359,7 +361,7 @@ void PlayListManager::writePlayLists() tmpFile.write(QString("year=%1\n").arg(t->value(Qmmp::YEAR)).toUtf8()); tmpFile.write(QString("track=%1\n").arg(t->value(Qmmp::TRACK)).toUtf8()); tmpFile.write(QString("disc=%1\n").arg(t->value(Qmmp::DISCNUMBER)).toUtf8()); - tmpFile.write(QString("length=%1\n").arg(t->length()).toUtf8()); + tmpFile.write(QString("duration=%1\n").arg(t->duration()).toUtf8()); } } if(tmpFile.error() != QFile::NoError) diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 23c973646..c4ba37b68 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -43,7 +43,7 @@ PlayListModel::PlayListModel(const QString &name, QObject *parent) { qsrand(time(0)); m_ui_settings = QmmpUiSettings::instance(); - m_total_length = 0; + m_total_duration = 0; m_current = 0; m_stop_track = 0; m_name = name; @@ -92,7 +92,7 @@ void PlayListModel::setName(const QString &name) void PlayListModel::add(PlayListTrack *track) { m_container->addTrack(track); - m_total_length += track->length(); + m_total_duration += track->duration(); int flags = 0; if(m_container->trackCount() == 1) @@ -133,7 +133,7 @@ void PlayListModel::add(QList<PlayListTrack *> tracks) foreach(PlayListTrack *track, tracks) { - m_total_length += track->length(); + m_total_duration += track->duration(); emit trackAdded(track); } preparePlayState(); @@ -154,7 +154,7 @@ void PlayListModel::add(const QStringList &paths) void PlayListModel::insert(int index, PlayListTrack *track) { m_container->insertTrack(index, track); - m_total_length += track->length(); + m_total_duration += track->duration(); int flags = 0; @@ -192,7 +192,7 @@ void PlayListModel::insert(int index, QList<PlayListTrack *> tracks) foreach(PlayListTrack *track, tracks) { m_container->insertTrack(index, track); - m_total_length += track->length(); + m_total_duration += track->duration(); if(m_container->trackCount() == 1) { m_current_track = track; @@ -381,7 +381,7 @@ void PlayListModel::clear() m_stop_track = 0; m_container->clear(); m_queued_songs.clear(); - m_total_length = 0; + m_total_duration = 0; m_play_state->resetState(); emit listChanged(STRUCTURE | QUEUE | STOP_AFTER | CURRENT | SELECTION); } @@ -409,7 +409,7 @@ bool PlayListModel::contains(const QString &url) PlayListTrack *t = track(i); if(!t) continue; - if(t->url() == url) + if(t->path() == url) return true; } return false; @@ -567,8 +567,8 @@ int PlayListModel::removeTrackInternal(int i) if(track->isSelected()) flags |= SELECTION; - m_total_length -= track->length(); - m_total_length = qMax(0, m_total_length); + m_total_duration -= track->duration(); + m_total_duration = qMax(Q_INT64_C(0), m_total_duration); if(m_current_track == track) { @@ -667,9 +667,9 @@ int PlayListModel::firstSelectedLower(int row) return -1; } -int PlayListModel::totalLength() const +int PlayListModel::totalDuration() const { - return m_total_length; + return m_total_duration; } void PlayListModel::moveItems(int from, int to) diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 73f49ec1f..cdc492452 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -288,9 +288,9 @@ public: */ int firstSelectedLower(int row); /*! - * Returns total lenght in seconds of all songs. + * Returns total duration in milliseconds of all songs. */ - int totalLength() const; + int totalDuration() const; /*! * Loads playlist with \b f_name name. */ @@ -592,7 +592,7 @@ private: SimpleSelection m_selection; /*!< This flyweight object represents current selection. */ QQueue <PlayListTrack*> m_queued_songs; /*!< Songs in play queue. */ PlayState* m_play_state; /*!< Current playing state (Normal or Shuffle) */ - int m_total_length; + qint64 m_total_duration; FileLoader *m_loader; QString m_name; PlayListContainer *m_container; diff --git a/src/qmmpui/playlistparser.cpp b/src/qmmpui/playlistparser.cpp index 4b5dfc1c8..3f72b4cbc 100644 --- a/src/qmmpui/playlistparser.cpp +++ b/src/qmmpui/playlistparser.cpp @@ -142,7 +142,7 @@ QList<PlayListTrack *> PlayListParser::loadPlaylist(const QString &f_name) url.replace("\\","/"); url.replace("//","/"); - t->insert(Qmmp::URL, url); + t->setValue(Qmmp::URL, url); } return tracks; } diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp index 482478b42..052f7006e 100644 --- a/src/qmmpui/playlisttask.cpp +++ b/src/qmmpui/playlisttask.cpp @@ -460,8 +460,8 @@ void PlayListTask::run() //this code prevents re-addition of cue tracks foreach (PlayListTrack *t, m_new_tracks) { - if((t->url().contains("://") && urls.contains(t->url())) || - ignoredFiles.contains(t->url())) + if((t->path().contains("://") && urls.contains(t->path())) || + ignoredFiles.contains(t->path())) { m_new_tracks.removeAll(t); delete t; diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp index 76b12f65c..6840ee62b 100644 --- a/src/qmmpui/playlisttrack.cpp +++ b/src/qmmpui/playlisttrack.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2017 by Ilya Kotov * + * Copyright (C) 2008-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -24,17 +24,16 @@ #include "metadatahelper_p.h" #include "playlisttrack.h" -PlayListTrack::PlayListTrack() : QMap<Qmmp::MetaData, QString>(), PlayListItem() +PlayListTrack::PlayListTrack() : TrackInfo(), PlayListItem() { m_track_index = -1; m_settings = QmmpUiSettings::instance(); m_helper = MetaDataHelper::instance(); - m_length = 0; m_refCount = 0; m_sheduledForDeletion = false; } -PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData, QString>(other), +PlayListTrack::PlayListTrack(const PlayListTrack &other) : TrackInfo(other), PlayListItem() { m_track_index = -1; @@ -49,18 +48,15 @@ PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData, m_titleFormats = other.m_titleFormats; m_groupFormat = other.m_groupFormat; setSelected(other.isSelected()); - m_length = other.m_length; m_formattedLength = other.m_formattedLength; } -PlayListTrack::PlayListTrack(TrackInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()), +PlayListTrack::PlayListTrack(TrackInfo *info) : TrackInfo(*info), PlayListItem() { m_track_index = -1; m_settings = QmmpUiSettings::instance(); m_helper = MetaDataHelper::instance(); - m_length = info->duration(); - insert(Qmmp::URL, info->path()); m_refCount = 0; m_sheduledForDeletion = false; } @@ -73,29 +69,28 @@ PlayListTrack::~PlayListTrack() PlayListTrack &PlayListTrack::operator=(const PlayListTrack &other) { + TrackInfo::operator =(other); m_formattedTitles = other.m_formattedTitles; m_group = other.m_group; m_formattedLength = other.m_formattedLength; m_titleFormats = other.m_titleFormats; m_groupFormat = other.m_groupFormat; setSelected(other.isSelected()); - m_length = other.m_length; m_formattedLength = other.m_formattedLength; return *this; } void PlayListTrack::updateMetaData(const QMap <Qmmp::MetaData, QString> &metaData) { - QMap <Qmmp::MetaData, QString>::operator =(metaData); + setValues(metaData); m_formattedTitles.clear(); formatGroup(); } void PlayListTrack::updateMetaData(TrackInfo *info) { - m_length = info->duration(); - QMap <Qmmp::MetaData, QString>::operator =(info->metaData()); - insert(Qmmp::URL, info->path()); + setValues(info->metaData()); + setPath(info->path()); m_formattedTitles.clear(); m_formattedLength.clear(); formatGroup(); @@ -226,31 +221,13 @@ const QStringList PlayListTrack::formattedTitles() const QString PlayListTrack::formattedLength() { - if(m_length > 0 && m_formattedLength.isEmpty()) - { - m_formattedLength = MetaDataFormatter::formatDuration(m_length); - } - else if(m_length == 0) + if(duration() > 0 && m_formattedLength.isEmpty()) + m_formattedLength = MetaDataFormatter::formatDuration(duration()); + else if(duration() <= 0 && !m_formattedLength.isEmpty()) m_formattedLength.clear(); return m_formattedLength; } -qint64 PlayListTrack::length() const -{ - return m_length; -} - -void PlayListTrack::setLength(qint64 length) -{ - m_length = qMax(length, 0LL); - m_formattedLength.clear(); -} - -const QString PlayListTrack::url() const -{ - return value(Qmmp::URL); -} - void PlayListTrack::formatTitle(int column) { m_formattedTitles[column] = m_helper->titleFormatter(column)->format(this); @@ -269,7 +246,7 @@ void PlayListTrack::formatTitle(int column) void PlayListTrack::formatGroup() { - if(length() == 0 && url().contains("://")) + if(duration() <= 0 && path().contains("://")) { m_group = qApp->translate("PlayListTrack", "Streams"); return; diff --git a/src/qmmpui/playlisttrack.h b/src/qmmpui/playlisttrack.h index d7dd90073..d8f7f7c82 100644 --- a/src/qmmpui/playlisttrack.h +++ b/src/qmmpui/playlisttrack.h @@ -20,7 +20,6 @@ #ifndef PLAYLISTTRACK_H #define PLAYLISTTRACK_H -#include <QMap> #include <QStringList> #include <qmmp/qmmp.h> #include <qmmp/trackinfo.h> @@ -34,7 +33,7 @@ class MetaDataHelper; /** @brief The PlayListTrack class provides a track for use with the PlayListModel class. * @author Ilya Kotov <forkotov02@ya.ru> */ -class QMMPUI_EXPORT PlayListTrack : public QMap <Qmmp::MetaData, QString>, public PlayListItem +class QMMPUI_EXPORT PlayListTrack : public TrackInfo, public PlayListItem { public: /*! @@ -72,18 +71,6 @@ public: */ const QString formattedLength(); /*! - * Returns song length in seconds. - */ - qint64 length() const; - /*! - * Sets length in seconds. - */ - void setLength(qint64 length); - /*! - * Same as url() - */ - const QString url() const; - /*! * Updates current metadata. * @param metaData Map with metadata values. */ @@ -147,7 +134,6 @@ private: QStringList m_titleFormats; QString m_groupFormat; QmmpUiSettings *m_settings; - qint64 m_length; int m_refCount; int m_track_index; bool m_sheduledForDeletion; |
