aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/detailsdialog.cpp4
-rw-r--r--src/qmmpui/mediaplayer.cpp2
-rw-r--r--src/qmmpui/metadataformatter.cpp53
-rw-r--r--src/qmmpui/metadataformatter.h11
-rw-r--r--src/qmmpui/playlistparser.cpp16
-rw-r--r--src/qmmpui/playlisttask.cpp28
-rw-r--r--src/qmmpui/playlisttrack.cpp10
7 files changed, 71 insertions, 53 deletions
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp
index 6d6676765..e87b44693 100644
--- a/src/qmmpui/detailsdialog.cpp
+++ b/src/qmmpui/detailsdialog.cpp
@@ -197,7 +197,7 @@ void DetailsDialog::printInfo()
if(m_metaData[Qmmp::DISCNUMBER] != "0")
formattedText += formatRow(tr("Disc number"), m_metaData[Qmmp::DISCNUMBER]);
//stream information
- if(core->state() == Qmmp::Playing && core->url() == m_metaData.value(Qmmp::URL))
+ /*if(core->state() == Qmmp::Playing && core->url() == m_metaData.value(Qmmp::URL))
{
if(!core->streamInfo().isEmpty())
{
@@ -210,7 +210,7 @@ void DetailsDialog::printInfo()
foreach(QString key, core->streamInfo().keys())
formattedText += formatRow(key, core->streamInfo().value(key));
}
- }
+ }*/
//audio info
if(!m_metaDataModel)
{
diff --git a/src/qmmpui/mediaplayer.cpp b/src/qmmpui/mediaplayer.cpp
index a2581e694..b4f72aa09 100644
--- a/src/qmmpui/mediaplayer.cpp
+++ b/src/qmmpui/mediaplayer.cpp
@@ -207,7 +207,7 @@ void MediaPlayer::updateMetaData()
qDebug("== end of metadata ==");
PlayListModel *pl = m_pl_manager->currentPlayList();
- if (pl->currentTrack() && pl->currentTrack()->path() == m_core->metaData().value(Qmmp::URL))
+ if (pl->currentTrack() && pl->currentTrack()->path() == m_core->trackInfo().path())
{
pl->currentTrack()->updateMetaData(m_core->metaData());
pl->updateMetaData();
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index bb019b442..2b1174cfd 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -59,7 +59,7 @@ MetaDataFormatter::MetaDataFormatter(const QString &pattern)
m_fieldNames.insert("y", Qmmp::YEAR);
m_fieldNames.insert("n", Qmmp::TRACK);
m_fieldNames.insert("D", Qmmp::DISCNUMBER);
- m_fieldNames.insert("F", Qmmp::URL);
+ m_fieldNames.insert("F", Param::PATH);
m_fieldNames.insert("NN", Param::TWO_DIGIT_TRACK);
m_fieldNames.insert("l", Param::DURATION);
m_fieldNames.insert("f", Param::FILE_NAME);
@@ -98,17 +98,17 @@ const QString MetaDataFormatter::pattern() const
QString MetaDataFormatter::format(const PlayListTrack *item) const
{
- return format(item->metaData(), item->duration(), item->trackIndex());
+ return format(item->metaData(), item->path(), item->duration(), item->trackIndex());
}
-QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 duration, int track) const
+QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData, const QString &path, qint64 duration, int track) const
{
- return evalute(&m_nodes, &metaData, duration, track).trimmed();
+ return evalute(&m_nodes, &metaData, &path, duration, track).trimmed();
}
QString MetaDataFormatter::format(const TrackInfo *info, int track) const
{
- return format(info->metaData(), info->duration(), track);
+ return format(info->metaData(), info->path(), info->duration(), track);
}
QString MetaDataFormatter::formatDuration(qint64 duration, bool hideZero, bool showMs)
@@ -398,7 +398,8 @@ void MetaDataFormatter::parseEscape(QList<MetaDataFormatter::Node> *nodes, QStri
nodes->append(node);
}
-QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
+QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData,
+ const QString *path, qint64 length, int track) const
{
QString out;
for(int i = 0; i < nodes->count(); ++i)
@@ -407,56 +408,57 @@ QString MetaDataFormatter::evalute(const QList<Node> *nodes, const QMap<Qmmp::Me
if(node.command == Node::PRINT_TEXT)
{
Param p = node.params.first();
- out.append(printParam(&p, metaData, length, track));
+ out.append(printParam(&p, metaData, path, length, track));
}
else if(node.command == Node::IF_KEYWORD)
{
- QString var1 = printParam(&node.params[0], metaData, length, track);
+ QString var1 = printParam(&node.params[0], metaData, path, length, track);
if(var1.isEmpty() || var1 == "0")
- out.append(printParam(&node.params[2], metaData, length, track));
+ out.append(printParam(&node.params[2], metaData, path, length, track));
else
- out.append(printParam(&node.params[1], metaData, length, track));
+ out.append(printParam(&node.params[1], metaData, path, length, track));
}
else if(node.command == Node::AND_OPERATOR)
{
- QString var1 = printParam(&node.params[0], metaData, length, track);
- QString var2 = printParam(&node.params[1], metaData, length, track);
+ QString var1 = printParam(&node.params[0], metaData, path, length, track);
+ QString var2 = printParam(&node.params[1], metaData, path, length, track);
if(!var1.isEmpty() && !var2.isEmpty())
out.append("1");
}
else if(node.command == Node::OR_OPERATOR)
{
- QString var1 = printParam(&node.params[0], metaData, length, track);
+ QString var1 = printParam(&node.params[0], metaData, path, length, track);
if(!var1.isEmpty())
out.append("1");
else
{
- QString var2 = printParam(&node.params[1], metaData, length, track);
+ QString var2 = printParam(&node.params[1], metaData, path, length, track);
if(!var2.isEmpty())
out.append("1");
}
}
else if(node.command == Node::DIR_FUNCTION)
{
- out.append(metaData->value(Qmmp::URL).section('/', -node.params[0].number - 2, -node.params[0].number - 2));
+ out.append(path->section('/', -node.params[0].number - 2, -node.params[0].number - 2));
}
}
return out;
}
-QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
+QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qmmp::MetaData, QString> *metaData,
+ const QString *path, qint64 length, int track) const
{
switch (p->type)
{
case Param::FIELD:
- return printField(p->field, metaData, length, track);
+ return printField(p->field, metaData, path, length, track);
break;
case Param::TEXT:
return p->text;
break;
case Param::NODES:
- return evalute(&p->children, metaData, length, track);
+ return evalute(&p->children, metaData, path, length, track);
break;
default:
break;
@@ -464,26 +466,31 @@ QString MetaDataFormatter::printParam(MetaDataFormatter::Param *p, const QMap<Qm
return QString();
}
-QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const
+QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QString> *metaData,
+ const QString *path, qint64 length, int track) const
{
- if(field >= Qmmp::TITLE && field <= Qmmp::URL)
+ if(field >= Qmmp::TITLE && field <= Qmmp::DISCNUMBER)
{
if(field == Qmmp::TITLE)
{
QString title = metaData->value(Qmmp::TITLE);
if(title.isEmpty()) //using file name if title is empty
{
- title = metaData->value(Qmmp::URL).section('/',-1);
+ title = path->section('/',-1);
title = title.left(title.lastIndexOf('.'));
}
if(title.isEmpty()) //using full path if file name is empty
- title = metaData->value(Qmmp::URL);
+ title = *path;
return title;
}
return metaData->value((Qmmp::MetaData) field);
}
+ else if(field == Param::PATH)
+ {
+ return *path;
+ }
else if(field == Param::TWO_DIGIT_TRACK)
{
return QString("%1").arg(metaData->value(Qmmp::TRACK),2,'0');
@@ -494,7 +501,7 @@ QString MetaDataFormatter::printField(int field, const QMap<Qmmp::MetaData, QStr
}
else if(field == Param::FILE_NAME)
{
- return metaData->value(Qmmp::URL).section('/',-1);
+ return path->section('/',-1);
}
else if(field == Param::TRACK_INDEX)
{
diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h
index d0446183d..49e317be0 100644
--- a/src/qmmpui/metadataformatter.h
+++ b/src/qmmpui/metadataformatter.h
@@ -76,7 +76,7 @@ public:
* @param duration Duration in milliseconds seconds.
* @param track Index of track.
*/
- QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 duration = 0, int track = 0) const;
+ QString format(const QMap<Qmmp::MetaData, QString> &metaData, const QString &path, 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.
@@ -121,7 +121,8 @@ private:
//extra fields
enum
{
- TWO_DIGIT_TRACK = Qmmp::URL + 1,
+ PATH = Qmmp::DISCNUMBER + 1,
+ TWO_DIGIT_TRACK,
DURATION,
FILE_NAME,
TRACK_INDEX
@@ -139,9 +140,9 @@ private:
void parseText(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
void parseEscape(QList<Node> *nodes, QString::const_iterator *i, QString::const_iterator end);
- QString evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const;
- QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const;
- QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, qint64 length, int track) const;
+ QString evalute(const QList<Node> *nodes, const QMap<Qmmp::MetaData, QString> *metaData, const QString *path, qint64 length, int track) const;
+ QString printParam(Param *p, const QMap<Qmmp::MetaData, QString> *metaData, const QString *path, qint64 length, int track) const;
+ QString printField(int field, const QMap<Qmmp::MetaData, QString> *metaData, const QString *path, qint64 length, int track) const;
QString dumpNode(Node node) const;
diff --git a/src/qmmpui/playlistparser.cpp b/src/qmmpui/playlistparser.cpp
index 3f72b4cbc..cb2f144ae 100644
--- a/src/qmmpui/playlistparser.cpp
+++ b/src/qmmpui/playlistparser.cpp
@@ -129,20 +129,20 @@ QList<PlayListTrack *> PlayListParser::loadPlaylist(const QString &f_name)
return tracks;
}
- QString url;
+ QString path;
foreach (PlayListTrack *t, tracks)
{
- url = t->value(Qmmp::URL);
+ path = t->path();
- if(url.contains("://"))
+ if(path.contains("://"))
continue;
- if(QFileInfo(url).isRelative())
- url.prepend(QFileInfo(f_name).canonicalPath () + "/");
+ if(QFileInfo(path).isRelative())
+ path.prepend(QFileInfo(f_name).canonicalPath () + "/");
- url.replace("\\","/");
- url.replace("//","/");
- t->setValue(Qmmp::URL, url);
+ path.replace("\\","/");
+ path.replace("//","/");
+ t->setPath(path);
}
return tracks;
}
diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp
index 052f7006e..d43e6c9c1 100644
--- a/src/qmmpui/playlisttask.cpp
+++ b/src/qmmpui/playlisttask.cpp
@@ -116,12 +116,12 @@ PlayListTask::PlayListTask(QObject *parent) : QThread(parent)
m_sort_keys.insert(PlayListModel::ALBUM, Qmmp::ALBUM);
m_sort_keys.insert(PlayListModel::ARTIST, Qmmp::ARTIST);
m_sort_keys.insert(PlayListModel::ALBUMARTIST, Qmmp::ALBUMARTIST);
- m_sort_keys.insert(PlayListModel::FILENAME, Qmmp::URL);
- m_sort_keys.insert(PlayListModel::PATH_AND_FILENAME, Qmmp::URL);
+ m_sort_keys.insert(PlayListModel::FILENAME, Qmmp::UNKNOWN);
+ m_sort_keys.insert(PlayListModel::PATH_AND_FILENAME, Qmmp::UNKNOWN);
m_sort_keys.insert(PlayListModel::DATE, Qmmp::YEAR);
m_sort_keys.insert(PlayListModel::TRACK, Qmmp::TRACK);
- m_sort_keys.insert(PlayListModel::FILE_CREATION_DATE, Qmmp::URL);
- m_sort_keys.insert(PlayListModel::FILE_MODIFICATION_DATE, Qmmp::URL);
+ m_sort_keys.insert(PlayListModel::FILE_CREATION_DATE, Qmmp::UNKNOWN);
+ m_sort_keys.insert(PlayListModel::FILE_MODIFICATION_DATE, Qmmp::UNKNOWN);
}
PlayListTask::~PlayListTask()
@@ -146,7 +146,12 @@ void PlayListTask::sort(QList<PlayListTrack *> tracks, int mode)
{
TrackField *f = new TrackField;
f->track = t;
- f->value = (mode == PlayListModel::GROUP) ? t->groupName() : t->value(key);
+ if(mode == PlayListModel::GROUP)
+ f->value = t->groupName();
+ else if(key == Qmmp::UNKNOWN)
+ f->value = t->path();
+ else
+ f->value = t->value(key);
if(m_align_groups)
f->groupName = t->groupName();
m_fields.append(f);
@@ -174,7 +179,12 @@ void PlayListTask::sortSelection(QList<PlayListTrack *> tracks, int mode)
TrackField *f = new TrackField;
f->track = tracks[i];
- f->value = (mode == PlayListModel::GROUP) ? f->track->groupName() : f->track->value(key);
+ if(mode == PlayListModel::GROUP)
+ f->value = f->track->groupName();
+ else if(key == Qmmp::UNKNOWN)
+ f->value = f->track->path();
+ else
+ f->value = f->track->value(key);
m_fields.append(f);
m_indexes.append(i);
}
@@ -221,7 +231,7 @@ void PlayListTask::removeInvalidTracks(QList<PlayListTrack *> tracks, PlayListTr
{
TrackField *f = new TrackField;
f->track = tracks[i];
- f->value = f->track->value(Qmmp::URL);
+ f->value = f->track->path();
m_fields.append(f);
}
MetaDataManager::instance()->prepareForAnotherThread();
@@ -242,7 +252,7 @@ void PlayListTask::removeDuplicates(QList<PlayListTrack *> tracks, PlayListTrack
{
TrackField *f = new TrackField;
f->track = tracks[i];
- f->value = f->track->value(Qmmp::URL);
+ f->value = f->track->path();
m_fields.append(f);
}
MetaDataManager::instance()->prepareForAnotherThread();
@@ -263,7 +273,7 @@ void PlayListTask::refresh(QList<PlayListTrack *> tracks, PlayListTrack *current
{
TrackField *f = new TrackField;
f->track = tracks[i];
- f->value = f->track->value(Qmmp::URL);
+ f->value = f->track->path();
m_fields.append(f);
}
MetaDataManager::instance()->prepareForAnotherThread();
diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp
index 6840ee62b..8e0a57df1 100644
--- a/src/qmmpui/playlisttrack.cpp
+++ b/src/qmmpui/playlisttrack.cpp
@@ -98,10 +98,10 @@ void PlayListTrack::updateMetaData(TrackInfo *info)
void PlayListTrack::updateMetaData()
{
- QList <TrackInfo *> list = MetaDataManager::instance()->createPlayList(value(Qmmp::URL));
- if(!list.isEmpty() && !list.at(0)->path().contains("://"))
+ QList <TrackInfo *> list = MetaDataManager::instance()->createPlayList(path());
+ if(!list.isEmpty() && !list.first()->path().contains("://"))
{
- TrackInfo *info = list.at(0);
+ TrackInfo *info = list.first();
updateMetaData(info);
}
qDeleteAll(list);
@@ -234,9 +234,9 @@ void PlayListTrack::formatTitle(int column)
if(m_formattedTitles.count() == 1)
{
if (m_formattedTitles[column].isEmpty())
- m_formattedTitles[column] = value(Qmmp::URL).section('/',-1);
+ m_formattedTitles[column] = path().section('/',-1);
if (m_formattedTitles[column].isEmpty())
- m_formattedTitles[column] = value(Qmmp::URL);
+ m_formattedTitles[column] = path();
}
if (m_settings->convertUnderscore())
m_formattedTitles[column].replace("_", " ");