Mixxx

/home/maxime/Projets/Mixxx/1.10/mixxx/src/playermanager.h

Go to the documentation of this file.
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 */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines