diff options
Diffstat (limited to 'src/qmmpui')
| -rw-r--r-- | src/qmmpui/detailsdialog.cpp | 4 | ||||
| -rw-r--r-- | src/qmmpui/mediaplayer.cpp | 2 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter.cpp | 53 | ||||
| -rw-r--r-- | src/qmmpui/metadataformatter.h | 11 | ||||
| -rw-r--r-- | src/qmmpui/playlistparser.cpp | 16 | ||||
| -rw-r--r-- | src/qmmpui/playlisttask.cpp | 28 | ||||
| -rw-r--r-- | src/qmmpui/playlisttrack.cpp | 10 |
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("_", " "); |
