You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.1 KiB
103 lines
2.1 KiB
#ifndef NOATUNPLAYLISTSAVER_H
|
|
#define NOATUNPLAYLISTSAVER_H
|
|
|
|
#include <kurl.h>
|
|
#include <tqmap.h>
|
|
#include <noatun/playlist.h>
|
|
|
|
class Structure;
|
|
|
|
/**
|
|
* a simple one-group implementatio of
|
|
* the standard XML playlist format:
|
|
*
|
|
* http://noatun.kde.org/formats/xmlplaylist.phtml
|
|
*
|
|
* A custom implementation like yours should have a
|
|
* different "client" attribute for the playlist tag
|
|
**/
|
|
class PlaylistSaver
|
|
{
|
|
friend class NoatunXMLStructure;
|
|
friend class MSASXStructure;
|
|
public:
|
|
enum Options
|
|
{
|
|
XMLPlaylist=1,
|
|
M3U=2,
|
|
PLS=4,
|
|
EXTM3U=8,
|
|
ASX=16
|
|
};
|
|
|
|
PlaylistSaver();
|
|
virtual ~PlaylistSaver();
|
|
|
|
bool save(const KURL &file, int options=0);
|
|
bool load(const KURL &file, int options=0);
|
|
|
|
/**
|
|
* guess the list's content between M3U or
|
|
* PLS, and give it to you
|
|
*
|
|
* this is also the way to make icecast work.
|
|
* you can also pass true icecast urls
|
|
* here and it'l do its magic.
|
|
*
|
|
* This calls readItem
|
|
**/
|
|
bool metalist(const KURL &url);
|
|
|
|
/**
|
|
* unused, for future expansion, do not use
|
|
* @internal
|
|
**/
|
|
virtual void setGroup(const TQString &);
|
|
|
|
protected:
|
|
/**
|
|
* read the item, and add it to your list
|
|
* Given is a list of properties which coincide
|
|
* with the standard noatun ones
|
|
**/
|
|
virtual void readItem(const TQMap<TQString,TQString> &properties) = 0;
|
|
|
|
/**
|
|
* add this item to the XML file
|
|
* or a null item if we're at the end
|
|
**/
|
|
virtual PlaylistItem writeItem() = 0;
|
|
|
|
/**
|
|
* unused, for future expansion
|
|
* @internal
|
|
**/
|
|
virtual void changeGroup(const TQString &) {}
|
|
|
|
/**
|
|
* this is called when you should either
|
|
* clear your list, or start writing from the start of the list
|
|
*
|
|
* You usually don't need to implement this, since it'l always
|
|
* be called immediately after load() or save()
|
|
**/
|
|
virtual void reset() {}
|
|
|
|
private:
|
|
bool loadXML(const KURL &file, int x=0);
|
|
bool saveXML(const KURL &file, int x=0);
|
|
|
|
bool loadM3U(const KURL &file, int x=0);
|
|
bool saveM3U(const KURL &file, int x=0);
|
|
|
|
bool loadPLS(const KURL &file, int x=0);
|
|
bool savePLS(const KURL &file, int x=0);
|
|
|
|
private:
|
|
class Private;
|
|
PlaylistSaver::Private *d; // unused
|
|
|
|
};
|
|
|
|
#endif
|