#pragma once #include "control/controlpushbutton.h" #include "preferences/configobject.h" #include "preferences/constants.h" #include "preferences/settingsmanager.h" #include "soundio/sounddeviceerror.h" #include "util/cmdlineargs.h" #include "util/timer.h" class QApplication; class CmdlineArgs; class KeyboardEventFilter; class EffectsManager; class EngineMaster; class SoundManager; class PlayerManager; class RecordingManager; #ifdef __BROADCAST__ class BroadcastManager; #endif class ControllerManager; class VinylControlManager; class TrackCollectionManager; class Library; class LV2Backend; namespace mixxx { class DbConnectionPool; class ScreensaverManager; class CoreServices : public QObject { Q_OBJECT public: CoreServices(const CmdlineArgs& args); ~CoreServices() = default; void initializeSettings(); // FIXME: should be private, but WMainMenuBar needs it initialized early void initializeKeyboard(); void initializeScreensaverManager(); void initialize(QApplication* pApp); void shutdown(); std::shared_ptr getKeyboardEventFilter() const { return m_pKeyboardEventFilter; } std::shared_ptr> getKeyboardConfig() const { return m_pKbdConfig; } std::shared_ptr getSoundManager() const { return m_pSoundManager; } std::shared_ptr getPlayerManager() const { return m_pPlayerManager; } std::shared_ptr getRecordingManager() const { return m_pRecordingManager; } #ifdef __BROADCAST__ std::shared_ptr getBroadcastManager() const { return m_pBroadcastManager; } #endif std::shared_ptr getControllerManager() const { return m_pControllerManager; } std::shared_ptr getVinylControlManager() const { return m_pVCManager; } LV2Backend* getLV2Backend() const { return m_pLV2Backend; } std::shared_ptr getEffectsManager() const { return m_pEffectsManager; } std::shared_ptr getLibrary() const { return m_pLibrary; } std::shared_ptr getTrackCollectionManager() const { return m_pTrackCollectionManager; } std::shared_ptr getSettingsManager() const { return m_pSettingsManager; } UserSettingsPointer getSettings() const { return m_pSettingsManager->settings(); } std::shared_ptr getScreensaverManager() const { return m_pScreensaverManager; } signals: void initializationProgressUpdate(int progress, const QString& serviceName); public slots: void slotOptionsKeyboard(bool toggle); private: bool initializeDatabase(); std::shared_ptr m_pSettingsManager; std::shared_ptr m_pEffectsManager; // owned by EffectsManager LV2Backend* m_pLV2Backend; std::shared_ptr m_pEngine; std::shared_ptr m_pSoundManager; std::shared_ptr m_pPlayerManager; std::shared_ptr m_pRecordingManager; #ifdef __BROADCAST__ std::shared_ptr m_pBroadcastManager; #endif std::shared_ptr m_pControllerManager; std::shared_ptr m_pVCManager; std::shared_ptr m_pDbConnectionPool; std::shared_ptr m_pTrackCollectionManager; std::shared_ptr m_pLibrary; std::shared_ptr m_pKeyboardEventFilter; std::shared_ptr> m_pKbdConfig; std::shared_ptr> m_pKbdConfigEmpty; std::shared_ptr m_pScreensaverManager; std::unique_ptr m_pTouchShift; Timer m_runtime_timer; const CmdlineArgs& m_cmdlineArgs; }; } // namespace mixxx