1/*
2 * Copyright 2016, Dario Casalinuovo
3 * All rights reserved. Distributed under the terms of the MIT license.
4 */
5#ifndef URL_PLAYLIST_ITEM_H
6#define URL_PLAYLIST_ITEM_H
7
8#include "PlaylistItem.h"
9
10#include <Url.h>
11
12
13class UrlPlaylistItem : public PlaylistItem {
14public:
15								UrlPlaylistItem(BUrl url);
16								UrlPlaylistItem(const UrlPlaylistItem& item);
17								UrlPlaylistItem(const BMessage* archive);
18	virtual						~UrlPlaylistItem();
19
20	virtual	PlaylistItem*		Clone() const;
21
22	static	BArchivable*		Instantiate(BMessage* archive);
23	virtual	status_t			Archive(BMessage* into,
24									bool deep = true) const;
25
26	virtual	status_t			SetAttribute(const Attribute& attribute,
27									const BString& string);
28	virtual	status_t			GetAttribute(const Attribute& attribute,
29									BString& string) const;
30
31	virtual	status_t			SetAttribute(const Attribute& attribute,
32									const int32& value);
33	virtual	status_t			GetAttribute(const Attribute& attribute,
34									int32& value) const;
35
36	virtual	status_t			SetAttribute(const Attribute& attribute,
37									const int64& value);
38	virtual	status_t			GetAttribute(const Attribute& attribute,
39									int64& value) const;
40
41	virtual	status_t			SetAttribute(const Attribute& attribute,
42									const float& value);
43	virtual	status_t			GetAttribute(const Attribute& attribute,
44									float& value) const;
45
46	virtual	BString				LocationURI() const;
47	virtual	status_t			GetIcon(BBitmap* bitmap,
48									icon_size iconSize) const;
49
50	virtual	status_t			MoveIntoTrash();
51	virtual	status_t			RestoreFromTrash();
52
53			BUrl				Url() const;
54
55protected:
56	virtual	bigtime_t			_CalculateDuration();
57
58	virtual	TrackSupplier*		_CreateTrackSupplier() const;
59
60private:
61			BUrl				fUrl;
62			bigtime_t			fDuration;
63};
64
65#endif
66