![]() |
Mixxx
|
00001 // playermanager.h 00002 // Created 6/1/2010 by RJ Ryan (rryan@mit.edu) 00003 00004 #ifndef PLAYERMANAGER_H 00005 #define PLAYERMANAGER_H 00006 00007 #include <QList> 00008 00009 #include "configobject.h" 00010 #include "trackinfoobject.h" 00011 00012 class ControlObject; 00013 class Deck; 00014 class Sampler; 00015 class BaseTrackPlayer; 00016 00017 class Library; 00018 class EngineMaster; 00019 class AnalyserQueue; 00020 00021 class PlayerManager : public QObject { 00022 Q_OBJECT 00023 public: 00024 PlayerManager(ConfigObject<ConfigValue> *pConfig, 00025 EngineMaster* pEngine, 00026 Library* pLibrary); 00027 virtual ~PlayerManager(); 00028 00029 // Add a deck to the PlayerManager 00030 Deck* addDeck(); 00031 00032 // Add a sampler to the PlayerManager 00033 Sampler* addSampler(); 00034 00035 // Return the number of players 00036 unsigned int numDecks() const; 00037 00038 // Return the number of samplers 00039 unsigned int numSamplers() const; 00040 00041 // Get a BaseTrackPlayer (i.e. a Deck or a Sampler) by its group 00042 BaseTrackPlayer* getPlayer(QString group) const; 00043 00044 // Get the deck by its deck number. Decks are numbered starting with 1. 00045 Deck* getDeck(unsigned int player) const; 00046 00047 // Get the sampler by its number. Samplers are numbered starting with 1. 00048 Sampler* getSampler(unsigned int sampler) const; 00049 00050 // Returns the group for the ith sampler where i is zero indexed 00051 static QString groupForSampler(int i) { 00052 return QString("[Sampler%1]").arg(i+1); 00053 } 00054 00055 // Returns the group for the ith deck where i is zero indexed 00056 static QString groupForDeck(int i) { 00057 return QString("[Channel%1]").arg(i+1); 00058 } 00059 00060 public slots: 00061 // Slots for loading tracks into a Player, which is either a Sampler or a Deck 00062 void slotLoadTrackToPlayer(TrackPointer pTrack, QString group); 00063 void slotLoadToPlayer(QString location, QString group); 00064 00065 // Slots for loading tracks to decks 00066 void slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack); 00067 void slotLoadToDeck(QString location, int deckNumber); 00068 00069 // Slots for loading tracks to samplers 00070 void slotLoadTrackIntoNextAvailableSampler(TrackPointer pTrack); 00071 void slotLoadToSampler(QString location, int samplerNumber); 00072 00073 private: 00074 TrackPointer lookupTrack(QString location); 00075 ConfigObject<ConfigValue>* m_pConfig; 00076 EngineMaster* m_pEngine; 00077 Library* m_pLibrary; 00078 AnalyserQueue* m_pAnalyserQueue; 00079 ControlObject* m_pCONumDecks; 00080 ControlObject* m_pCONumSamplers; 00081 00082 QList<Deck*> m_decks; 00083 QList<Sampler*> m_samplers; 00084 QMap<QString, BaseTrackPlayer*> m_players; 00085 }; 00086 00087 #endif /* PLAYERMANAGER_H */