aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/CMakeLists.txt3
-rw-r--r--src/qmmpui/detailsdialog.cpp6
-rw-r--r--src/qmmpui/detailsdialog.h6
-rw-r--r--src/qmmpui/metadataformatter.cpp4
-rw-r--r--src/qmmpui/metadataformatter.h4
-rw-r--r--src/qmmpui/playlistformat.h4
-rw-r--r--src/qmmpui/playlistitem.cpp46
-rw-r--r--src/qmmpui/playlistitem.h17
-rw-r--r--src/qmmpui/playlistmanager.cpp38
-rw-r--r--src/qmmpui/playlistmodel.cpp22
-rw-r--r--src/qmmpui/qmmpui.pro5
11 files changed, 89 insertions, 66 deletions
diff --git a/src/qmmpui/CMakeLists.txt b/src/qmmpui/CMakeLists.txt
index 78c9ac771..3f0fdcce6 100644
--- a/src/qmmpui/CMakeLists.txt
+++ b/src/qmmpui/CMakeLists.txt
@@ -54,7 +54,6 @@ SET(libqmmpui_MOC_HDRS
filedialog.h
filedialogfactory.h
qtfiledialog.h
- abstractplaylistitem.h
fileloader.h
playstate.h
playlistmodel.h
@@ -69,7 +68,6 @@ SET(libqmmpui_MOC_HDRS
)
SET(libqmmpui_DEVEL_HDRS
- abstractplaylistitem.h
generalfactory.h
general.h
generalhandler.h
@@ -79,7 +77,6 @@ SET(libqmmpui_DEVEL_HDRS
commandlineoption.h
filedialog.h
filedialogfactory.h
- abstractplaylistitem.h
playlistitem.h
playlistmodel.h
mediaplayer.h
diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp
index e11b6be65..5bb6b2be5 100644
--- a/src/qmmpui/detailsdialog.cpp
+++ b/src/qmmpui/detailsdialog.cpp
@@ -26,11 +26,11 @@
#include <qmmp/metadatamodel.h>
#include <qmmp/tagmodel.h>
#include "ui_detailsdialog.h"
-#include "abstractplaylistitem.h"
+#include "playlistitem.h"
#include "tageditor.h"
#include "detailsdialog.h"
-DetailsDialog::DetailsDialog(AbstractPlaylistItem *item, QWidget *parent)
+DetailsDialog::DetailsDialog(PlayListItem *item, QWidget *parent)
: QDialog(parent)
{
m_ui = new Ui::DetailsDialog;
@@ -74,7 +74,7 @@ void DetailsDialog::printInfo()
if(!flist.isEmpty() && QFile::exists(m_item->url()))
metaData = flist.at(0)->metaData();
else
- metaData = m_item->metaData();
+ metaData = *m_item;
QString formattedText;
formattedText.append("<TABLE>");
//tags
diff --git a/src/qmmpui/detailsdialog.h b/src/qmmpui/detailsdialog.h
index 66e8cb69a..3574ab408 100644
--- a/src/qmmpui/detailsdialog.h
+++ b/src/qmmpui/detailsdialog.h
@@ -27,7 +27,7 @@
class QTextCodec;
class QAbstractButton;
-class AbstractPlaylistItem;
+class PlayListItem;
class MetaDataModel;
namespace Ui {
@@ -46,7 +46,7 @@ public:
* @param item Playlist item which should be used.
* @param parent Parent widget.
*/
- DetailsDialog(AbstractPlaylistItem *item, QWidget *parent = 0);
+ DetailsDialog(PlayListItem *item, QWidget *parent = 0);
/*!
* Destructor.
*/
@@ -61,7 +61,7 @@ private:
QString m_path;
QString formatRow(const QString key, const QString value);
MetaDataModel *m_metaDataModel;
- AbstractPlaylistItem *m_item;
+ PlayListItem *m_item;
};
#endif
diff --git a/src/qmmpui/metadataformatter.cpp b/src/qmmpui/metadataformatter.cpp
index ffdba769c..a683cf897 100644
--- a/src/qmmpui/metadataformatter.cpp
+++ b/src/qmmpui/metadataformatter.cpp
@@ -47,9 +47,9 @@ MetaDataFormatter::MetaDataFormatter(const QString &format)
m_format = format;
}
-QString MetaDataFormatter::parse(AbstractPlaylistItem *item)
+QString MetaDataFormatter::parse(PlayListItem *item)
{
- return parse(item->metaData(), item->length());
+ return parse(*item, item->length());
}
QString MetaDataFormatter::parse(const QMap<Qmmp::MetaData, QString> metaData, qint64 length)
diff --git a/src/qmmpui/metadataformatter.h b/src/qmmpui/metadataformatter.h
index c0588ef7c..1a8c26aed 100644
--- a/src/qmmpui/metadataformatter.h
+++ b/src/qmmpui/metadataformatter.h
@@ -23,7 +23,7 @@
#include <QString>
#include <QMap>
-#include <qmmpui/abstractplaylistitem.h>
+#include <qmmpui/playlistitem.h>
#include <qmmp/qmmp.h>
/*! @brief The MetaDataFormatter formats metadata using templates.
@@ -55,7 +55,7 @@ public:
/*!
* Converts metadata of item \b item to one string using template.
*/
- QString parse(AbstractPlaylistItem *item);
+ QString parse(PlayListItem *item);
/*!
* Converts metadata to one string using template.
* @param metaData Metadata array.
diff --git a/src/qmmpui/playlistformat.h b/src/qmmpui/playlistformat.h
index 7e5b8c537..520711162 100644
--- a/src/qmmpui/playlistformat.h
+++ b/src/qmmpui/playlistformat.h
@@ -22,7 +22,7 @@
#define _PALYLISTFORMAT_H
#include <QStringList>
-class AbstractPlaylistItem;
+class PlayListItem;
/*! @brief Abstract interface for playlist formats.
* @author Vladimir Kuznetsov <vovanec@gmail.com>
@@ -46,7 +46,7 @@ public:
* Takes the list of AbstractPlaylistItem objects, should return string of
* encoded playlist file
*/
- virtual QString encode(const QList<AbstractPlaylistItem*>& contents) = 0;
+ virtual QString encode(const QList<PlayListItem*>& contents) = 0;
/*!
* Returns list of file extensions that current format supports
*/
diff --git a/src/qmmpui/playlistitem.cpp b/src/qmmpui/playlistitem.cpp
index 4ff602948..bdfec7bb0 100644
--- a/src/qmmpui/playlistitem.cpp
+++ b/src/qmmpui/playlistitem.cpp
@@ -19,20 +19,21 @@
***************************************************************************/
#include <QSettings>
#include <QDir>
-
#include <qmmp/metadatamanager.h>
#include "metadataformatter.h"
#include "playlistsettings.h"
#include "playlistitem.h"
-PlayListItem::PlayListItem() : AbstractPlaylistItem(), m_flag(FREE)
+PlayListItem::PlayListItem() : QMap<Qmmp::MetaData, QString>(), m_flag(FREE)
{
m_info = 0;
+ m_length = 0;
m_selected = false;
m_current = false;
}
-PlayListItem::PlayListItem(const PlayListItem &other) : AbstractPlaylistItem(other), m_flag(other.m_flag)
+PlayListItem::PlayListItem(const PlayListItem &other) : QMap<Qmmp::MetaData, QString>(other),
+ m_flag(other.m_flag)
{
m_title = other.m_title;
if (other.m_info)
@@ -41,17 +42,16 @@ PlayListItem::PlayListItem(const PlayListItem &other) : AbstractPlaylistItem(oth
}
m_selected = other.m_selected;
m_current = other.m_current;
+ m_length = other.m_length;
}
-PlayListItem::PlayListItem(FileInfo *info) : AbstractPlaylistItem(), m_flag(FREE)
+PlayListItem::PlayListItem(FileInfo *info) : QMap<Qmmp::MetaData, QString>(info->metaData()), m_flag(FREE)
{
+ m_length = info->length();
m_selected = false;
m_current = false;
m_info = info;
-
- setMetaData(info->metaData());
- setMetaData(Qmmp::URL, m_info->path());
- setLength(m_info->length());
+ insert(Qmmp::URL, m_info->path());
}
PlayListItem::~PlayListItem()
@@ -92,7 +92,7 @@ PlayListItem::FLAGS PlayListItem::flag() const
void PlayListItem::updateMetaData(const QMap <Qmmp::MetaData, QString> &metaData)
{
- setMetaData(metaData);
+ QMap <Qmmp::MetaData, QString>::operator =(metaData);
readMetadata();
}
@@ -103,12 +103,13 @@ void PlayListItem::updateTags()
delete m_info;
m_info = 0;
}
- QList <FileInfo *> list = MetaDataManager::instance()->createPlayList(url());
+ QList <FileInfo *> list = MetaDataManager::instance()->createPlayList(value(Qmmp::URL));
if(!list.isEmpty() && !list.at(0)->path().contains("://"))
{
m_info = list.at(0);
- setMetaData(m_info->metaData());
- setMetaData(Qmmp::URL, m_info->path());
+ m_length = m_info->length();
+ QMap <Qmmp::MetaData, QString>::operator =(m_info->metaData());
+ insert(Qmmp::URL, m_info->path());
readMetadata();
}
while(list.size() > 1)
@@ -127,15 +128,30 @@ void PlayListItem::setText(const QString &title)
m_title = title;
}
+qint64 PlayListItem::length() const
+{
+ return m_length;
+}
+
+void PlayListItem::setLength(qint64 length)
+{
+ m_length = length;
+}
+
+const QString PlayListItem::url() const
+{
+ return value(Qmmp::URL);
+}
+
void PlayListItem::readMetadata()
{
MetaDataFormatter f(PlaylistSettings::instance()->format());
- m_title = f.parse(metaData());
+ m_title = f.parse(this);
//TODO rewrite this
if (m_title.isEmpty())
{
- if (url().contains('/'))
- m_title = url().split('/',QString::SkipEmptyParts).takeLast ();
+ if (value(Qmmp::URL).contains('/'))
+ m_title = value(Qmmp::URL).split('/',QString::SkipEmptyParts).takeLast ();
}
if (m_info)
delete m_info;
diff --git a/src/qmmpui/playlistitem.h b/src/qmmpui/playlistitem.h
index 9ad51ee67..f2ba69ffa 100644
--- a/src/qmmpui/playlistitem.h
+++ b/src/qmmpui/playlistitem.h
@@ -20,8 +20,8 @@
#ifndef PLAYLISTITEM_H
#define PLAYLISTITEM_H
+#include <QMap>
#include <qmmp/qmmp.h>
-#include <qmmpui/abstractplaylistitem.h>
class FileInfo;
class QSettings;
@@ -29,7 +29,7 @@ class QSettings;
/** @brief The PlayListItem class provides an item for use with the PlayListModel class.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
-class PlayListItem : public AbstractPlaylistItem
+class PlayListItem : public QMap <Qmmp::MetaData, QString>
{
public:
/*!
@@ -97,6 +97,18 @@ public:
*/
void setText(const QString &title);
/*!
+ * 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.
*/
@@ -113,6 +125,7 @@ private:
bool m_selected;
bool m_current;
FLAGS m_flag;
+ qint64 m_length;
};
#endif
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp
index 69d53ae12..ba92777c5 100644
--- a/src/qmmpui/playlistmanager.cpp
+++ b/src/qmmpui/playlistmanager.cpp
@@ -315,28 +315,28 @@ void PlayListManager::readPlayLists()
else if (param == "file")
{
items << new PlayListItem();
- items.last()->setMetaData(Qmmp::URL, value);
+ items.last()->insert(Qmmp::URL, value);
}
else if (items.isEmpty())
continue;
else if (param == "title")
- items.last()->setMetaData(Qmmp::TITLE, value);
+ items.last()->insert(Qmmp::TITLE, value);
else if (param == "artist")
- items.last()->setMetaData(Qmmp::ARTIST, value);
+ items.last()->insert(Qmmp::ARTIST, value);
else if (param == "album")
- items.last()->setMetaData(Qmmp::ALBUM, value);
+ items.last()->insert(Qmmp::ALBUM, value);
else if (param == "comment")
- items.last()->setMetaData(Qmmp::COMMENT, value);
+ items.last()->insert(Qmmp::COMMENT, value);
else if (param == "genre")
- items.last()->setMetaData(Qmmp::GENRE, value);
+ items.last()->insert(Qmmp::GENRE, value);
else if (param == "composer")
- items.last()->setMetaData(Qmmp::COMPOSER, value);
+ items.last()->insert(Qmmp::COMPOSER, value);
else if (param == "year")
- items.last()->setMetaData(Qmmp::YEAR, value);
+ items.last()->insert(Qmmp::YEAR, value);
else if (param == "track")
- items.last()->setMetaData(Qmmp::TRACK, value);
+ items.last()->insert(Qmmp::TRACK, value);
else if (param == "disc")
- items.last()->setMetaData(Qmmp::DISCNUMBER, value);
+ items.last()->insert(Qmmp::DISCNUMBER, value);
else if (param == "length")
items.last()->setLength(value.toInt());
}
@@ -369,15 +369,15 @@ void PlayListManager::writePlayLists()
foreach(PlayListItem* m, items)
{
file.write(QString("file=%1\n").arg(m->url()).toUtf8());
- file.write(QString("title=%1\n").arg(m->title()).toUtf8());
- file.write(QString("artist=%1\n").arg(m->artist()).toUtf8());
- file.write(QString("album=%1\n").arg(m->album()).toUtf8());
- file.write(QString("comment=%1\n").arg(m->comment()).toUtf8());
- file.write(QString("genre=%1\n").arg(m->genre()).toUtf8());
- file.write(QString("composer=%1\n").arg(m->composer()).toUtf8());
- file.write(QString("year=%1\n").arg(m->year()).toUtf8());
- file.write(QString("track=%1\n").arg(m->track()).toUtf8());
- file.write(QString("disc=%1\n").arg(m->discNumber()).toUtf8());
+ file.write(QString("title=%1\n").arg(m->value(Qmmp::TITLE)).toUtf8());
+ file.write(QString("artist=%1\n").arg(m->value(Qmmp::ARTIST)).toUtf8());
+ file.write(QString("album=%1\n").arg(m->value(Qmmp::ALBUM)).toUtf8());
+ file.write(QString("comment=%1\n").arg(m->value(Qmmp::COMMENT)).toUtf8());
+ file.write(QString("genre=%1\n").arg(m->value(Qmmp::GENRE)).toUtf8());
+ file.write(QString("composer=%1\n").arg(m->value(Qmmp::COMPOSER)).toUtf8());
+ file.write(QString("year=%1\n").arg(m->value(Qmmp::YEAR)).toUtf8());
+ file.write(QString("track=%1\n").arg(m->value(Qmmp::TRACK)).toUtf8());
+ file.write(QString("disc=%1\n").arg(m->value(Qmmp::DISCNUMBER)).toUtf8());
file.write(QString("length=%1\n").arg(m->length()).toUtf8());
}
}
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 7cfe7fb09..189bcf984 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -670,32 +670,32 @@ void PlayListModel::reverseList()
//by title
static bool _titleLessComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->title(), s2->title()) < 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::TITLE), s2->value(Qmmp::TITLE)) < 0;
}
static bool _titleGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->title(), s2->title()) > 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::TITLE), s2->value(Qmmp::TITLE)) > 0;
}
//by album
static bool _albumLessComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->album(), s2->album()) < 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::ALBUM), s2->value(Qmmp::ALBUM)) < 0;
}
static bool _albumGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->album(), s2->album()) > 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::ALBUM), s2->value(Qmmp::ALBUM)) > 0;
}
//by artist
static bool _artistLessComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->artist(), s2->artist()) < 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::ALBUM), s2->value(Qmmp::ALBUM)) < 0;
}
static bool _artistGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
- return QString::localeAwareCompare (s1->artist(), s2->artist()) > 0;
+ return QString::localeAwareCompare (s1->value(Qmmp::ARTIST), s2->value(Qmmp::ARTIST)) > 0;
}
//by path
static bool _pathAndFilenameLessComparator(PlayListItem* s1,PlayListItem* s2)
@@ -724,22 +724,22 @@ static bool _filenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
//by date
static bool _dateLessComparator(PlayListItem* s1,PlayListItem* s2)
{
- return s1->year().toInt() < s2->year().toInt();
+ return s1->value(Qmmp::YEAR).toInt() < s2->value(Qmmp::YEAR).toInt();
}
static bool _dateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
- return s1->year().toInt() > s2->year().toInt();
+ return s1->value(Qmmp::YEAR).toInt() > s2->value(Qmmp::YEAR).toInt();
}
//by track
static bool _trackLessComparator(PlayListItem* s1,PlayListItem* s2)
{
- return s1->track().toInt() < s2->track().toInt();
+ return s1->value(Qmmp::TRACK).toInt() < s2->value(Qmmp::TRACK).toInt();
}
static bool _trackGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
- return s1->track().toInt() > s2->track().toInt();
+ return s1->value(Qmmp::TRACK).toInt() > s2->value(Qmmp::TRACK).toInt();
}
// This is main sort method
@@ -883,7 +883,7 @@ void PlayListModel::savePlaylist(const QString & f_name)
if (file.open(QIODevice::WriteOnly))
{
QTextStream ts(&file);
- QList <AbstractPlaylistItem *> songs;
+ QList <PlayListItem *> songs;
foreach(PlayListItem* item, m_items)
songs << item;
ts << prs->encode(songs);
diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro
index 367616ecd..14facd71a 100644
--- a/src/qmmpui/qmmpui.pro
+++ b/src/qmmpui/qmmpui.pro
@@ -28,7 +28,6 @@ HEADERS += general.h \
filedialog.h \
filedialogfactory.h \
qtfiledialog.h \
- abstractplaylistitem.h \
playlistitem.h \
playlistmodel.h \
playstate.h \
@@ -46,7 +45,6 @@ SOURCES += general.cpp \
commandlinemanager.cpp \
filedialog.cpp \
qtfiledialog.cpp \
- abstractplaylistitem.cpp \
playlistmodel.cpp \
playstate.cpp \
playlistitem.cpp \
@@ -78,7 +76,7 @@ TRANSLATIONS = translations/libqmmpui_ru.ts \
translations/libqmmpui_ja.ts \
translations/libqmmpui_es.ts
unix {
- devel.files += abstractplaylistitem.h \
+ devel.files += \
generalfactory.h \
generalhandler.h \
playlistformat.h \
@@ -87,7 +85,6 @@ unix {
commandlineoption.h \
filedialog.h \
filedialogfactory.h \
- abstractplaylistitem.h \
playlistitem.h \
playlistmodel.h \
mediaplayer.h \