aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-25 19:02:17 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-04-25 19:02:17 +0000
commit646e72f41adb1916f1c24f057b39bed4d7b949c6 (patch)
tree1e8eb279b017ef1370d9df685a387c874d67c105 /src
parent2f766cd3906b2a9534321d955589cd4d9212b175 (diff)
downloadqmmp-646e72f41adb1916f1c24f057b39bed4d7b949c6.tar.gz
qmmp-646e72f41adb1916f1c24f057b39bed4d7b949c6.tar.bz2
qmmp-646e72f41adb1916f1c24f057b39bed4d7b949c6.zip
prepare for new metadata api iplementation (compilation is broken,
latest working revision: 7935) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7936 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Engines/Engines.pro2
-rw-r--r--src/plugins/General/General.pro30
-rw-r--r--src/plugins/Input/Input.pro24
-rw-r--r--src/plugins/Input/mpeg/decodermpegfactory.cpp148
-rw-r--r--src/plugins/Input/mpeg/decodermpegfactory.h10
-rw-r--r--src/qmmp/abstractengine.h1
-rw-r--r--src/qmmp/decoder.h3
-rw-r--r--src/qmmp/decoderfactory.h28
-rw-r--r--src/qmmp/enginefactory.h20
-rw-r--r--src/qmmp/fileinfo.cpp122
-rw-r--r--src/qmmp/fileinfo.h106
-rw-r--r--src/qmmp/metadatamanager.cpp14
-rw-r--r--src/qmmp/metadatamanager.h5
-rw-r--r--src/qmmp/qmmp.pro8
-rw-r--r--src/qmmp/qmmpaudioengine.cpp2
-rw-r--r--src/qmmp/trackinfo.cpp6
-rw-r--r--src/qmmp/trackinfo.h9
-rw-r--r--src/qmmpui/detailsdialog.cpp2
-rw-r--r--src/qmmpui/fileloader.cpp17
-rw-r--r--src/qmmpui/metadataformatter.cpp4
-rw-r--r--src/qmmpui/metadataformatter.h7
-rw-r--r--src/qmmpui/playlistitem.h1
-rw-r--r--src/qmmpui/playlistmanager.cpp4
-rw-r--r--src/qmmpui/playlistmodel.h1
-rw-r--r--src/qmmpui/playlisttask.cpp4
-rw-r--r--src/qmmpui/playlisttrack.cpp12
-rw-r--r--src/qmmpui/playlisttrack.h8
27 files changed, 204 insertions, 394 deletions
diff --git a/src/plugins/Engines/Engines.pro b/src/plugins/Engines/Engines.pro
index 1dddcfd5d..abd780457 100644
--- a/src/plugins/Engines/Engines.pro
+++ b/src/plugins/Engines/Engines.pro
@@ -1,4 +1,4 @@
include(../../../qmmp.pri)
-SUBDIRS += mplayer
+#SUBDIRS += mplayer
TEMPLATE = subdirs
diff --git a/src/plugins/General/General.pro b/src/plugins/General/General.pro
index 03727ba7d..93207f5d1 100644
--- a/src/plugins/General/General.pro
+++ b/src/plugins/General/General.pro
@@ -1,20 +1,20 @@
include(../../../qmmp.pri)
-SUBDIRS += statusicon \
- notifier \
- lyrics \
- scrobbler \
- fileops \
- covermanager \
- streambrowser \
- trackchange \
- hotkey \
- copypaste \
- rgscan
-unix:SUBDIRS += mpris \
- kdenotify \
- converter \
- gnomehotkey
+SUBDIRS += statusicon
+# notifier \
+# lyrics \
+# scrobbler \
+# fileops \
+# covermanager \
+# streambrowser \
+# trackchange \
+# hotkey \
+# copypaste \
+# rgscan
+#unix:SUBDIRS += mpris \
+# kdenotify \
+# converter \
+# gnomehotkey
contains(CONFIG, UDISKS2_PLUGIN){
unix:SUBDIRS += udisks2
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index 498c5ff60..ea63c61d0 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -1,53 +1,53 @@
include(../../../qmmp.pri)
TEMPLATE = subdirs
-SUBDIRS += vorbis cue sndfile wavpack
+#SUBDIRS += vorbis cue sndfile wavpack
contains(CONFIG, WITH_MAD)|contains(CONFIG, WITH_MPG123){
SUBDIRS += mpeg
}
contains(CONFIG, FLAC_PLUGIN){
- SUBDIRS += flac
+ #SUBDIRS += flac
}
contains(CONFIG, MUSEPACK_PLUGIN){
- SUBDIRS += mpc
+ #SUBDIRS += mpc
}
contains(CONFIG, MODPLUG_PLUGIN){
- SUBDIRS += modplug
+ #SUBDIRS += modplug
}
contains(CONFIG, FFMPEG_PLUGIN){
- SUBDIRS += ffmpeg
+ #SUBDIRS += ffmpeg
}
contains(CONFIG, GME_PLUGIN){
- SUBDIRS += gme
+ #SUBDIRS += gme
}
contains(CONFIG, OPUS_PLUGIN){
- SUBDIRS += opus
+ #SUBDIRS += opus
}
contains(CONFIG, CDAUDIO_PLUGIN){
- SUBDIRS += cdaudio
+ #SUBDIRS += cdaudio
}
contains(CONFIG, SID_PLUGIN){
- SUBDIRS += sid
+ #SUBDIRS += sid
}
unix{
contains(CONFIG, AAC_PLUGIN){
- SUBDIRS += aac
+ #SUBDIRS += aac
}
contains(CONFIG, WILDMIDI_PLUGIN){
- SUBDIRS += wildmidi
+ #SUBDIRS += wildmidi
}
contains(CONFIG, ARCHIVE_PLUGIN){
@@ -57,7 +57,7 @@ contains(CONFIG, ARCHIVE_PLUGIN){
TAGLIB_VER_MIN = $$member(TAGLIB_VERSION, 1)
greaterThan(TAGLIB_VER_MAJ, 1) | equals(TAGLIB_VER_MAJ, 1) {
- greaterThan(TAGLIB_VER_MIN, 10):SUBDIRS += archive
+ #greaterThan(TAGLIB_VER_MIN, 10):SUBDIRS += archive
} else {
message("Archive plugin requires at least TagLib 1.11")
}
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.cpp b/src/plugins/Input/mpeg/decodermpegfactory.cpp
index 54e671f86..b435417d4 100644
--- a/src/plugins/Input/mpeg/decodermpegfactory.cpp
+++ b/src/plugins/Input/mpeg/decodermpegfactory.cpp
@@ -32,6 +32,10 @@
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
#include <taglib/tfilestream.h>
+#include <taglib/id3v2tag.h>
+#include <taglib/id3v2header.h>
+#include <taglib/textidentificationframe.h>
+#include <taglib/id3v2framefactory.h>
#include "mpegmetadatamodel.h"
#include "replaygainreader.h"
#include "settingsdialog.h"
@@ -43,6 +47,9 @@
#endif
#include "decodermpegfactory.h"
+
+#define CSTR_TO_QSTR(str,utf) codec->toUnicode(str.toCString(utf)).trimmed()
+
// DecoderMPEGFactory
DecoderMPEGFactory::DecoderMPEGFactory()
@@ -197,15 +204,18 @@ Decoder *DecoderMPEGFactory::create(const QString &url, QIODevice *input)
return d;
}
-QList<FileInfo *> DecoderMPEGFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *)
+QList<TrackInfo *> DecoderMPEGFactory::createPlayList(const QString &fileName, TrackInfo::Parts parts, QStringList *)
{
- FileInfo *info = new FileInfo(fileName);
+ TrackInfo *info = new TrackInfo(fileName);
TagLib::Tag *tag = 0;
TagLib::FileStream stream(QStringToFileName(fileName), true);
TagLib::MPEG::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
- if (useMetaData)
+ if(fileRef.audioProperties())
+ info->setDuration(fileRef.audioProperties()->lengthInMilliseconds());
+
+ if (parts && TrackInfo::MetaData)
{
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
settings.beginGroup("MPEG");
@@ -217,65 +227,54 @@ QList<FileInfo *> DecoderMPEGFactory::createPlayList(const QString &fileName, bo
tag_array[1] = settings.value("tag_2", SettingsDialog::APE).toInt();
tag_array[2] = settings.value("tag_3", SettingsDialog::ID3v1).toInt();
- QByteArray name;
+ QByteArray codecName;
for (int i = 0; i < 3; ++i)
{
+ codecName.clear();
switch ((uint) tag_array[i])
{
case SettingsDialog::ID3v1:
- codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1")
- .toByteArray ());
+ codecName = settings.value("ID3v1_encoding","ISO-8859-1").toByteArray();
tag = fileRef.ID3v1Tag();
break;
case SettingsDialog::ID3v2:
- name = settings.value("ID3v2_encoding","UTF-8").toByteArray ();
- if (name.contains("UTF"))
- codec = QTextCodec::codecForName ("UTF-8");
- else
- codec = QTextCodec::codecForName(name);
+ codecName = settings.value("ID3v2_encoding","UTF-8").toByteArray ();
tag = fileRef.ID3v2Tag();
break;
case SettingsDialog::APE:
- codec = QTextCodec::codecForName ("UTF-8");
+ codecName = "UTF-8";
tag = fileRef.APETag();
break;
case SettingsDialog::Disabled:
break;
}
if (tag && !tag->isEmpty())
+ {
+ if(codecName.contains("UTF"))
+ codecName = "UTF-8";
+ if(!codecName.isEmpty())
+ codec = QTextCodec::codecForName(codecName);
break;
+ }
}
settings.endGroup();
if(m_using_rusxmms)
- codec = QTextCodec::codecForName ("UTF-8");
+ codec = QTextCodec::codecForName("UTF-8");
if (!codec)
- codec = QTextCodec::codecForName ("UTF-8");
+ codec = QTextCodec::codecForName("UTF-8");
if (tag && codec)
{
- bool utf = codec->name ().contains("UTF");
- TagLib::String album = tag->album();
- TagLib::String artist = tag->artist();
- TagLib::String comment = tag->comment();
- TagLib::String genre = tag->genre();
- TagLib::String title = tag->title();
-
- info->setMetaData(Qmmp::ALBUM,
- codec->toUnicode(album.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::ARTIST,
- codec->toUnicode(artist.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::COMMENT,
- codec->toUnicode(comment.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::GENRE,
- codec->toUnicode(genre.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::TITLE,
- codec->toUnicode(title.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::YEAR,
- tag->year());
- info->setMetaData(Qmmp::TRACK,
- tag->track());
+ bool utf = codec->name().contains("UTF");
+ info->setValue(Qmmp::ALBUM, CSTR_TO_QSTR(tag->album(), utf));
+ info->setValue(Qmmp::ARTIST, CSTR_TO_QSTR(tag->artist(), utf));
+ info->setValue(Qmmp::COMMENT, CSTR_TO_QSTR(tag->comment(), utf));
+ info->setValue(Qmmp::GENRE, CSTR_TO_QSTR(tag->genre(), utf));
+ info->setValue(Qmmp::TITLE, CSTR_TO_QSTR(tag->title(), utf));
+ info->setValue(Qmmp::YEAR, tag->year());
+ info->setValue(Qmmp::TRACK, tag->track());
if(tag == fileRef.ID3v2Tag())
{
@@ -283,39 +282,90 @@ QList<FileInfo *> DecoderMPEGFactory::createPlayList(const QString &fileName, bo
{
TagLib::String albumArtist;
albumArtist = fileRef.ID3v2Tag()->frameListMap()["TPE2"].front()->toString();
- info->setMetaData(Qmmp::ALBUMARTIST,
- codec->toUnicode(albumArtist.toCString(utf)).trimmed());
+ info->setValue(Qmmp::ALBUMARTIST, CSTR_TO_QSTR(albumArtist, utf));
}
if(!fileRef.ID3v2Tag()->frameListMap()["TCOM"].isEmpty())
{
TagLib::String composer;
composer = fileRef.ID3v2Tag()->frameListMap()["TCOM"].front()->toString();
- info->setMetaData(Qmmp::COMPOSER,
- codec->toUnicode(composer.toCString(utf)).trimmed());
+ info->setValue(Qmmp::COMPOSER, CSTR_TO_QSTR(composer, utf));
}
if(!fileRef.ID3v2Tag()->frameListMap()["TPOS"].isEmpty())
{
TagLib::String disc = fileRef.ID3v2Tag()->frameListMap()["TPOS"].front()->toString();
- info->setMetaData(Qmmp::DISCNUMBER, QString(disc.toCString()).trimmed());
+ info->setValue(Qmmp::DISCNUMBER, CSTR_TO_QSTR(disc, utf));
}
}
else if(tag == fileRef.APETag())
{
TagLib::APE::Item fld;
if(!(fld = fileRef.APETag()->itemListMap()["ALBUM ARTIST"]).isEmpty())
- info->setMetaData(Qmmp::ALBUMARTIST,
- QString::fromUtf8(fld.toString().toCString(true)).trimmed());
+ info->setValue(Qmmp::ALBUMARTIST, CSTR_TO_QSTR(fld.toString(), true));
if(!(fld = fileRef.APETag()->itemListMap()["COMPOSER"]).isEmpty())
- info->setMetaData(Qmmp::COMPOSER,
- QString::fromUtf8(fld.toString().toCString(true)).trimmed());
+ info->setValue(Qmmp::COMPOSER, CSTR_TO_QSTR(fld.toString(), true));
}
}
}
- if (fileRef.audioProperties())
- info->setLength(fileRef.audioProperties()->length());
- QList <FileInfo*> list;
- list << info;
- return list;
+
+ if(parts & TrackInfo::Properties)
+ {
+ info->setValue(Qmmp::BITRATE, fileRef.audioProperties()->bitrate());
+ info->setValue(Qmmp::SAMPLERATE, fileRef.audioProperties()->sampleRate());
+ info->setValue(Qmmp::CHANNELS, fileRef.audioProperties()->channels());
+ info->setValue(Qmmp::BITS_PER_SAMPLE, 16);
+ switch(fileRef.audioProperties()->version())
+ {
+ case TagLib::MPEG::Header::Version1:
+ info->setValue(Qmmp::FORMAT_NAME, QString("MPEG-1 layer %1").arg(fileRef.audioProperties()->layer()));
+ break;
+ case TagLib::MPEG::Header::Version2:
+ info->setValue(Qmmp::FORMAT_NAME, QString("MPEG-2 layer %1").arg(fileRef.audioProperties()->layer()));
+ break;
+ case TagLib::MPEG::Header::Version2_5:
+ info->setValue(Qmmp::FORMAT_NAME, QString("MPEG-2.5 layer %1").arg(fileRef.audioProperties()->layer()));
+ }
+ }
+
+ if(parts & TrackInfo::ReplayGainInfo)
+ {
+ if(fileRef.ID3v2Tag() && !fileRef.ID3v2Tag()->isEmpty())
+ {
+ TagLib::ID3v2::Tag *tag = fileRef.ID3v2Tag();
+ TagLib::ID3v2::UserTextIdentificationFrame* frame = 0;
+ TagLib::ID3v2::FrameList frames = tag->frameList("TXXX");
+ for(TagLib::ID3v2::FrameList::Iterator it = frames.begin(); it != frames.end(); ++it)
+ {
+ frame = dynamic_cast<TagLib::ID3v2::UserTextIdentificationFrame*>(*it);
+ if(!frame || frame->fieldList().size() < 2)
+ continue;
+
+ TagLib::String desc = frame->description().upper();
+ if (desc == "REPLAYGAIN_TRACK_GAIN")
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_GAIN, TStringToQString(frame->fieldList()[1]));
+ else if (desc == "REPLAYGAIN_TRACK_PEAK")
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_PEAK, TStringToQString(frame->fieldList()[1]));
+ else if (desc == "REPLAYGAIN_ALBUM_GAIN")
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN, TStringToQString(frame->fieldList()[1]));
+ else if (desc == "REPLAYGAIN_ALBUM_PEAK")
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK, TStringToQString(frame->fieldList()[1]));
+ }
+ }
+ if(info->replayGainInfo().isEmpty() && fileRef.APETag() && !fileRef.APETag()->isEmpty())
+ {
+ TagLib::APE::Tag *tag = fileRef.APETag();
+ TagLib::APE::ItemListMap items = tag->itemListMap();
+ if (items.contains("REPLAYGAIN_TRACK_GAIN"))
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].values()[0]));
+ if (items.contains("REPLAYGAIN_TRACK_PEAK"))
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].values()[0]));
+ if (items.contains("REPLAYGAIN_ALBUM_GAIN"))
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN,TStringToQString(items["REPLAYGAIN_ALBUM_GAIN"].values()[0]));
+ if (items.contains("REPLAYGAIN_ALBUM_PEAK"))
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK,TStringToQString(items["REPLAYGAIN_ALBUM_PEAK"].values()[0]));
+ }
+ }
+
+ return QList<TrackInfo*>() << info;
}
MetaDataModel* DecoderMPEGFactory::createMetaDataModel(const QString &path, QObject *parent)
diff --git a/src/plugins/Input/mpeg/decodermpegfactory.h b/src/plugins/Input/mpeg/decodermpegfactory.h
index 5fd13dbe4..6bea0eee6 100644
--- a/src/plugins/Input/mpeg/decodermpegfactory.h
+++ b/src/plugins/Input/mpeg/decodermpegfactory.h
@@ -20,15 +20,7 @@
#ifndef DECODERMPEGFACTORY_H
#define DECODERMPEGFACTORY_H
-#include <QObject>
-#include <QString>
-#include <QIODevice>
-#include <QWidget>
-
-#include <qmmp/decoder.h>
-#include <qmmp/output.h>
#include <qmmp/decoderfactory.h>
-#include <qmmp/metadatamodel.h>
class DecoderMPEGFactory : public QObject,
DecoderFactory
@@ -42,7 +34,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(const QString &path, QIODevice *input);
- QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData, QStringList *);
+ QList<TrackInfo *> createPlayList(const QString &fileName, TrackInfo::Parts parts, QStringList *);
MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h
index 6ce043ac0..2b59527d9 100644
--- a/src/qmmp/abstractengine.h
+++ b/src/qmmp/abstractengine.h
@@ -30,6 +30,7 @@
class QIODevice;
class InputSource;
class QmmpPluginCache;
+class EngineFactory;
/*! @brief The AbstractEngine class provides the base interface class of audio audio engines.
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index 1b4883e84..dbaea31ae 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -11,13 +11,12 @@
#include <QList>
#include <QMap>
#include <QIODevice>
-#include "fileinfo.h"
#include "qmmp.h"
#include "audioparameters.h"
#include "channelmap.h"
-#include "decoderfactory.h"
class QmmpPluginCache;
+class DecoderFactory;
/*! @brief The Decoder class provides the base interface class of audio decoders.
* @author Brad Hughes <bhughes@trolltech.com>
diff --git a/src/qmmp/decoderfactory.h b/src/qmmp/decoderfactory.h
index 07ad75df4..f4fe8f943 100644
--- a/src/qmmp/decoderfactory.h
+++ b/src/qmmp/decoderfactory.h
@@ -21,24 +21,20 @@
#ifndef DECODERFACTORY_H
#define DECODERFACTORY_H
+#include <QObject>
+#include <QString>
+#include <QIODevice>
+#include <QTranslator>
+#include <QStringList>
#include "qmmp_export.h"
-
-class QObject;
-class QString;
-class QIODevice;
-class QWidget;
-class QTranslator;
-class QStringList;
-
-class Decoder;
-class Output;
-class FileInfo;
-class MetaDataModel;
+#include "decoder.h"
+#include "metadatamodel.h"
+#include "trackinfo.h"
/*! @brief Helper class to store input plugin properties.
* @author Ilya Kotov <forkotov02@ya.ru>
*/
-class QMMP_EXPORT DecoderProperties
+class DecoderProperties
{
public:
/*!
@@ -88,14 +84,14 @@ public:
*/
virtual Decoder *create(const QString &path, QIODevice *input = 0) = 0;
/*!
- * Extracts metadata and audio information from file \b path and returns a list of FileInfo items.
+ * Extracts metadata and audio information from file \b path and returns a list of \b TrackInfo items.
* One file may contain several playlist items (for example: cda disk or flac with embedded cue)
* @param fileName File path.
- * @param useMetaData Metadata usage (\b true - use, \b - do not use)
+ * @param parts parts of metadata which should be extracted from file
* @param ignoredPaths Pointer to a list of the files which should be ignored by the recursive search
* (useful to exclude cue data files from playlist)
*/
- virtual QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData, QStringList *ignoredPaths) = 0;
+ virtual QList<TrackInfo *> createPlayList(const QString &fileName, TrackInfo::Parts parts, QStringList *ignoredPaths) = 0;
/*!
* Creats metadata object, which provides full access to file tags.
* @param path File path.
diff --git a/src/qmmp/enginefactory.h b/src/qmmp/enginefactory.h
index b41e6ffc6..d8b697f9d 100644
--- a/src/qmmp/enginefactory.h
+++ b/src/qmmp/enginefactory.h
@@ -21,16 +21,17 @@
#ifndef EMGINEFACTORY_H
#define EMGINEFACTORY_H
+#include <QStringList>
+#include <QList>
+#include <QMap>
+#include <QIODevice>
+#include <QTranslator>
#include "qmmp_export.h"
+#include "qmmp.h"
+#include "trackinfo.h"
+#include "abstractengine.h"
+#include "metadatamodel.h"
-class QObject;
-class QString;
-class QIODevice;
-class QWidget;
-class QTranslator;
-class QStringList;
-class MetaDataModel;
-class FileInfo;
class AbstractEngine;
/*! @brief Helper class to store custom audio engine properies.
@@ -83,11 +84,10 @@ public:
* Extracts metadata and audio information from file \b path and returns a list of FileInfo items.
* One file may contain several playlist items (for example: cda disk or flac with embedded cue)
* @param fileName File path.
- * @param useMetaData Metadata usage (\b true - use, \b - do not use)
* @param ignoredPaths Pointer to a list of the files which should be ignored by the recursive search
* (useful to exclude cue data files from playlist)
*/
- virtual QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData, QStringList *ignoredPaths) = 0;
+ virtual QList<TrackInfo *> createPlayList(const QString &fileName, TrackInfo::Parts parts, QStringList *ignoredPaths) = 0;
/*!
* Creats metadata object, which provides full access to file tags.
* @param path File path.
diff --git a/src/qmmp/fileinfo.cpp b/src/qmmp/fileinfo.cpp
deleted file mode 100644
index c813d003e..000000000
--- a/src/qmmp/fileinfo.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2008-2018 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-#include "fileinfo.h"
-
-FileInfo::FileInfo(const QString &path)
-{
- m_path = path;
- m_length = 0;
- m_metaData.insert(Qmmp::URL, path);
-}
-
-FileInfo::FileInfo(const FileInfo &other)
-{
- *this = other;
-}
-
-FileInfo::~FileInfo()
-{}
-
-FileInfo &FileInfo::operator=(const FileInfo &info)
-{
- setLength(info.length());
- setMetaData(info.metaData());
- setPath(info.path());
- return *this;
-}
-
-bool FileInfo::operator==(const FileInfo &info) const
-{
- return metaData () == info.metaData () &&
- length () == info.length () &&
- path() == info.path();
-}
-
-bool FileInfo::operator!=(const FileInfo &info) const
-{
- return !operator==(info);
-}
-
-qint64 FileInfo::length () const
-{
- return m_length;
-}
-
-const QString FileInfo::metaData(Qmmp::MetaData key) const
-{
- return m_metaData[key];
-}
-
-const QMap<Qmmp::MetaData, QString> &FileInfo::metaData() const
-{
- return m_metaData;
-}
-
-void FileInfo::setMetaData(const QMap<Qmmp::MetaData, QString> &metaData)
-{
- m_metaData = metaData;
- if(m_metaData.value(Qmmp::URL).isEmpty())
- m_metaData.insert(Qmmp::URL, m_path);
-
- foreach(QString value, m_metaData.values()) //remove empty keys
- {
- if (value.isEmpty() || value == "0")
- m_metaData.remove(m_metaData.key(value));
- }
-}
-
-bool FileInfo::isEmpty() const
-{
- return m_metaData.isEmpty(); //TODO add correct test
-}
-
-const QString FileInfo::path() const
-{
- return m_path;
-}
-
-void FileInfo::setLength(qint64 length)
-{
- m_length = length;
-}
-
-void FileInfo::setMetaData(Qmmp::MetaData key, const QString &value)
-{
- if (value.isEmpty() || value == "0")
- return;
-
- //extract track number from "Track Number/Total Tracks Number" string
- if((key == Qmmp::TRACK || key == Qmmp::DISCNUMBER) && value.contains("/"))
- m_metaData.insert(key, value.section("/",0,0));
- else
- m_metaData.insert(key, value);
-}
-
-void FileInfo::setMetaData(Qmmp::MetaData key, int value)
-{
- if(value != 0)
- m_metaData.insert(key, QString::number(value));
-}
-
-void FileInfo::setPath(const QString &path)
-{
- m_path = path;
- m_metaData.insert(Qmmp::URL, path);
-}
diff --git a/src/qmmp/fileinfo.h b/src/qmmp/fileinfo.h
deleted file mode 100644
index 2b13170ed..000000000
--- a/src/qmmp/fileinfo.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2008-2018 by Ilya Kotov *
- * forkotov02@ya.ru *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-#ifndef FILEINFO_H
-#define FILEINFO_H
-
-#include <QString>
-#include <QMap>
-#include <QUrl>
-
-#include "qmmp.h"
-
-/*! @brief The FileInfo class stores metadata and audio information about media file or stream.
- * @author Ilya Kotov <forkotov02@ya.ru>
- */
-class QMMP_EXPORT FileInfo
-{
-public:
- /*!
- * Constructs a new empty FileInfo that with file \b path
- */
- FileInfo(const QString &path = QString());
- /*!
- * Constructs a new FileInfo that is a copy of the given \b info
- */
- FileInfo(const FileInfo &info);
- /*!
- * Destructor.
- */
- ~FileInfo();
- /*!
- * Makes a copy of the given \b info
- */
- FileInfo &operator=(const FileInfo &info);
- /*!
- * Returns \b true if this FileInfo object refers to \b info; otherwise returns \b false.
- */
- bool operator==(const FileInfo &info) const;
- /*!
- * Returns \b false if this FileInfo object refers to \b info; otherwise returns \b true.
- */
- bool operator!=(const FileInfo &info) const;
- /*!
- * Returnds file duration in seconds.
- */
- qint64 length () const;
- /*!
- * Returns the metdata string associated with the given \b key.
- */
- const QString metaData(Qmmp::MetaData key) const;
- /*!
- * Returns all meta data in map.
- */
- const QMap<Qmmp::MetaData, QString> &metaData() const;
- /*!
- * Returns \b true if stream/file has no metadata, otherwise returns \b false
- */
- bool isEmpty() const;
- /*!
- * Returns file path or stream url.
- */
- const QString path() const;
- /*!
- * Sets file duration to \b length in seconds.
- */
- void setLength(qint64 length);
- /*!
- * Sets metadata \b key to \b value
- */
- void setMetaData(Qmmp::MetaData key, const QString &value);
- /*!
- * Sets metadata \b key to \b value (integer is converted to string)
- */
- void setMetaData(Qmmp::MetaData key, int value);
- /*!
- * Changes all metadata to \b metaData
- */
- void setMetaData(const QMap <Qmmp::MetaData, QString> &metaData);
- /*!
- * Sets file path or stream url to \b path
- */
- void setPath(const QString &path);
-
-private:
- QMap<Qmmp::MetaData, QString> m_metaData;
- qint64 m_length;
- QString m_path;
-};
-
-#endif
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp
index ca54b85bf..9a401578d 100644
--- a/src/qmmp/metadatamanager.cpp
+++ b/src/qmmp/metadatamanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2016 by Ilya Kotov *
+ * Copyright (C) 2009-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -47,9 +47,9 @@ MetaDataManager::~MetaDataManager()
m_instance = 0;
}
-QList <FileInfo *> MetaDataManager::createPlayList(const QString &fileName, bool useMetaData, QStringList *ignoredPaths) const
+QList<TrackInfo *> MetaDataManager::createPlayList(const QString &fileName, TrackInfo::Parts parts, QStringList *ignoredPaths) const
{
- QList <FileInfo *> list;
+ QList <TrackInfo *> list;
DecoderFactory *fact = 0;
EngineFactory *efact = 0;
QStringList dummyList;
@@ -61,9 +61,9 @@ QList <FileInfo *> MetaDataManager::createPlayList(const QString &fileName, bool
if(!QFile::exists(fileName))
return list;
else if((fact = Decoder::findByFilePath(fileName, m_settings->determineFileTypeByContent())))
- return fact->createPlayList(fileName, useMetaData, ignoredPaths);
+ return fact->createPlayList(fileName, parts, ignoredPaths);
else if((efact = AbstractEngine::findByFilePath(fileName)))
- return efact->createPlayList(fileName, useMetaData, ignoredPaths);
+ return efact->createPlayList(fileName, parts, ignoredPaths);
return list;
}
else
@@ -71,13 +71,13 @@ QList <FileInfo *> MetaDataManager::createPlayList(const QString &fileName, bool
QString scheme = fileName.section("://",0,0);
if(InputSource::protocols().contains(scheme))
{
- list << new FileInfo(fileName);
+ list << new TrackInfo(fileName);
return list;
}
foreach(fact, Decoder::factories())
{
if(fact->properties().protocols.contains(scheme) && Decoder::isEnabled(fact))
- return fact->createPlayList(fileName, useMetaData, ignoredPaths);
+ return fact->createPlayList(fileName, parts, ignoredPaths);
}
}
return list;
diff --git a/src/qmmp/metadatamanager.h b/src/qmmp/metadatamanager.h
index a5e8cd7a1..64947c739 100644
--- a/src/qmmp/metadatamanager.h
+++ b/src/qmmp/metadatamanager.h
@@ -26,7 +26,7 @@
#include <QPixmap>
#include <QDir>
#include <QMutex>
-#include "fileinfo.h"
+#include "trackinfo.h"
#include "metadatamodel.h"
class DecoderFactory;
@@ -53,11 +53,10 @@ public:
* Extracts metadata and audio information from file \b path and returns a list of FileInfo items.
* One file may contain several playlist items (for example: cda disk or flac with embedded cue)
* @param path Source file path.
- * @param useMetaData Metadata usage (\b true - use, \b - do not use)
* @param ignoredPaths Pointer to a list of the files which should be ignored by the recursive search
* (useful to exclude cue data files from playlist)
*/
- QList <FileInfo *> createPlayList(const QString &path, bool useMetaData = true, QStringList *ignoredPaths = 0) const;
+ QList <TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts = TrackInfo::MetaData, QStringList *ignoredPaths = 0) const;
/*!
* Creats metadata object, which provides full access to file tags.
* @param url File path or URL.
diff --git a/src/qmmp/qmmp.pro b/src/qmmp/qmmp.pro
index 7881e71d3..f67045e72 100644
--- a/src/qmmp/qmmp.pro
+++ b/src/qmmp/qmmp.pro
@@ -15,7 +15,6 @@ HEADERS += \
effectfactory.h \
statehandler.h \
qmmp.h \
- fileinfo.h \
metadatamodel.h \
tagmodel.h \
abstractengine.h \
@@ -41,7 +40,8 @@ HEADERS += \
audioconverter.h \
dithering_p.h \
visualbuffer_p.h \
- qmmp_export.h
+ qmmp_export.h \
+ trackinfo.h
SOURCES += recycler.cpp \
decoder.cpp \
output.cpp \
@@ -53,7 +53,6 @@ SOURCES += recycler.cpp \
effect.cpp \
statehandler.cpp \
qmmp.cpp \
- fileinfo.cpp \
volumecontrol.cpp \
metadatamodel.cpp \
tagmodel.cpp \
@@ -75,7 +74,8 @@ SOURCES += recycler.cpp \
channelconverter.cpp \
volume.cpp \
dithering.cpp \
- visualbuffer.cpp
+ visualbuffer.cpp \
+ trackinfo.cpp
unix:TARGET = ../../lib/qmmp
win32:TARGET = ../../../bin/qmmp
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 5b9ce9104..455771648 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -596,7 +596,7 @@ void QmmpAudioEngine::sendMetaData()
QString url = m_inputs.value(m_decoder)->url();
if (QFile::exists(url)) //send metadata for local files only
{
- QList <FileInfo *> list = MetaDataManager::instance()->createPlayList(url, true);
+ QList <TrackInfo *> list = MetaDataManager::instance()->createPlayList(url, TrackInfo::MetaData);
if (!list.isEmpty())
{
StateHandler::instance()->dispatch(list[0]->metaData());
diff --git a/src/qmmp/trackinfo.cpp b/src/qmmp/trackinfo.cpp
index 1bf07d84d..91749110b 100644
--- a/src/qmmp/trackinfo.cpp
+++ b/src/qmmp/trackinfo.cpp
@@ -76,17 +76,17 @@ const QString TrackInfo::path() const
return m_path;
}
-const QString &TrackInfo::operator [](Qmmp::MetaData key) const
+const QString &TrackInfo::value(Qmmp::MetaData key) const
{
return m_metaData.find(key).value();
}
-const QString &TrackInfo::operator [](Qmmp::TrackProperty key) const
+const QString &TrackInfo::value(Qmmp::TrackProperty key) const
{
return m_properties.find(key).value();
}
-const double &TrackInfo::operator [](Qmmp::ReplayGainKey key) const
+const double &TrackInfo::value(Qmmp::ReplayGainKey key) const
{
return m_replayGainInfo.find(key).value();
}
diff --git a/src/qmmp/trackinfo.h b/src/qmmp/trackinfo.h
index 575025b20..cd8b3bac9 100644
--- a/src/qmmp/trackinfo.h
+++ b/src/qmmp/trackinfo.h
@@ -22,6 +22,7 @@
#include <QMap>
#include <QString>
+#include <QVariant>
#include "qmmp.h"
class QMMP_EXPORT TrackInfo
@@ -36,7 +37,7 @@ public:
NoParts = 0x0,
MetaData = 0x1,
Properties = 0x2,
- ReplayGain = 0x4
+ ReplayGainInfo = 0x4
};
Q_DECLARE_FLAGS(Parts, Part)
@@ -47,9 +48,9 @@ public:
qint64 duration () const;
bool isEmpty() const;
const QString path() const;
- const QString &operator [](Qmmp::MetaData key) const;
- const QString &operator [](Qmmp::TrackProperty key) const;
- const double &operator [](Qmmp::ReplayGainKey key) const;
+ const QString &value(Qmmp::MetaData key) const;
+ const QString &value(Qmmp::TrackProperty key) const;
+ 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 91d5fa23b..386fd9676 100644
--- a/src/qmmpui/detailsdialog.cpp
+++ b/src/qmmpui/detailsdialog.cpp
@@ -137,7 +137,7 @@ void DetailsDialog::updatePage()
m_ui->pathEdit->setText(m_path);
//load metadata and create metadata model
- QList <FileInfo *> flist = MetaDataManager::instance()->createPlayList(m_path, true);
+ QList <TrackInfo *> flist = MetaDataManager::instance()->createPlayList(m_path, TrackInfo::MetaData);
if(!flist.isEmpty() && QFile::exists(m_track->url()))
m_metaData = flist.at(0)->metaData();
else
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp
index 5ff69f583..c9c13da68 100644
--- a/src/qmmpui/fileloader.cpp
+++ b/src/qmmpui/fileloader.cpp
@@ -44,9 +44,9 @@ FileLoader::~FileLoader()
QList<PlayListTrack *> FileLoader::processFile(const QString &path, QStringList *ignoredPaths)
{
QList<PlayListTrack *> tracks;
- QList <FileInfo *> infoList = MetaDataManager::instance()->createPlayList(path, m_use_meta, ignoredPaths);
+ QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(path, TrackInfo::MetaData, ignoredPaths);
- foreach (FileInfo *info, infoList)
+ foreach (TrackInfo *info, infoList)
{
tracks.append(new PlayListTrack(info));
}
@@ -61,7 +61,8 @@ void FileLoader::insertPlayList(const QString &fmt, const QByteArray &contents,
while (!tracks.isEmpty() && !m_finished)
{
PlayListTrack *t = tracks.takeFirst();
- QList <FileInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(), m_use_meta);
+ QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(),
+ m_use_meta ? TrackInfo::MetaData : TrackInfo::NoParts);
if(infoList.count() != 1) //invalid or unsupported track
{
qDeleteAll(infoList);
@@ -70,8 +71,8 @@ void FileLoader::insertPlayList(const QString &fmt, const QByteArray &contents,
continue;
}
- FileInfo *info = infoList.first();
- if(!info->metaData(Qmmp::ALBUM).isEmpty() && !info->metaData(Qmmp::ARTIST).isEmpty())
+ TrackInfo *info = infoList.first();
+ if(!info->value(Qmmp::ALBUM).isEmpty() && !info->value(Qmmp::ARTIST).isEmpty())
t->updateMetaData(infoList.first());
emit newTracksToInsert(before, QList<PlayListTrack *>() << t);
@@ -89,7 +90,7 @@ void FileLoader::insertPlayList(const QString &path, PlayListItem *before)
while (!tracks.isEmpty() && !m_finished)
{
PlayListTrack *t = tracks.takeFirst();
- QList <FileInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(), m_use_meta);
+ QList <TrackInfo *> infoList = MetaDataManager::instance()->createPlayList(t->url(), m_use_meta ? TrackInfo::MetaData : TrackInfo::NoParts);
if(infoList.count() != 1) //invalid or unsupported track
{
qDeleteAll(infoList);
@@ -98,8 +99,8 @@ void FileLoader::insertPlayList(const QString &path, PlayListItem *before)
continue;
}
- FileInfo *info = infoList.first();
- if(!info->metaData(Qmmp::ALBUM).isEmpty() && !info->metaData(Qmmp::ARTIST).isEmpty())
+ TrackInfo *info = infoList.first();
+ if(!info->value(Qmmp::ALBUM).isEmpty() && !info->value(Qmmp::ARTIST).isEmpty())
t->updateMetaData(infoList.first());
emit newTracksToInsert(before, QList<PlayListTrack *>() << t);
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index 812021720..cd030dfc1 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -106,9 +106,9 @@ QString MetaDataFormatter::format(const QMap<Qmmp::MetaData, QString> &metaData,
return evalute(&m_nodes, &metaData, length, track).trimmed();
}
-QString MetaDataFormatter::format(const FileInfo *info, int track) const
+QString MetaDataFormatter::format(const TrackInfo *info, int track) const
{
- return format(info->metaData(), info->length(), track);
+ return format(info->metaData(), info->duration(), track);
}
QString MetaDataFormatter::formatLength(qint64 length, bool hideZero)
diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h
index 8bcfe72cb..9cbcf1de2 100644
--- a/src/qmmpui/metadataformatter.h
+++ b/src/qmmpui/metadataformatter.h
@@ -26,7 +26,6 @@
#include <QList>
#include <qmmpui/playlisttrack.h>
#include <qmmp/qmmp.h>
-#include <qmmp/fileinfo.h>
#include "qmmpui_export.h"
/*! @brief The MetaDataFormatter formats metadata using templates.
@@ -79,11 +78,11 @@ public:
*/
QString format(const QMap<Qmmp::MetaData, QString> &metaData, qint64 length = 0, int track = 0) const;
/*!
- * Converts metadata of \b FileInfo pointer \b info to one string using template.
- * \param info pointer to \b FileInfo object.
+ * Converts metadata of \b TrackInfo pointer \b info to one string using template.
+ * \param info pointer to \b TrackInfo object.
* \param track Index of track.
*/
- QString format(const FileInfo *info, int track = 0) const;
+ QString format(const TrackInfo *info, int track = 0) const;
/*!
* Returns formatted length (example: 05:02:03).
* \param length Length in seconds.
diff --git a/src/qmmpui/playlistitem.h b/src/qmmpui/playlistitem.h
index 92e30bfe6..3599c6269 100644
--- a/src/qmmpui/playlistitem.h
+++ b/src/qmmpui/playlistitem.h
@@ -21,7 +21,6 @@
#define PLAYLISTITEM_H
#include <QMap>
-#include <qmmp/fileinfo.h>
#include <qmmp/qmmp.h>
#include "qmmpui_export.h"
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp
index 2f24b709f..f18322b93 100644
--- a/src/qmmpui/playlistmanager.cpp
+++ b/src/qmmpui/playlistmanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009-2017 by Ilya Kotov *
+ * Copyright (C) 2009-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -24,7 +24,7 @@
#include <QDir>
#include <QTimer>
#include <QSettings>
-#include <qmmp/fileinfo.h>
+#include <qmmp/trackinfo.h>
#include "qmmpuisettings.h"
#include "playlistmanager.h"
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index 734b0de18..73f49ec1f 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -27,6 +27,7 @@
#include <QQueue>
#include <QPointer>
#include <QVector>
+#include <QUrl>
#include "playlistitem.h"
#include "playlisttrack.h"
#include "playlistgroup.h"
diff --git a/src/qmmpui/playlisttask.cpp b/src/qmmpui/playlisttask.cpp
index 8ca027ade..482478b42 100644
--- a/src/qmmpui/playlisttask.cpp
+++ b/src/qmmpui/playlisttask.cpp
@@ -448,8 +448,8 @@ void PlayListTask::run()
foreach (QFileInfo f, l)
{
QStringList ignored;
- foreach (FileInfo *info, mm->createPlayList(f.canonicalFilePath(),
- QmmpUiSettings::instance()->useMetadata(),
+ foreach (TrackInfo *info, mm->createPlayList(f.canonicalFilePath(),
+ QmmpUiSettings::instance()->useMetadata() ? TrackInfo::MetaData : TrackInfo::NoParts,
&ignored))
{
m_new_tracks << new PlayListTrack(info);
diff --git a/src/qmmpui/playlisttrack.cpp b/src/qmmpui/playlisttrack.cpp
index c9c838622..d182e9945 100644
--- a/src/qmmpui/playlisttrack.cpp
+++ b/src/qmmpui/playlisttrack.cpp
@@ -53,13 +53,13 @@ PlayListTrack::PlayListTrack(const PlayListTrack &other) : QMap<Qmmp::MetaData,
m_formattedLength = other.m_formattedLength;
}
-PlayListTrack::PlayListTrack(FileInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()),
+PlayListTrack::PlayListTrack(TrackInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()),
PlayListItem()
{
m_track_index = -1;
m_settings = QmmpUiSettings::instance();
m_helper = MetaDataHelper::instance();
- m_length = info->length();
+ m_length = info->duration();
insert(Qmmp::URL, info->path());
m_refCount = 0;
m_sheduledForDeletion = false;
@@ -91,9 +91,9 @@ void PlayListTrack::updateMetaData(const QMap <Qmmp::MetaData, QString> &metaDat
formatGroup();
}
-void PlayListTrack::updateMetaData(FileInfo *info)
+void PlayListTrack::updateMetaData(TrackInfo *info)
{
- m_length = info->length();
+ m_length = info->duration();
QMap <Qmmp::MetaData, QString>::operator =(info->metaData());
insert(Qmmp::URL, info->path());
m_formattedTitles.clear();
@@ -103,10 +103,10 @@ void PlayListTrack::updateMetaData(FileInfo *info)
void PlayListTrack::updateMetaData()
{
- QList <FileInfo *> list = MetaDataManager::instance()->createPlayList(value(Qmmp::URL));
+ QList <TrackInfo *> list = MetaDataManager::instance()->createPlayList(value(Qmmp::URL));
if(!list.isEmpty() && !list.at(0)->path().contains("://"))
{
- FileInfo *info = list.at(0);
+ TrackInfo *info = list.at(0);
updateMetaData(info);
}
qDeleteAll(list);
diff --git a/src/qmmpui/playlisttrack.h b/src/qmmpui/playlisttrack.h
index 57bbb58a1..d7dd90073 100644
--- a/src/qmmpui/playlisttrack.h
+++ b/src/qmmpui/playlisttrack.h
@@ -22,8 +22,8 @@
#include <QMap>
#include <QStringList>
-#include <qmmp/fileinfo.h>
#include <qmmp/qmmp.h>
+#include <qmmp/trackinfo.h>
#include "playlistitem.h"
#include "qmmpui_export.h"
@@ -49,7 +49,7 @@ public:
* Constructs plalist item with given metadata.
* @param info Media file information.
*/
- PlayListTrack(FileInfo *info);
+ PlayListTrack(TrackInfo *info);
/*!
* Object destructor.
*/
@@ -90,9 +90,9 @@ public:
void updateMetaData(const QMap <Qmmp::MetaData, QString> &metaData);
/*!
* Updates current metadata.
- * @param info Media file information.
+ * @param info Track information.
*/
- void updateMetaData(FileInfo *info);
+ void updateMetaData(TrackInfo *info);
/*!
* Gets new metadata from file (works for local files only).
*/