defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 #include <deque> 00012 00013 namespace Queue { 00014 class Queueable; 00015 00016 typedef std::deque<Queueable*> QueueableDeque; 00017 } 00018 00019 #ifndef QUEUEABLE_HPP 00020 #define QUEUEABLE_HPP 00021 00022 #include <QObject> 00023 #include <QLabel> 00024 #include <QVariantMap> 00025 #include <QDateTime> 00026 #include "container.hpp" 00027 #include "controlswidget.hpp" 00028 #include "eventmodel.hpp" 00029 00030 namespace Queue 00031 { 00032 class QueueBreak; 00033 class QueueTrack; 00034 00042 class Queueable : public QObject 00043 { 00044 friend class PlayQueue; 00045 Q_OBJECT 00046 public: 00047 Queueable(QObject *parent = 0); 00048 virtual ~Queueable(); 00049 void setContainer(Container* c); 00050 bool hasContainer() const; 00051 Container* getContainer() const; 00052 int getPosition() const; 00053 const QVariantMap& getQueueAttributes() const; 00054 virtual QVariantMap getContent(bool forWeb = false) const; 00055 QVariantMap getNetData() const; 00056 void saveQueueAttributes() const; 00057 virtual bool queueIsFinite() const; 00058 virtual int queueDuration(QDateTime from = QDateTime()) const; 00059 virtual QString queueType() const = 0; 00060 virtual int queueId() const; 00061 virtual QString name() const; 00062 virtual void setPlayTime(const QDateTime& time); 00063 virtual Queueable* clone() const = 0; 00064 const QDateTime& getPlayTime() const; 00065 QString textDuration() const; 00066 void showControls(); 00067 void hideControls(); 00068 void setEvent(int id); 00069 int getEvent() const; 00070 00071 // Shortcut downcasting methods 00072 bool isTrack() const; 00073 bool isBreak() const; 00074 QueueTrack* toQueueTrack(); 00075 QueueBreak* toQueueBreak(); 00076 00077 signals: 00078 void remove(Queueable* elem); 00079 00080 public slots: 00081 void remove(); 00082 00083 protected: 00084 Container* container; 00085 QVariantMap attributes; 00086 int position; 00087 QDateTime play_at; 00088 00089 private: 00090 static void remove(int DBposition); 00091 void queueAt(int position); 00092 void correctPosition(int position); 00093 bool controls_active; 00094 ControlsWidget* controls; 00095 }; 00096 } 00097 00098 #endif // QUEUEABLE_HPP