aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-30 18:29:11 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-30 18:29:11 +0000
commitaa167f22dbbeb4c2b680bc860dbc409d5a447864 (patch)
treefd5a0ac440a784de26546e23acf798b042bec75b /src
parent4fa75cf5e6e7f0abe43d68342d1f7ff993c0c3f6 (diff)
downloadqmmp-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')
-rw-r--r--src/plugins/General/hal/halplugin.cpp4
-rw-r--r--src/plugins/General/udisks2/udisks2plugin.cpp6
-rw-r--r--src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp16
-rw-r--r--src/plugins/PlayListFormats/pls/plsplaylistformat.cpp14
-rw-r--r--src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp24
-rw-r--r--src/plugins/Ui/qsui/listwidget.cpp6
-rw-r--r--src/plugins/Ui/qsui/mainwindow.cpp8
-rw-r--r--src/plugins/Ui/qsui/popupwidget.cpp2
-rw-r--r--src/plugins/Ui/skinned/eqwidget.cpp4
-rw-r--r--src/plugins/Ui/skinned/listwidget.cpp6
-rw-r--r--src/plugins/Ui/skinned/mainwindow.cpp4
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp4
-rw-r--r--src/plugins/Ui/skinned/popupwidget.cpp2
-rw-r--r--src/qmmp/trackinfo.cpp12
-rw-r--r--src/qmmp/trackinfo.h6
-rw-r--r--src/qmmpui/detailsdialog.cpp6
-rw-r--r--src/qmmpui/fileloader.cpp6
-rw-r--r--src/qmmpui/mediaplayer.cpp8
-rw-r--r--src/qmmpui/metadataformatter.cpp6
-rw-r--r--src/qmmpui/metadataformatter.h4
-rw-r--r--src/qmmpui/playlistmanager.cpp30
-rw-r--r--src/qmmpui/playlistmodel.cpp22
-rw-r--r--src/qmmpui/playlistmodel.h6
-rw-r--r--src/qmmpui/playlistparser.cpp2
-rw-r--r--src/qmmpui/playlisttask.cpp4
-rw-r--r--src/qmmpui/playlisttrack.cpp47
-rw-r--r--src/qmmpui/playlisttrack.h16
27 files changed, 120 insertions, 155 deletions
diff --git a/src/plugins/General/hal/halplugin.cpp b/src/plugins/General/hal/halplugin.cpp
index 6deabcfd3..dfea19cf9 100644
--- a/src/plugins/General/hal/halplugin.cpp
+++ b/src/plugins/General/hal/halplugin.cpp
@@ -243,7 +243,7 @@ void HalPlugin::addPath(const QString &path)
{
if(item->isGroup())
continue;
- if (dynamic_cast<PlayListTrack *>(item)->url().startsWith(path))
+ if (dynamic_cast<PlayListTrack *>(item)->path().startsWith(path))
return;
}
@@ -267,7 +267,7 @@ void HalPlugin::removePath(const QString &path)
int i = 0;
while (model->count() > 0 && i < model->count())
{
- if (model->isTrack(i) && model->track(i)->url().startsWith(path))
+ if (model->isTrack(i) && model->track(i)->path().startsWith(path))
model->removeTrack(i);
else
++i;
diff --git a/src/plugins/General/udisks2/udisks2plugin.cpp b/src/plugins/General/udisks2/udisks2plugin.cpp
index d390d8824..8a37b00e1 100644
--- a/src/plugins/General/udisks2/udisks2plugin.cpp
+++ b/src/plugins/General/udisks2/udisks2plugin.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2013-2014 by Ilya Kotov *
+ * Copyright (C) 2013-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -217,7 +217,7 @@ void UDisks2Plugin::addPath(const QString &path)
{
if(item->isGroup())
continue;
- if (dynamic_cast<PlayListTrack *>(item)->url().startsWith(path))
+ if (dynamic_cast<PlayListTrack *>(item)->path().startsWith(path))
return;
}
@@ -241,7 +241,7 @@ void UDisks2Plugin::removePath(const QString &path)
int i = 0;
while (model->count() > 0 && i < model->count())
{
- if (model->isTrack(i) && model->track(i)->url().startsWith(path))
+ if (model->isTrack(i) && model->track(i)->path().startsWith(path))
model->removeTrack(i);
else
++i;
diff --git a/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp b/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
index feb31fa19..dca7bac33 100644
--- a/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/m3u/m3uplaylistformat.cpp
@@ -62,13 +62,13 @@ QList<PlayListTrack *> M3UPlaylistFormat::decode(const QByteArray &contents)
continue;
out << new PlayListTrack();
- out.last()->insert(Qmmp::URL, str);
+ out.last()->setPath(str);
if(hasExtInf)
{
- out.last()->setLength(length);
- out.last()->insert(Qmmp::ARTIST, artist);
- out.last()->insert(Qmmp::TITLE, title);
+ out.last()->setDuration(length * 1000);
+ out.last()->setValue(Qmmp::ARTIST, artist);
+ out.last()->setValue(Qmmp::TITLE, title);
hasExtInf = false;
}
}
@@ -84,19 +84,19 @@ QByteArray M3UPlaylistFormat::encode(const QList<PlayListTrack*> &contents, cons
foreach(PlayListTrack* f, contents)
{
- QString info = "#EXTINF:" + QString::number(f->length()) + "," + formatter.format(f);
+ QString info = "#EXTINF:" + QString::number(f->duration() / 1000) + "," + formatter.format(f);
out.append(info);
- if(!f->url().contains("://") && f->url().startsWith(m3uDir))
+ if(!f->path().contains("://") && f->path().startsWith(m3uDir))
{
- QString p = f->url();
+ QString p = f->path();
p.remove(0, m3uDir.size());
if(p.startsWith("/"))
p.remove(0, 1);
out.append(p);
}
else
- out.append(f->url());
+ out.append(f->path());
}
return out.join("\n").toUtf8();
}
diff --git a/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp b/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
index 1e96077dc..47ba32822 100644
--- a/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/pls/plsplaylistformat.cpp
@@ -65,7 +65,7 @@ QList<PlayListTrack *> PLSPlaylistFormat::decode(const QByteArray &contents)
{
while(number > out.count())
out << new PlayListTrack();
- out[number - 1]->insert(Qmmp::URL, fileRegExp.cap(2));
+ out[number - 1]->setPath(fileRegExp.cap(2));
}
else
error = true;
@@ -76,8 +76,8 @@ QList<PlayListTrack *> PLSPlaylistFormat::decode(const QByteArray &contents)
{
while(number > out.count())
out << new PlayListTrack();
- out[number - 1]->insert(Qmmp::ARTIST, fullTitleRegExp.cap(2));
- out[number - 1]->insert(Qmmp::TITLE, fullTitleRegExp.cap(3));
+ out[number - 1]->setValue(Qmmp::ARTIST, fullTitleRegExp.cap(2));
+ out[number - 1]->setValue(Qmmp::TITLE, fullTitleRegExp.cap(3));
}
else
error = true;
@@ -88,7 +88,7 @@ QList<PlayListTrack *> PLSPlaylistFormat::decode(const QByteArray &contents)
{
while(number > out.count())
out << new PlayListTrack();
- out[number - 1]->insert(Qmmp::TITLE, titleRegExp.cap(2));
+ out[number - 1]->setValue(Qmmp::TITLE, titleRegExp.cap(2));
}
else
error = true;
@@ -99,7 +99,7 @@ QList<PlayListTrack *> PLSPlaylistFormat::decode(const QByteArray &contents)
{
while(number > out.count())
out << new PlayListTrack();
- out[number - 1]->setLength(lengthRegExp.cap(2).toInt());
+ out[number - 1]->setDuration(lengthRegExp.cap(2).toInt() * 1000);
}
else
error = true;
@@ -127,11 +127,11 @@ QByteArray PLSPlaylistFormat::encode(const QList<PlayListTrack *> &contents, con
foreach(PlayListTrack *f, contents)
{
QString begin = "File" + QString::number(counter) + "=";
- out.append(begin + f->url());
+ out.append(begin + f->path());
begin = "Title" + QString::number(counter) + "=";
out.append(begin + formatter.format(f));
begin = "Length" + QString::number(counter) + "=";
- out.append(begin + QString::number(f->length()));
+ out.append(begin + QString::number(f->duration() / 1000));
counter++;
}
out << "NumberOfEntries=" + QString::number(contents.count());
diff --git a/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp b/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
index f20c83903..7a66bc7bb 100644
--- a/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
+++ b/src/plugins/PlayListFormats/xspf/xspfplaylistformat.cpp
@@ -72,29 +72,29 @@ QList<PlayListTrack*> XSPFPlaylistFormat::decode(const QByteArray &contents)
{
QUrl url(xml.text().toString());
if (url.scheme() == "file") //remove scheme for local files only
- out.last()->insert(Qmmp::URL, QUrl::fromPercentEncoding(url.toString().toLatin1()).remove("file://"));
+ out.last()->setPath(QUrl::fromPercentEncoding(url.toString().toLatin1()).remove("file://"));
else
- out.last()->insert(Qmmp::URL, QUrl::fromPercentEncoding(url.toString().toLatin1()));
+ out.last()->setPath(QUrl::fromPercentEncoding(url.toString().toLatin1()));
}
else if(currentTag == "title")
{
- out.last()->insert(Qmmp::TITLE, xml.text().toString());
+ out.last()->setValue(Qmmp::TITLE, xml.text().toString());
}
else if(currentTag == "creator")
{
- out.last()->insert(Qmmp::ARTIST, xml.text().toString());
+ out.last()->setValue(Qmmp::ARTIST, xml.text().toString());
}
else if(currentTag == "annotation")
{
- out.last()->insert(Qmmp::COMMENT, xml.text().toString());
+ out.last()->setValue(Qmmp::COMMENT, xml.text().toString());
}
else if(currentTag == "album")
{
- out.last()->insert(Qmmp::ALBUM, xml.text().toString());
+ out.last()->setValue(Qmmp::ALBUM, xml.text().toString());
}
else if(currentTag == "meta" && xml.attributes().value("rel") == "year")
{
- out.last()->insert(Qmmp::YEAR, xml.text().toString());
+ out.last()->setValue(Qmmp::YEAR, xml.text().toString());
}
else
xml.skipCurrentElement();
@@ -131,13 +131,13 @@ QByteArray XSPFPlaylistFormat::encode(const QList<PlayListTrack*> &files, const
xml.writeStartElement("track");
QString url;
- if (f->url().contains("://"))
+ if (f->path().contains("://"))
{
- url = QUrl::toPercentEncoding(f->url(), ":/");
+ url = QUrl::toPercentEncoding(f->path(), ":/");
}
- else if(f->url().startsWith(xspfDir)) //relative path
+ else if(f->path().startsWith(xspfDir)) //relative path
{
- QString p = f->url();
+ QString p = f->path();
p.remove(0, xspfDir.size());
if(p.startsWith("/"))
p.remove(0, 1);
@@ -145,7 +145,7 @@ QByteArray XSPFPlaylistFormat::encode(const QList<PlayListTrack*> &files, const
}
else //absolute path
{
- url = QUrl::toPercentEncoding(QLatin1String("file://") + f->url(), ":/");
+ url = QUrl::toPercentEncoding(QLatin1String("file://") + f->path(), ":/");
}
xml.writeTextElement("location", url);
diff --git a/src/plugins/Ui/qsui/listwidget.cpp b/src/plugins/Ui/qsui/listwidget.cpp
index 5f231fb53..0a529addb 100644
--- a/src/plugins/Ui/qsui/listwidget.cpp
+++ b/src/plugins/Ui/qsui/listwidget.cpp
@@ -619,8 +619,8 @@ const QString ListWidget::getExtraString(PlayListItem *item)
QString extra_string;
PlayListTrack *track = static_cast<PlayListTrack *>(item);
- if (m_show_protocol && track->url().contains("://"))
- extra_string = "[" + track->url().split("://").at(0) + "]";
+ if (m_show_protocol && track->path().contains("://"))
+ extra_string = "[" + track->path().split("://").at(0) + "]";
if (m_model->isQueued(track))
{
@@ -721,7 +721,7 @@ void ListWidget::mouseMoveEvent(QMouseEvent *e)
else if(m_popupWidget)
{
int index = indexAt(e->y());
- if(index < 0 || !m_model->isTrack(index) || m_popupWidget->url() != m_model->track(index)->url())
+ if(index < 0 || !m_model->isTrack(index) || m_popupWidget->url() != m_model->track(index)->path())
m_popupWidget->deactivate();
}
}
diff --git a/src/plugins/Ui/qsui/mainwindow.cpp b/src/plugins/Ui/qsui/mainwindow.cpp
index 7b5b209c9..9be5ff0b2 100644
--- a/src/plugins/Ui/qsui/mainwindow.cpp
+++ b/src/plugins/Ui/qsui/mainwindow.cpp
@@ -366,7 +366,7 @@ void MainWindow::playPause()
void MainWindow::updateStatus()
{
int tracks = m_pl_manager->currentPlayList()->trackCount();
- int length = m_pl_manager->currentPlayList()->totalLength();
+ int duration = m_pl_manager->currentPlayList()->totalDuration();
if(m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused)
{
@@ -377,7 +377,7 @@ void MainWindow::updateStatus()
.arg(ap.channels())
.arg(ap.sampleRate())
.arg(tracks)
- .arg(MetaDataFormatter::formatDuration(length * 1000, false)) //TODO use milliseconds
+ .arg(MetaDataFormatter::formatDuration(duration, false))
.arg(m_core->bitrate()));
}
else if(m_core->state() == Qmmp::Stopped)
@@ -385,7 +385,7 @@ void MainWindow::updateStatus()
m_statusLabel->setText(tr("<b>%1</b>|tracks: %2|total time: %3|")
.arg(tr("Stopped"))
.arg(tracks)
- .arg(MetaDataFormatter::formatDuration(length * 1000))); //TODO use milliseconds
+ .arg(MetaDataFormatter::formatDuration(duration )));
}
else
m_statusLabel->clear();
@@ -894,7 +894,7 @@ void MainWindow::showMetaData()
{
PlayListModel *model = m_pl_manager->currentPlayList();
PlayListTrack *track = model->currentTrack();
- if(track && track->url() == m_core->metaData().value(Qmmp::URL))
+ if(track && track->path() == m_core->metaData().value(Qmmp::URL))
{
setWindowTitle(m_titleFormatter.format(track));
}
diff --git a/src/plugins/Ui/qsui/popupwidget.cpp b/src/plugins/Ui/qsui/popupwidget.cpp
index 47921a45d..dcad92917 100644
--- a/src/plugins/Ui/qsui/popupwidget.cpp
+++ b/src/plugins/Ui/qsui/popupwidget.cpp
@@ -91,7 +91,7 @@ void PopupWidget::prepare(PlayListTrack *track, QPoint pos)
return;
}
- m_url = track->url();
+ m_url = track->path();
m_label1->setText(m_formatter.format(track));
qApp->processEvents();
updateGeometry ();
diff --git a/src/plugins/Ui/skinned/eqwidget.cpp b/src/plugins/Ui/skinned/eqwidget.cpp
index 78ef021d9..f11074bfb 100644
--- a/src/plugins/Ui/skinned/eqwidget.cpp
+++ b/src/plugins/Ui/skinned/eqwidget.cpp
@@ -333,12 +333,12 @@ void EqWidget::saveAutoPreset()
if (!track)
return;
//delete preset if it already exists
- EQPreset* preset = findPreset(track->url().section("/",-1));
+ EQPreset* preset = findPreset(track->path().section("/",-1));
if (preset)
deletePreset(preset);
//create new preset
preset = new EQPreset();
- preset->setText(track->url().section("/",-1));
+ preset->setText(track->path().section("/",-1));
preset->setPreamp(m_preamp->value());
for (int i = 0; i<10; ++i)
{
diff --git a/src/plugins/Ui/skinned/listwidget.cpp b/src/plugins/Ui/skinned/listwidget.cpp
index e415aae71..4086a8f43 100644
--- a/src/plugins/Ui/skinned/listwidget.cpp
+++ b/src/plugins/Ui/skinned/listwidget.cpp
@@ -529,8 +529,8 @@ const QString ListWidget::getExtraString(int i)
if(!track)
return extra_string;
- if (m_show_protocol && track->url().contains("://"))
- extra_string = "[" + track->url().split("://").at(0) + "]";
+ if (m_show_protocol && track->path().contains("://"))
+ extra_string = "[" + track->path().split("://").at(0) + "]";
if (m_model->isQueued(track))
{
@@ -606,7 +606,7 @@ void ListWidget::mouseMoveEvent(QMouseEvent *e)
else if(m_popupWidget)
{
int index = indexAt(e->y());
- if(index < 0 || !m_model->isTrack(index) || m_popupWidget->url() != m_model->track(index)->url())
+ if(index < 0 || !m_model->isTrack(index) || m_popupWidget->url() != m_model->track(index)->path())
m_popupWidget->deactivate();
}
}
diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp
index 5108d71e9..388f1d71c 100644
--- a/src/plugins/Ui/skinned/mainwindow.cpp
+++ b/src/plugins/Ui/skinned/mainwindow.cpp
@@ -190,7 +190,7 @@ void MainWindow::showState(Qmmp::State state)
{
case Qmmp::Playing:
if (m_pl_manager->currentPlayList()->currentTrack())
- m_equalizer->loadPreset(m_pl_manager->currentPlayList()->currentTrack()->url().section("/",-1));
+ m_equalizer->loadPreset(m_pl_manager->currentPlayList()->currentTrack()->path().section("/",-1));
break;
case Qmmp::Paused:
break;
@@ -203,7 +203,7 @@ void MainWindow::showState(Qmmp::State state)
void MainWindow::showMetaData()
{
PlayListTrack *track = m_pl_manager->currentPlayList()->currentTrack();
- if (track && track->url() == m_core->metaData().value(Qmmp::URL))
+ if (track && track->path() == m_core->metaData().value(Qmmp::URL))
{
setWindowTitle(m_titleFormatter.format(track));
}
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
index 13f9819f0..6c57fbd9f 100644
--- a/src/plugins/Ui/skinned/playlist.cpp
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -576,8 +576,8 @@ void PlayList::setTime(qint64 time)
if (SoundCore::instance())
{
- QString str_length = formatTime (m_pl_manager->currentPlayList()->totalLength()) +
- "/" + formatTime (SoundCore::instance()->duration()/1000);
+ QString str_length = formatTime (m_pl_manager->currentPlayList()->totalDuration() / 1000) +
+ "/" + formatTime (SoundCore::instance()->duration() / 1000);
m_length_totalLength->display (str_length);
m_length_totalLength->update();
}
diff --git a/src/plugins/Ui/skinned/popupwidget.cpp b/src/plugins/Ui/skinned/popupwidget.cpp
index 10fa811bc..ba82c359b 100644
--- a/src/plugins/Ui/skinned/popupwidget.cpp
+++ b/src/plugins/Ui/skinned/popupwidget.cpp
@@ -92,7 +92,7 @@ void PopupWidget::prepare(PlayListTrack *item, QPoint pos)
m_url.clear();
return;
}
- m_url = item->url();
+ m_url = item->path();
m_label1->setText(m_formatter.format(item));
qApp->processEvents();
updateGeometry ();
diff --git a/src/qmmp/trackinfo.cpp b/src/qmmp/trackinfo.cpp
index 6561bfb3b..6183649dc 100644
--- a/src/qmmp/trackinfo.cpp
+++ b/src/qmmp/trackinfo.cpp
@@ -82,19 +82,19 @@ const QString TrackInfo::path() const
return m_path;
}
-const QString &TrackInfo::value(Qmmp::MetaData key) const
+const QString TrackInfo::value(Qmmp::MetaData key) const
{
- return m_metaData.find(key).value();
+ return m_metaData.value(key);
}
-const QString &TrackInfo::value(Qmmp::TrackProperty key) const
+const QString TrackInfo::value(Qmmp::TrackProperty key) const
{
- return m_properties.find(key).value();
+ return m_properties.value(key);
}
-const double &TrackInfo::value(Qmmp::ReplayGainKey key) const
+double TrackInfo::value(Qmmp::ReplayGainKey key) const
{
- return m_replayGainInfo.find(key).value();
+ return m_replayGainInfo.value(key);
}
const QMap<Qmmp::MetaData, QString> &TrackInfo::metaData() const
diff --git a/src/qmmp/trackinfo.h b/src/qmmp/trackinfo.h
index ed8538eeb..57aa36f2b 100644
--- a/src/qmmp/trackinfo.h
+++ b/src/qmmp/trackinfo.h
@@ -50,9 +50,9 @@ public:
qint64 duration () const;
bool isEmpty() const;
const QString path() const;
- const QString &value(Qmmp::MetaData key) const;
- const QString &value(Qmmp::TrackProperty key) const;
- const double &value(Qmmp::ReplayGainKey key) const;
+ const QString value(Qmmp::MetaData key) const;
+ const QString value(Qmmp::TrackProperty key) const;
+ double value(Qmmp::ReplayGainKey key) const;
const QMap<Qmmp::MetaData, QString> &metaData() const;
const QMap<Qmmp::TrackProperty, QString> &properties() const;
const QMap<Qmmp::ReplayGainKey, double> &replayGainInfo() const;
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;