aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-05-26 21:26:46 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-05-26 21:26:46 +0000
commit0ded49767b9cb8a9b870f10bde72c434453ea43b (patch)
tree73c7f4d337acc0d0f8dd10c200b415223ef7db4d
parenta0bf7877cd6b08b686133861237f5a1e02dad2b3 (diff)
downloadqmmp-0ded49767b9cb8a9b870f10bde72c434453ea43b.tar.gz
qmmp-0ded49767b9cb8a9b870f10bde72c434453ea43b.tar.bz2
qmmp-0ded49767b9cb8a9b870f10bde72c434453ea43b.zip
added PlayListItem class, removed MediaFile
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@388 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmpui/songinfo.cpp5
-rw-r--r--src/qmmpui/songinfo.h1
-rw-r--r--src/ui/CMakeLists.txt4
-rw-r--r--src/ui/eqwidget.cpp2
-rw-r--r--src/ui/eqwidget.h2
-rw-r--r--src/ui/fileloader.cpp6
-rw-r--r--src/ui/fileloader.h6
-rw-r--r--src/ui/listwidget.cpp8
-rw-r--r--src/ui/listwidget.h2
-rw-r--r--src/ui/mainwindow.cpp27
-rw-r--r--src/ui/mainwindow.h2
-rw-r--r--src/ui/playlist.cpp4
-rw-r--r--src/ui/playlist.h6
-rw-r--r--src/ui/playlistformat.cpp14
-rw-r--r--src/ui/playlistformat.h12
-rw-r--r--src/ui/playlistitem.cpp181
-rw-r--r--src/ui/playlistitem.h70
-rw-r--r--src/ui/playlistmodel.cpp213
-rw-r--r--src/ui/playlistmodel.h46
-rw-r--r--src/ui/playlisttitlebar.cpp2
-rw-r--r--src/ui/ui.pro22
21 files changed, 437 insertions, 198 deletions
diff --git a/src/qmmpui/songinfo.cpp b/src/qmmpui/songinfo.cpp
index 178f6eee6..15d134723 100644
--- a/src/qmmpui/songinfo.cpp
+++ b/src/qmmpui/songinfo.cpp
@@ -115,6 +115,11 @@ const QString SongInfo::path () const
return m_path;
}
+const QString SongInfo::fileName () const
+{
+ return m_path.section('/',-1);
+}
+
const uint SongInfo::year () const
{
return m_numValues[YEAR];
diff --git a/src/qmmpui/songinfo.h b/src/qmmpui/songinfo.h
index 0180f35a5..af49b0b67 100644
--- a/src/qmmpui/songinfo.h
+++ b/src/qmmpui/songinfo.h
@@ -61,6 +61,7 @@ public:
const QString comment () const;
const QString genre () const;
const QString path () const;
+ const QString fileName () const;
const uint year () const;
const uint track () const;
const uint length () const;
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index 094ef2db7..9ec364004 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -60,7 +60,7 @@ SET(ui_SRCS
logscale.cpp
mainvisual.cpp
mainwindow.cpp
- mediafile.cpp
+ playlistitem.cpp
monostereo.cpp
mp3player.cpp
number.cpp
@@ -116,7 +116,7 @@ SET(ui_MOC_HDRS
logscale.h
mainvisual.h
mainwindow.h
- mediafile.h
+ playlistitem.h
monostereo.h
number.h
pixmapwidget.h
diff --git a/src/ui/eqwidget.cpp b/src/ui/eqwidget.cpp
index d86ab45d2..4375934cc 100644
--- a/src/ui/eqwidget.cpp
+++ b/src/ui/eqwidget.cpp
@@ -41,7 +41,7 @@ EqWidget::EqWidget ( QWidget *parent )
: PixmapWidget ( parent )
{
m_skin = Skin::getPointer();
- setWindowFlags ( Qt::Dialog | Qt::FramelessWindowHint );
+ setWindowFlags (Qt::Dialog | Qt::FramelessWindowHint );
setPixmap ( m_skin->getEqPart ( Skin::EQ_MAIN ) );
//setPixmap(QPixmap(275,116));
m_titleBar = new EqTitleBar ( this );
diff --git a/src/ui/eqwidget.h b/src/ui/eqwidget.h
index 03719cb52..b6bf77ebf 100644
--- a/src/ui/eqwidget.h
+++ b/src/ui/eqwidget.h
@@ -35,7 +35,7 @@ class ToggleButton;
class EQGraph;
class Button;
class EQPreset;
-class MediaFile;
+class PlayListItem;
class EqWidget : public PixmapWidget
{
diff --git a/src/ui/fileloader.cpp b/src/ui/fileloader.cpp
index fcc8f6feb..6cf71e3b2 100644
--- a/src/ui/fileloader.cpp
+++ b/src/ui/fileloader.cpp
@@ -20,7 +20,7 @@
#include <qmmp/decoder.h>
#include "fileloader.h"
-#include "mediafile.h"
+#include "playlistitem.h"
FileLoader::FileLoader(QObject *parent)
: QThread(parent),m_files_to_load(),m_directory()
@@ -44,7 +44,7 @@ void FileLoader::addFiles(const QStringList &files)
foreach(QString s, files)
{
if (s.startsWith("http://") || Decoder::supports(s))
- emit newMediaFile(new MediaFile(s));
+ emit newPlayListItem(new PlayListItem(s));
if (m_finished) return;
}
}
@@ -63,7 +63,7 @@ void FileLoader::addDirectory(const QString& s)
list << fileInfo;
if (Decoder::supports(fileInfo.absoluteFilePath ()))
- emit newMediaFile(new MediaFile(fileInfo.absoluteFilePath ()));
+ emit newPlayListItem(new PlayListItem(fileInfo.absoluteFilePath ()));
if (m_finished) return;
}
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
diff --git a/src/ui/fileloader.h b/src/ui/fileloader.h
index c23d1ed35..a67ec3567 100644
--- a/src/ui/fileloader.h
+++ b/src/ui/fileloader.h
@@ -24,12 +24,12 @@
#include <QDir>
#include <QThread>
-class MediaFile;
+class PlayListItem;
/*!
* This class represents fileloader object that
* processes file list in separate thread and emits
- * \b newMediaFile(MediaFile*) signal for every newly
+ * \b newPlayListItem(PlayListItem*) signal for every newly
* created media file.
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
@@ -57,7 +57,7 @@ public:
*/
void setDirectoryToLoad(const QString&);
signals:
- void newMediaFile(MediaFile*);
+ void newPlayListItem(PlayListItem*);
protected:
void addFiles(const QStringList &files);
void addDirectory(const QString& s);
diff --git a/src/ui/listwidget.cpp b/src/ui/listwidget.cpp
index 4087c7831..14d4d16d5 100644
--- a/src/ui/listwidget.cpp
+++ b/src/ui/listwidget.cpp
@@ -27,7 +27,7 @@
#include <QUrl>
#include <QApplication>
-#include "mediafile.h"
+#include "playlistitem.h"
#include "textscroller.h"
#include "listwidget.h"
#include "skin.h"
@@ -305,8 +305,8 @@ void ListWidget::updateList()
}
if (m_model->currentItem())
{
- TextScroller::getPointer()->setText("*** "+m_model->currentItem()->title());
- parentWidget()->parentWidget()->setWindowTitle(m_model->currentItem()->title());
+ TextScroller::getPointer()->setText("*** "+m_model->currentItem()->text());
+ parentWidget()->parentWidget()->setWindowTitle(m_model->currentItem()->text());
}
cut();
update();
@@ -476,5 +476,3 @@ void ListWidget::recenterCurrent()
m_first = qMax (m_model->currentRow() - m_rows/2 + 1, 0);
}
}
-
-
diff --git a/src/ui/listwidget.h b/src/ui/listwidget.h
index 2f20a3bf8..6b012a930 100644
--- a/src/ui/listwidget.h
+++ b/src/ui/listwidget.h
@@ -35,7 +35,7 @@ class QAction;
class PlayList;
class PlayListModel;
class Skin;
-class MediaFile;
+class PlayListItem;
class ListWidget : public QWidget
{
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
index 4de1dfd4f..ff77f6b38 100644
--- a/src/ui/mainwindow.cpp
+++ b/src/ui/mainwindow.cpp
@@ -331,24 +331,9 @@ void MainWindow::showOutputState(const OutputState &st)
m_generalHandler->setState(General::Playing);
if (m_playListModel->currentItem())
{
- SongInfo info;
- FileTag *tag = m_playListModel->currentItem()->tag();
- if (tag && !tag->isEmpty())
- {
- info.setValue(SongInfo::TITLE, tag->title());
- info.setValue(SongInfo::ARTIST, tag->artist());
- info.setValue(SongInfo::ALBUM, tag->album());
- info.setValue(SongInfo::COMMENT, tag->comment());
- info.setValue(SongInfo::GENRE, tag->genre());
- info.setValue(SongInfo::YEAR, tag->year());
- info.setValue(SongInfo::TRACK, tag->track());
- }
- else
- info.setValue(SongInfo::TITLE, m_playlist->currentItem()->title());
- info.setValue(SongInfo::LENGTH, (uint) m_playlist->currentItem()->length());
- info.setValue(SongInfo::STREAM,
- m_playlist->currentItem()->path().startsWith("http://"));
- info.setValue(SongInfo::PATH, m_playlist->currentItem()->path());
+ SongInfo info = *m_playListModel->currentItem();
+ if(info.isEmpty())
+ info.setValue(SongInfo::TITLE, m_playlist->currentItem()->text());
m_generalHandler->setSongInfo(info);
}
break;
@@ -429,7 +414,7 @@ void MainWindow::showDecoderState(const DecoderState &st)
void MainWindow::changeTitle(const QString &title)
{
if (m_playlist->currentItem())
- m_playlist->currentItem()->changeTitle(title);
+ m_playlist->currentItem()->setText(title);
m_playlist->listWidget()->updateList();
SongInfo info;
info.setValue(SongInfo::TITLE, title);
@@ -485,7 +470,7 @@ void MainWindow::addFile()
return;
// foreach(QString s, files)
- // m_playListModel->load(new MediaFile(s));
+ // m_playListModel->load(new PlayListItem(s));
m_playListModel->addFiles(files);
m_lastDir = files.at(0);
@@ -503,7 +488,7 @@ void MainWindow::addFile()
return;
/*
foreach(QString s, files)
- m_playListModel->load(new MediaFile(s));
+ m_playListModel->load(new PlayListItem(s));
*/
m_playListModel->addFiles(files);
m_lastDir = files.at(0);
diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h
index bdf437862..4835d5fdf 100644
--- a/src/ui/mainwindow.h
+++ b/src/ui/mainwindow.h
@@ -27,7 +27,7 @@
#include <qmmp/decoderfactory.h>
#include "display.h"
-#include "mediafile.h"
+#include "playlistitem.h"
#include "titlebar.h"
/**
diff --git a/src/ui/playlist.cpp b/src/ui/playlist.cpp
index a664d421b..ce1385749 100644
--- a/src/ui/playlist.cpp
+++ b/src/ui/playlist.cpp
@@ -31,7 +31,7 @@
#include "skin.h"
#include "listwidget.h"
#include "button.h"
-#include "mediafile.h"
+#include "playlistitem.h"
#include "playlistmodel.h"
#include "playlisttitlebar.h"
#include "playlistslider.h"
@@ -463,7 +463,7 @@ void PlayList::setInfo (const OutputState &st,int length_current, int length_tot
}
}
-MediaFile *PlayList::currentItem()
+PlayListItem *PlayList::currentItem()
{
if ( m_playListModel )
return m_playListModel->currentItem();
diff --git a/src/ui/playlist.h b/src/ui/playlist.h
index 4e8bdc1f8..0dd4016f4 100644
--- a/src/ui/playlist.h
+++ b/src/ui/playlist.h
@@ -32,7 +32,7 @@ class QMenu;
class Skin;
class ListWidget;
-class MediaFile;
+class PlayListItem;
class Button;
class PlayListModel;
class PlayListTitleBar;
@@ -50,11 +50,11 @@ class PlayList : public QWidget
PlayList ( QWidget *parent = 0 );
~PlayList();
- void load ( MediaFile * );
+ void load ( PlayListItem * );
void setModel ( PlayListModel * );
void readSettings();
void setInfo ( const OutputState &,int,int );
- MediaFile *currentItem();
+ PlayListItem *currentItem();
ListWidget* listWidget() const{return m_listWidget;}
signals:
diff --git a/src/ui/playlistformat.cpp b/src/ui/playlistformat.cpp
index dc80d95c8..0486d7f78 100644
--- a/src/ui/playlistformat.cpp
+++ b/src/ui/playlistformat.cpp
@@ -29,7 +29,7 @@
#include "playlistformat.h"
-#include "mediafile.h"
+#include "playlistitem.h"
bool PLSPlaylistFormat::hasFormat(const QString & f)
{
@@ -89,12 +89,12 @@ QStringList PLSPlaylistFormat::decode(const QString & contents)
return QStringList();
}
-QString PLSPlaylistFormat::encode(const QList< MediaFile * > & contents)
+QString PLSPlaylistFormat::encode(const QList< PlayListItem * > & contents)
{
QStringList out;
out << QString("[playlist]");
int counter = 1;
- foreach(MediaFile* f,contents)
+ foreach(PlayListItem* f,contents)
{
QString begin = "File" + QString::number(counter) + "=";
out.append(begin + f->path());
@@ -156,11 +156,11 @@ QStringList M3UPlaylistFormat::decode(const QString & contents)
return QStringList();
}
-QString M3UPlaylistFormat::encode(const QList< MediaFile * > & contents)
+QString M3UPlaylistFormat::encode(const QList< PlayListItem * > & contents)
{
QStringList out;
out << QString("#EXTM3U");
- foreach(MediaFile* f,contents)
+ foreach(PlayListItem* f,contents)
{
QString info = "#EXTINF:" + QString::number(f->length()) + "," + f->title();
out.append(info);
@@ -212,7 +212,7 @@ QStringList XSPFPlaylistFormat::decode(const QString & contents)
// Needs more work - it's better use libSpiff there and put it as plugin.
-QString XSPFPlaylistFormat::encode(const QList< MediaFile * > & files)
+QString XSPFPlaylistFormat::encode(const QList< PlayListItem * > & files)
{
QDomDocument doc;
QDomElement root = doc.createElement("playlist");
@@ -227,7 +227,7 @@ QString XSPFPlaylistFormat::encode(const QList< MediaFile * > & files)
QDomElement tracklist = doc.createElement("trackList");
int counter = 1;
- foreach(MediaFile* f,files)
+ foreach(PlayListItem* f,files)
{
QDomElement track = doc.createElement("track");
diff --git a/src/ui/playlistformat.h b/src/ui/playlistformat.h
index a87018d63..4e1de00f1 100644
--- a/src/ui/playlistformat.h
+++ b/src/ui/playlistformat.h
@@ -23,7 +23,7 @@
#include <QStringList>
-class MediaFile;
+class PlayListItem;
/*!
* Abstract interface for playlist formats.
*
@@ -40,10 +40,10 @@ public:
virtual QStringList decode(const QString& contents) = 0;
/*!
- * Takes the list of MediaFile objects, should return string of
+ * Takes the list of PlayListItem objects, should return string of
* encoded playlist file
*/
- virtual QString encode(const QList<MediaFile*>& contents) = 0;
+ virtual QString encode(const QList<PlayListItem*>& contents) = 0;
/*!
* Returns list of file extensions that current format supports
@@ -71,7 +71,7 @@ public:
virtual QStringList getExtensions()const;
virtual bool hasFormat(const QString&);
virtual QStringList decode(const QString& contents);
- virtual QString encode(const QList<MediaFile*>& contents);
+ virtual QString encode(const QList<PlayListItem*>& contents);
virtual QString name()const;
protected:
QStringList m_supported_formats;
@@ -90,7 +90,7 @@ class M3UPlaylistFormat : public PlaylistFormat
virtual QStringList getExtensions()const;
virtual bool hasFormat(const QString&);
virtual QStringList decode(const QString& contents);
- virtual QString encode(const QList<MediaFile*>& contents);
+ virtual QString encode(const QList<PlayListItem*>& contents);
virtual QString name()const;
protected:
QStringList m_supported_formats;
@@ -107,7 +107,7 @@ class XSPFPlaylistFormat : public PlaylistFormat
virtual QStringList getExtensions()const;
virtual bool hasFormat(const QString&);
virtual QStringList decode(const QString& contents);
- virtual QString encode(const QList<MediaFile*>& contents);
+ virtual QString encode(const QList<PlayListItem*>& contents);
virtual QString name()const;
protected:
QStringList m_supported_formats;
diff --git a/src/ui/playlistitem.cpp b/src/ui/playlistitem.cpp
new file mode 100644
index 000000000..ed92e4268
--- /dev/null
+++ b/src/ui/playlistitem.cpp
@@ -0,0 +1,181 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Ilya Kotov *
+ * forkotov02@hotmail.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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#include <QSettings>
+#include <QDir>
+
+#include <qmmp/decoder.h>
+
+#include "playlistitem.h"
+
+PlayListItem::PlayListItem() : SongInfo(), m_flag(FREE)
+{
+ m_tag = 0;
+}
+
+PlayListItem::PlayListItem(const QString& path) : SongInfo(), m_flag(FREE)
+{
+ m_selected = FALSE;
+ m_current = FALSE;
+ m_tag = 0;
+ setValue(SongInfo::PATH, path);
+ setValue(SongInfo::STREAM, path.startsWith("http://")); //TODO do this inside SongInfo
+ QSettings settings ( QDir::homePath() +"/.qmmp/qmmprc", QSettings::IniFormat );
+ m_use_meta = settings.value ("PlayList/load_metadata", TRUE).toBool();
+ //format
+ m_format = settings.value("PlayList/title_format", "%p - %t").toString();
+ if (m_use_meta && !path.startsWith("http://"))
+ {
+ m_tag = Decoder::createTag(path);
+ readMetadata();
+ }
+ else
+ m_title = path.startsWith("http://") ? path: path.section('/',-1);
+
+}
+
+PlayListItem::~PlayListItem()
+{
+}
+
+void PlayListItem::setSelected(bool yes)
+{
+ m_selected = yes;
+}
+
+bool PlayListItem::isSelected() const
+{
+ return m_selected;
+}
+
+void PlayListItem::setCurrent(bool yes)
+{
+ m_current = yes;
+}
+
+bool PlayListItem::isCurrent() const
+{
+ return m_current;
+}
+
+void PlayListItem::setFlag(FLAGS f)
+{
+ m_flag = f;
+}
+
+PlayListItem::FLAGS PlayListItem::flag() const
+{
+ return m_flag;
+}
+
+void PlayListItem::updateTags(const FileTag *tag)
+{
+ if (m_tag)
+ {
+ delete m_tag;
+ m_tag = 0;
+ }
+ if (!tag->isEmpty())
+ m_tag = new FileTag(*tag);
+ readMetadata();
+}
+
+void PlayListItem::updateTags()
+{
+ if (path().startsWith("http://"))
+ return;
+ if (m_tag)
+ {
+ delete m_tag;
+ m_tag = 0;
+ }
+ m_tag = Decoder::createTag(path());
+ readMetadata();
+}
+
+const QString PlayListItem::text() const
+{
+ return m_title;
+}
+
+void PlayListItem::setText(const QString &title)
+{
+ m_title = title;
+}
+
+void PlayListItem::readMetadata()
+{
+ //clear();
+ m_title.clear();
+ if(m_tag) //read length first
+ setValue(SongInfo::LENGTH, m_tag->length());
+ if (m_use_meta && m_tag && !m_tag->isEmpty())
+ {
+ //fill SongInfo
+ setValue(SongInfo::TITLE, m_tag->title());
+ setValue(SongInfo::ARTIST, m_tag->artist());
+ setValue(SongInfo::ALBUM, m_tag->album());
+ setValue(SongInfo::COMMENT, m_tag->comment());
+ setValue(SongInfo::GENRE, m_tag->genre());
+ setValue(SongInfo::YEAR, m_tag->year());
+ setValue(SongInfo::TRACK, m_tag->track());
+ //generate playlist string
+ m_title = m_format;
+ m_title = printTag(m_title, "%p", artist());
+ m_title = printTag(m_title, "%a", album());
+ m_title = printTag(m_title, "%t", title());
+ m_title = printTag(m_title, "%n", QString("%1").arg(track()));
+ m_title = printTag(m_title, "%g", genre());
+ m_title = printTag(m_title, "%f", path().section('/',-1));
+ m_title = printTag(m_title, "%F", path());
+ m_title = printTag(m_title, "%y", QString("%1").arg(year ()));
+ }
+ if (m_title.isEmpty())
+ m_title = path().startsWith("http://") ? path(): path().section('/',-1);
+ if(m_tag)
+ delete m_tag;
+ m_tag = 0;
+}
+
+QString PlayListItem::printTag(QString str, QString regExp, QString tagStr)
+{
+ if (!tagStr.isEmpty())
+ str.replace(regExp, tagStr);
+ else
+ {
+ //remove unused separators
+ int regExpPos = str.indexOf(regExp);
+ if (regExpPos < 0)
+ return str;
+ int nextPos = str.indexOf("%", regExpPos + 1);
+ if (nextPos < 0)
+ {
+ //last separator
+ regExpPos = m_format.lastIndexOf(regExp);
+ nextPos = m_format.lastIndexOf("%", regExpPos - 1);
+ QString lastSep = m_format.right (m_format.size() - nextPos - 2);
+ str.remove(lastSep);
+ str.remove(regExp);
+ }
+ else
+ str.remove ( regExpPos, nextPos - regExpPos);
+ }
+ return str;
+}
+
diff --git a/src/ui/playlistitem.h b/src/ui/playlistitem.h
new file mode 100644
index 000000000..621788a48
--- /dev/null
+++ b/src/ui/playlistitem.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * Copyright (C) 2008 by Ilya Kotov *
+ * forkotov02@hotmail.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., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef PLAYLISTITEM_H
+#define PLAYLISTITEM_H
+
+#include <qmmpui/songinfo.h>
+
+class FileTag;
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class PlayListItem : public SongInfo
+{
+public:
+ /*!
+ * Current state of media file.
+ * FREE - instance is free and may be deleted
+ * EDITING - instance is currently busy in some kind of operation(tags editing etc.)
+ * and can't be deleted at the moment. Set flag SCHEDULED_FOR_DELETION for it
+ * instead of delete operator call.
+ */
+ enum FLAGS{FREE = 0,EDITING,SCHEDULED_FOR_DELETION};
+ PlayListItem();
+ PlayListItem(const QString& path);
+
+ ~PlayListItem();
+
+ //playlist support
+ void setSelected(bool yes);
+ bool isSelected() const;
+ void setCurrent(bool yes);
+ bool isCurrent() const;
+ FLAGS flag()const;
+ void setFlag(FLAGS);
+ const QString text() const;
+ void setText(const QString &title);
+ //modify functions
+ void updateTags(const FileTag *tag);
+ void updateTags();
+
+private:
+ void readMetadata();
+ QString printTag(QString str, QString regExp, QString tagStr);
+ QString m_title;
+ FileTag *m_tag;
+ bool m_selected;
+ bool m_current;
+ bool m_use_meta;
+ QString m_format;
+ FLAGS m_flag;
+};
+
+#endif
diff --git a/src/ui/playlistmodel.cpp b/src/ui/playlistmodel.cpp
index 85adfe6d8..22371d283 100644
--- a/src/ui/playlistmodel.cpp
+++ b/src/ui/playlistmodel.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
+ * Copyright (C) 2006-2008 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,7 +35,7 @@
#include "fileloader.h"
#include "playlistmodel.h"
-#include "mediafile.h"
+#include "playlistitem.h"
#include "playlistformat.h"
#include "playstate.h"
@@ -43,24 +43,24 @@
#define INVALID_ROW -1
-TagUpdater::TagUpdater(QObject* o,MediaFile* f):m_observable(o),m_file(f)
+TagUpdater::TagUpdater(QObject* o,PlayListItem* item):m_observable(o),m_item(item)
{
- m_file->setFlag(MediaFile::EDITING);
+ m_item->setFlag(PlayListItem::EDITING);
connect (m_observable, SIGNAL(destroyed (QObject * )),SLOT(updateTag()));
connect (m_observable, SIGNAL(destroyed (QObject * )),SLOT(deleteLater()));
}
void TagUpdater::updateTag()
{
- if(m_file->flag() == MediaFile::SCHEDULED_FOR_DELETION)
+ if(m_item->flag() == PlayListItem::SCHEDULED_FOR_DELETION)
{
- delete m_file;
- m_file = NULL;
+ delete m_item;
+ m_item = NULL;
}
else
{
- m_file->updateTags();
- m_file->setFlag(MediaFile::FREE);
+ m_item->updateTags();
+ m_item->setFlag(PlayListItem::FREE);
}
}
@@ -101,15 +101,15 @@ PlayListModel::~PlayListModel()
}
}
-void PlayListModel::load ( MediaFile *file )
+void PlayListModel::load ( PlayListItem *item )
{
- if (m_files.isEmpty())
- m_currentItem = file;
+ if (m_items.isEmpty())
+ m_currentItem = item;
- m_total_length += file->length();
- m_files << file;
+ m_total_length += item->length();
+ m_items << item;
- if (m_files.size() == 1)
+ if (m_items.size() == 1)
emit firstAdded();
//if (!m_block_update_signals)
@@ -118,15 +118,15 @@ void PlayListModel::load ( MediaFile *file )
int PlayListModel::count()
{
- return m_files.size();
+ return m_items.size();
}
-MediaFile* PlayListModel::currentItem()
+PlayListItem* PlayListModel::currentItem()
{
- if ( m_files.isEmpty() )
+ if ( m_items.isEmpty() )
return 0;
else
- return m_files.at ( qMin(m_files.size() - 1, m_current));
+ return m_items.at ( qMin(m_items.size() - 1, m_current));
}
int PlayListModel::currentRow()
@@ -139,7 +139,7 @@ bool PlayListModel::setCurrent ( int c )
if ( c > count()-1 || c < 0)
return FALSE;
m_current = c;
- m_currentItem = m_files.at(c);
+ m_currentItem = m_items.at(c);
emit currentChanged();
emit listChanged();
return TRUE;
@@ -176,17 +176,17 @@ void PlayListModel::clear()
m_running_loaders.clear();
m_current = 0;
- while ( !m_files.isEmpty() )
+ while ( !m_items.isEmpty() )
{
- MediaFile* mf = m_files.takeFirst();
+ PlayListItem* mf = m_items.takeFirst();
- if(mf->flag() == MediaFile::FREE)
+ if(mf->flag() == PlayListItem::FREE)
{
delete mf;
}
- else if(mf->flag() == MediaFile::EDITING)
+ else if(mf->flag() == PlayListItem::EDITING)
{
- mf->setFlag(MediaFile::SCHEDULED_FOR_DELETION);
+ mf->setFlag(PlayListItem::SCHEDULED_FOR_DELETION);
}
}
@@ -197,41 +197,41 @@ void PlayListModel::clear()
void PlayListModel::clearSelection()
{
- for ( int i = 0; i<m_files.size(); ++i )
- m_files.at ( i )->setSelected ( FALSE );
+ for ( int i = 0; i<m_items.size(); ++i )
+ m_items.at ( i )->setSelected ( FALSE );
emit listChanged();
}
QList <QString> PlayListModel::getTitles ( int b,int l )
{
QList <QString> m_titles;
- for ( int i = b; ( i < b + l ) && ( i < m_files.size() ); ++i )
- m_titles << m_files.at ( i )->title();
+ for ( int i = b; ( i < b + l ) && ( i < m_items.size() ); ++i )
+ m_titles << m_items.at ( i )->text();
return m_titles;
}
QList <QString> PlayListModel::getTimes ( int b,int l )
{
QList <QString> m_times;
- for ( int i = b; ( i < b + l ) && ( i < m_files.size() ); ++i )
- m_times << QString ( "%1" ).arg ( m_files.at ( i )->length() /60 ) +":"
- +QString ( "%1" ).arg ( m_files.at ( i )->length() %60/10 ) +
- QString ( "%1" ).arg ( m_files.at ( i )->length() %60%10 );
+ for ( int i = b; ( i < b + l ) && ( i < m_items.size() ); ++i )
+ m_times << QString ( "%1" ).arg ( m_items.at ( i )->length() /60 ) +":"
+ +QString ( "%1" ).arg ( m_items.at ( i )->length() %60/10 ) +
+ QString ( "%1" ).arg ( m_items.at ( i )->length() %60%10 );
return m_times;
}
bool PlayListModel::isSelected ( int row )
{
- if (m_files.count() > row && row >= 0)
- return m_files.at ( row )->isSelected();
+ if (m_items.count() > row && row >= 0)
+ return m_items.at ( row )->isSelected();
return false;
}
void PlayListModel::setSelected ( int row, bool yes )
{
- if (m_files.count() > row && row >= 0)
- m_files.at ( row )->setSelected ( yes );
+ if (m_items.count() > row && row >= 0)
+ m_items.at ( row )->setSelected ( yes );
}
void PlayListModel::removeSelected()
@@ -250,22 +250,22 @@ void PlayListModel::removeSelection(bool inverted)
int select_after_delete = -1;
- while ( !m_files.isEmpty() && i<m_files.size() )
+ while ( !m_items.isEmpty() && i<m_items.size() )
{
- if ( m_files.at ( i )->isSelected() ^ inverted )
+ if ( m_items.at ( i )->isSelected() ^ inverted )
{
- MediaFile* f = m_files.takeAt ( i );
+ PlayListItem* f = m_items.takeAt ( i );
m_total_length -= f->length();
if (m_total_length < 0)
m_total_length = 0;
- if(f->flag() == MediaFile::FREE)
+ if(f->flag() == PlayListItem::FREE)
{
delete f;
f = NULL;
}
- else if(f->flag() == MediaFile::EDITING)
- f->setFlag(MediaFile::SCHEDULED_FOR_DELETION);
+ else if(f->flag() == PlayListItem::EDITING)
+ f->setFlag(PlayListItem::SCHEDULED_FOR_DELETION);
select_after_delete = i;
@@ -276,11 +276,11 @@ void PlayListModel::removeSelection(bool inverted)
i++;
}
- if (!m_files.isEmpty())
- m_currentItem = m_files.at(m_current);
+ if (!m_items.isEmpty())
+ m_currentItem = m_items.at(m_current);
- if (select_after_delete >= m_files.count())
- select_after_delete = m_files.count() - 1;
+ if (select_after_delete >= m_items.count())
+ select_after_delete = m_items.count() - 1;
setSelected(select_after_delete,true);
@@ -291,32 +291,32 @@ void PlayListModel::removeSelection(bool inverted)
void PlayListModel::invertSelection()
{
- for ( int i = 0; i<m_files.size(); ++i )
- m_files.at ( i )->setSelected ( !m_files.at ( i )->isSelected() );
+ for ( int i = 0; i<m_items.size(); ++i )
+ m_items.at ( i )->setSelected ( !m_items.at ( i )->isSelected() );
emit listChanged();
}
void PlayListModel::selectAll()
{
- for ( int i = 0; i<m_files.size(); ++i )
- m_files.at ( i )->setSelected ( TRUE );
+ for ( int i = 0; i<m_items.size(); ++i )
+ m_items.at ( i )->setSelected ( TRUE );
emit listChanged();
}
void PlayListModel::showDetails()
{
- for ( int i = 0; i<m_files.size(); ++i )
+ for ( int i = 0; i<m_items.size(); ++i )
{
- if ( m_files.at ( i )->isSelected() )
+ if ( m_items.at ( i )->isSelected() )
{
- DecoderFactory *fact = Decoder::findByPath ( m_files.at ( i )->path() );
+ DecoderFactory *fact = Decoder::findByPath ( m_items.at ( i )->path() );
if ( fact )
{
- QObject* o = fact->showDetails ( 0, m_files.at ( i )->path() );
+ QObject* o = fact->showDetails ( 0, m_items.at ( i )->path() );
if(o)
{
- TagUpdater *updater = new TagUpdater(o,m_files.at(i));
- m_editing_files.append(m_files.at(i));
+ TagUpdater *updater = new TagUpdater(o,m_items.at(i));
+ m_editing_items.append(m_items.at(i));
connect (updater, SIGNAL(destroyed (QObject * )),SIGNAL(listChanged()));
}
}
@@ -327,7 +327,6 @@ void PlayListModel::showDetails()
}
-
void PlayListModel::readSettings()
{
QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
@@ -338,7 +337,7 @@ void PlayListModel::readSettings()
QStringList files;
QByteArray line;
- m_files.clear();
+ m_items.clear();
while (!file.atEnd ())
{
@@ -355,7 +354,7 @@ void PlayListModel::readSettings()
for (int i = 0;i < preload;i++)
{
- load(new MediaFile(files.takeAt(0)));
+ load(new PlayListItem(files.takeAt(0)));
}
if (files.isEmpty())
@@ -377,7 +376,7 @@ void PlayListModel::writeSettings()
{
QFile file ( QDir::homePath() +"/.qmmp/playlist.txt" );
file.open ( QIODevice::WriteOnly );
- foreach ( MediaFile* m, m_files )
+ foreach ( PlayListItem* m, m_items )
file.write ( m->path().toUtf8 () +"\n" );
file.close ();
QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
@@ -389,9 +388,9 @@ void PlayListModel::addFile(const QString& path)
if (path.isEmpty ())
return;
if (path.startsWith("http://"))
- load(new MediaFile(path));
+ load(new PlayListItem(path));
else if (Decoder::supports(path))
- load(new MediaFile(path));
+ load(new PlayListItem(path));
m_play_state->prepare();
}
@@ -401,7 +400,7 @@ FileLoader * PlayListModel::createFileLoader()
FileLoader* f_loader = new FileLoader(this);
// f_loader->setStackSize(20 * 1024 * 1024);
m_running_loaders << f_loader;
- connect(f_loader,SIGNAL(newMediaFile(MediaFile*)),this,SLOT(load(MediaFile*)),Qt::QueuedConnection);
+ connect(f_loader,SIGNAL(newPlayListItem(PlayListItem*)),this,SLOT(load(PlayListItem*)),Qt::QueuedConnection);
connect(f_loader,SIGNAL(finished()),this,SLOT(preparePlayState()));
connect(f_loader,SIGNAL(finished()),f_loader,SLOT(deleteLater()));
return f_loader;
@@ -502,15 +501,15 @@ void PlayListModel::moveItems( int from, int to )
if (i + to - from < 0)
break;
else
- m_files.move(i,i + to - from);
+ m_items.move(i,i + to - from);
else
for (int i = selected_rows.count() - 1; i >= 0; i--)
- if (selected_rows[i] + to -from >= m_files.count())
+ if (selected_rows[i] + to -from >= m_items.count())
break;
else
- m_files.move(selected_rows[i],selected_rows[i] + to - from);
+ m_items.move(selected_rows[i],selected_rows[i] + to - from);
- m_current = m_files.indexOf(m_currentItem);
+ m_current = m_items.indexOf(m_currentItem);
emit listChanged();
}
@@ -535,7 +534,7 @@ int PlayListModel::topmostInSelection( int row)
int PlayListModel::bottommostInSelection( int row )
{
- if (row >= m_files.count() - 1)
+ if (row >= m_items.count() - 1)
return row;
for (int i = row + 1;i < count() ;i++)
@@ -560,9 +559,9 @@ const SimpleSelection& PlayListModel::getSelection(int row )
QList<int> PlayListModel::getSelectedRows() const
{
QList<int>selected_rows;
- for (int i = 0;i<m_files.count();i++)
+ for (int i = 0;i<m_items.count();i++)
{
- if (m_files[i]->isSelected())
+ if (m_items[i]->isSelected())
{
selected_rows.append(i);
}
@@ -570,14 +569,14 @@ QList<int> PlayListModel::getSelectedRows() const
return selected_rows;
}
-QList< MediaFile * > PlayListModel::getSelectedItems() const
+QList< PlayListItem * > PlayListModel::getSelectedItems() const
{
- QList<MediaFile*>selected_items;
- for (int i = 0;i<m_files.count();i++)
+ QList<PlayListItem*>selected_items;
+ for (int i = 0;i<m_items.count();i++)
{
- if (m_files[i]->isSelected())
+ if (m_items[i]->isSelected())
{
- selected_items.append(m_files[i]);
+ selected_items.append(m_items[i]);
}
}
return selected_items;
@@ -585,8 +584,8 @@ QList< MediaFile * > PlayListModel::getSelectedItems() const
void PlayListModel::addToQueue()
{
- QList<MediaFile*> selected_items = getSelectedItems();
- foreach(MediaFile* file,selected_items)
+ QList<PlayListItem*> selected_items = getSelectedItems();
+ foreach(PlayListItem* file,selected_items)
{/*
if (isQueued(file))
m_queued_songs.removeAt(m_queued_songs.indexOf(file));
@@ -598,7 +597,7 @@ void PlayListModel::addToQueue()
emit listChanged();
}
-void PlayListModel::setQueued(MediaFile* file)
+void PlayListModel::setQueued(PlayListItem* file)
{
if (isQueued(file))
m_queued_songs.removeAt(m_queued_songs.indexOf(file));
@@ -608,7 +607,7 @@ void PlayListModel::setQueued(MediaFile* file)
emit listChanged();
}
-bool PlayListModel::isQueued(MediaFile* f) const
+bool PlayListModel::isQueued(PlayListItem* f) const
{
return m_queued_songs.contains(f);
}
@@ -626,19 +625,19 @@ bool PlayListModel::isEmptyQueue() const
void PlayListModel::randomizeList()
{
- for (int i = 0;i < m_files.size();i++)
- m_files.swap(qrand()%m_files.size(),qrand()%m_files.size());
+ for (int i = 0;i < m_items.size();i++)
+ m_items.swap(qrand()%m_items.size(),qrand()%m_items.size());
- m_current = m_files.indexOf(m_currentItem);
+ m_current = m_items.indexOf(m_currentItem);
emit listChanged();
}
void PlayListModel::reverseList()
{
- for (int i = 0;i < m_files.size()/2;i++)
- m_files.swap(i,m_files.size() - i - 1);
+ for (int i = 0;i < m_items.size()/2;i++)
+ m_items.swap(i,m_items.size() - i - 1);
- m_current = m_files.indexOf(m_currentItem);
+ m_current = m_items.indexOf(m_currentItem);
emit listChanged();
}
@@ -646,71 +645,71 @@ void PlayListModel::reverseList()
// First we'll implement bundle of static compare procedures
// to sort items in different ways
-static bool _titleLessComparator(MediaFile* s1,MediaFile* s2)
+static bool _titleLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->title() < s2->title();
}
-static bool _titleGreaterComparator(MediaFile* s1,MediaFile* s2)
+static bool _titleGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->title() > s2->title();
}
-static bool _pathAndFilenameLessComparator(MediaFile* s1,MediaFile* s2)
+static bool _pathAndFilenameLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->path() < s2->path();
}
-static bool _pathAndFilenameGreaterComparator(MediaFile* s1,MediaFile* s2)
+static bool _pathAndFilenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->path() > s2->path();
}
-static bool _filenameLessComparator(MediaFile* s1,MediaFile* s2)
+static bool _filenameLessComparator(PlayListItem* s1,PlayListItem* s2)
{
QFileInfo i_s1(s1->path());
QFileInfo i_s2(s2->path());
return i_s1.baseName() < i_s2.baseName();
}
-static bool _filenameGreaterComparator(MediaFile* s1,MediaFile* s2)
+static bool _filenameGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
QFileInfo i_s1(s1->path());
QFileInfo i_s2(s2->path());
return i_s1.baseName() > i_s2.baseName();
}
-static bool _dateLessComparator(MediaFile* s1,MediaFile* s2)
+static bool _dateLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->year() < s2->year();
}
-static bool _dateGreaterComparator(MediaFile* s1,MediaFile* s2)
+static bool _dateGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->year() > s2->year();
}
-static bool _trackLessComparator(MediaFile* s1,MediaFile* s2)
+static bool _trackLessComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->track() < s2->track();
}
-static bool _trackGreaterComparator(MediaFile* s1,MediaFile* s2)
+static bool _trackGreaterComparator(PlayListItem* s1,PlayListItem* s2)
{
return s1->track() > s2->track();
}
// This is main sort method
-void PlayListModel::doSort(int sort_mode,QList<MediaFile*>& list_to_sort)
+void PlayListModel::doSort(int sort_mode,QList<PlayListItem*>& list_to_sort)
{
- QList<MediaFile*>::iterator begin;
- QList<MediaFile*>::iterator end;
+ QList<PlayListItem*>::iterator begin;
+ QList<PlayListItem*>::iterator end;
begin = list_to_sort.begin();
end = list_to_sort.end();
- bool (*compareLessFunc)(MediaFile*,MediaFile*) = 0;
- bool (*compareGreaterFunc)(MediaFile*,MediaFile*) = 0;
+ bool (*compareLessFunc)(PlayListItem*,PlayListItem*) = 0;
+ bool (*compareGreaterFunc)(PlayListItem*,PlayListItem*) = 0;
switch (sort_mode)
{
@@ -752,26 +751,26 @@ void PlayListModel::doSort(int sort_mode,QList<MediaFile*>& list_to_sort)
sorted_asc = false;
}
- m_current = m_files.indexOf(m_currentItem);
+ m_current = m_items.indexOf(m_currentItem);
}
void PlayListModel::sortSelection(int mode)
{
- QList<MediaFile*>selected_items = getSelectedItems();
+ QList<PlayListItem*>selected_items = getSelectedItems();
QList<int>selected_rows = getSelectedRows();
doSort(mode,selected_items);
for (int i = 0;i < selected_rows.count();i++)
- m_files.replace(selected_rows[i],selected_items[i]);
+ m_items.replace(selected_rows[i],selected_items[i]);
- m_current = m_files.indexOf(m_currentItem);
+ m_current = m_items.indexOf(m_currentItem);
emit listChanged();
}
void PlayListModel::sort(int mode)
{
- doSort(mode,m_files);
+ doSort(mode,m_items);
emit listChanged();
}
@@ -843,7 +842,7 @@ void PlayListModel::savePlaylist(const QString & f_name)
if (file.open(QIODevice::WriteOnly))
{
QTextStream ts(&file);
- ts << prs->encode(m_files);
+ ts << prs->encode(m_items);
file.close();
}
else
diff --git a/src/ui/playlistmodel.h b/src/ui/playlistmodel.h
index 8fff71e72..c8d826021 100644
--- a/src/ui/playlistmodel.h
+++ b/src/ui/playlistmodel.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
+ * Copyright (C) 2006-2008 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -34,7 +34,7 @@ class FileLoader;
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
-class MediaFile;
+class PlayListItem;
class PlayState;
class PlaylistFormat;
class PlayListModel;
@@ -71,9 +71,9 @@ class TagUpdater : public QObject
{
Q_OBJECT
QObject* m_observable;
- MediaFile* m_file;
+ PlayListItem* m_item;
public:
- TagUpdater(QObject* o,MediaFile* f);
+ TagUpdater(QObject* o, PlayListItem* item);
protected slots:
void updateTag();
};
@@ -88,14 +88,14 @@ public:
~PlayListModel();
int count();
- MediaFile* currentItem();
- int row(MediaFile* f)const
+ PlayListItem* currentItem();
+ int row(PlayListItem* item)const
{
- return m_files.indexOf(f);
+ return m_items.indexOf(item);
}
- MediaFile* item(int row)const
+ PlayListItem* item(int row)const
{
- return m_files.at(row);
+ return m_items.at(row);
}
int currentRow();
bool setCurrent (int);
@@ -113,7 +113,7 @@ public:
/*!
* Returns \b true if \b f file is in play queue, else return \b false
*/
- bool isQueued(MediaFile* f) const;
+ bool isQueued(PlayListItem* item) const;
bool isRepeatableList()const
{
@@ -133,9 +133,9 @@ public:
/*!
* Returns index of \b f file in queue.e
*/
- int queuedIndex(MediaFile* f)const
+ int queuedIndex(PlayListItem* item)const
{
- return m_queued_songs.indexOf(f);
+ return m_queued_songs.indexOf(item);
}
/*!
@@ -149,13 +149,13 @@ public:
*/
QList<int> getSelectedRows()const;
/*!
- * Returns vector of \b MediaFile pointers that are selected.
+ * Returns vector of \b PlayListItem pointers that are selected.
*/
- QList<MediaFile*> getSelectedItems()const;
+ QList<PlayListItem*> getSelectedItems()const;
- QList<MediaFile*> items()const
+ QList<PlayListItem*> items()const
{
- return m_files;
+ return m_items;
}
/*!
@@ -223,7 +223,7 @@ signals:
void firstAdded();
public slots:
- void load(MediaFile *);
+ void load(PlayListItem *);
void clear();
void clearSelection();
void removeSelected();
@@ -285,7 +285,7 @@ public slots:
/*!
* Sets \b f media file to queue.
*/
- void setQueued(MediaFile* f);
+ void setQueued(PlayListItem* f);
void preparePlayState();
@@ -294,7 +294,7 @@ private:
/*!
* This internal method performs sorting of \b list_to_sort list of items.
*/
- void doSort(int mode,QList<MediaFile*>& list_to_sort);
+ void doSort(int mode,QList<PlayListItem*>& list_to_sort);
/*!
* Returns topmost row in current selection
*/
@@ -324,9 +324,9 @@ private:
private:
- QList <MediaFile*> m_files;
- QList <MediaFile*> m_editing_files;
- MediaFile* m_currentItem;
+ QList <PlayListItem*> m_items;
+ QList <PlayListItem*> m_editing_items;
+ PlayListItem* m_currentItem;
int m_current;
void readSettings();
@@ -347,7 +347,7 @@ private:
/*!
* Songs in play queue.
*/
- QList<MediaFile*>m_queued_songs;
+ QList<PlayListItem*>m_queued_songs;
QMap<QString,PlaylistFormat* > m_registered_pl_formats;
diff --git a/src/ui/playlisttitlebar.cpp b/src/ui/playlisttitlebar.cpp
index c7697331f..79e3a74d7 100644
--- a/src/ui/playlisttitlebar.cpp
+++ b/src/ui/playlisttitlebar.cpp
@@ -254,7 +254,7 @@ void PlayListTitleBar::showCurrent()
{
if (m_model)
{
- MediaFile* info = m_model->currentItem();
+ PlayListItem* info = m_model->currentItem();
if (info)
{
m_text = QString("%1. ").arg(m_model->currentRow()+1);
diff --git a/src/ui/ui.pro b/src/ui/ui.pro
index e9c1db1fa..51d23ede9 100644
--- a/src/ui/ui.pro
+++ b/src/ui/ui.pro
@@ -20,7 +20,6 @@ HEADERS += mainwindow.h \
positionbar.h \
number.h \
playlist.h \
- mediafile.h \
listwidget.h \
playlistmodel.h \
pixmapwidget.h \
@@ -63,7 +62,8 @@ HEADERS += mainwindow.h \
visualmenu.h \
titlebarcontrol.h \
shadedvisual.h \
- shadedbar.h
+ shadedbar.h \
+ playlistitem.h
SOURCES += mainwindow.cpp \
mp3player.cpp \
@@ -75,7 +75,6 @@ SOURCES += mainwindow.cpp \
positionbar.cpp \
number.cpp \
playlist.cpp \
- mediafile.cpp \
listwidget.cpp \
playlistmodel.cpp \
pixmapwidget.cpp \
@@ -116,12 +115,13 @@ SOURCES += mainwindow.cpp \
visualmenu.cpp \
titlebarcontrol.cpp \
shadedvisual.cpp \
- shadedbar.cpp
+ shadedbar.cpp \
+ playlistitem.cpp
#Some conf to redirect intermediate stuff in separate dirs
-UI_DIR=./.build/ui/
-MOC_DIR=./.build/moc/
-OBJECTS_DIR=./.build/obj
+UI_DIR =./.build/ui/
+MOC_DIR =./.build/moc/
+OBJECTS_DIR =./.build/obj
QT += network xml
@@ -138,10 +138,10 @@ TEMPLATE = app
target.path = /bin
DEFINES += QMMP_VERSION=$$QMMP_VERSION
-contains(CONFIG, SVN_VERSION) {
-DEFINES += QMMP_STR_VERSION=\\\"$$QMMP_VERSION-svn\\\"
-} else {
-DEFINES += QMMP_STR_VERSION=\\\"$$QMMP_VERSION\\\"
+contains(CONFIG, SVN_VERSION){
+ DEFINES += QMMP_STR_VERSION=\\\"$$QMMP_VERSION-svn\\\"
+}else {
+ DEFINES += QMMP_STR_VERSION=\\\"$$QMMP_VERSION\\\"
}
desktop.files = qmmp.desktop