2010-11-26 16:16:48 +01:00
|
|
|
#ifndef JAMENDODYNAMICPLAYLIST_H
|
|
|
|
#define JAMENDODYNAMICPLAYLIST_H
|
|
|
|
|
|
|
|
#include "smartplaylists/generator.h"
|
|
|
|
|
|
|
|
class JamendoDynamicPlaylist : public smart_playlists::Generator {
|
|
|
|
Q_OBJECT
|
2010-11-27 17:14:09 +01:00
|
|
|
friend QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p);
|
|
|
|
friend QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p);
|
|
|
|
|
|
|
|
public:
|
2010-11-26 16:16:48 +01:00
|
|
|
JamendoDynamicPlaylist();
|
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
// These values are persisted - only add to the end
|
|
|
|
enum OrderBy {
|
|
|
|
OrderBy_Rating = 0,
|
|
|
|
OrderBy_RatingWeek = 1,
|
|
|
|
OrderBy_RatingMonth = 2,
|
|
|
|
OrderBy_Listened = 3,
|
|
|
|
};
|
|
|
|
|
|
|
|
// These values are persisted - only add to the end
|
|
|
|
enum OrderDirection {
|
|
|
|
Order_Ascending = 0,
|
|
|
|
Order_Descending = 1,
|
|
|
|
};
|
|
|
|
|
|
|
|
QString type() const { return "Jamendo"; }
|
2010-11-26 16:16:48 +01:00
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
void Load(const QByteArray& data);
|
|
|
|
void Load(OrderBy order_by, OrderDirection order_direction = Order_Descending);
|
|
|
|
QByteArray Save() const;
|
2010-11-26 16:16:48 +01:00
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
PlaylistItemList Generate();
|
2010-11-26 16:16:48 +01:00
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
bool is_dynamic() const { return true; }
|
|
|
|
PlaylistItemList GenerateMore(int count);
|
|
|
|
|
|
|
|
private:
|
2010-11-26 16:16:48 +01:00
|
|
|
void Fetch();
|
2010-11-27 17:14:09 +01:00
|
|
|
static QString OrderSpec(OrderBy by, OrderDirection dir);
|
|
|
|
|
|
|
|
private:
|
|
|
|
OrderBy order_by_;
|
|
|
|
OrderDirection order_direction_;
|
2010-11-26 16:16:48 +01:00
|
|
|
|
|
|
|
int current_page_;
|
|
|
|
PlaylistItemList current_items_;
|
|
|
|
int current_index_;
|
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
static const int kPageSize = 100;
|
|
|
|
static const char* kUrl;
|
2010-11-26 16:16:48 +01:00
|
|
|
};
|
|
|
|
|
2010-11-27 17:14:09 +01:00
|
|
|
QDataStream& operator <<(QDataStream& s, const JamendoDynamicPlaylist& p);
|
|
|
|
QDataStream& operator >>(QDataStream& s, JamendoDynamicPlaylist& p);
|
|
|
|
|
2010-11-26 16:16:48 +01:00
|
|
|
#endif
|