Терминальный проект КиберПлат [open source]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.4KB

  1. /* @file Менеджер для работы со звуком. */
  2. #pragma once
  3. // Qt
  4. #include <Common/QtHeadersBegin.h>
  5. #include <QtCore/QSharedPointer>
  6. #include <QtMultimedia/QMediaPlayer>
  7. #include <QtMultimedia/QMediaPlaylist>
  8. #include <Common/QtHeadersEnd.h>
  9. // Modules
  10. #include <System/IApplication.h>
  11. #include <Common/ILogable.h>
  12. // SDK
  13. #include <SDK/PaymentProcessor/Core/IAudioService.h>
  14. #include <SDK/PaymentProcessor/Core/IService.h>
  15. //---------------------------------------------------------------------------
  16. class AudioService :
  17. public QObject,
  18. public SDK::PaymentProcessor::IAudioService,
  19. public SDK::PaymentProcessor::IService,
  20. private ILogable
  21. {
  22. Q_OBJECT
  23. public:
  24. /// Получение AudioService'а.
  25. static AudioService * instance(IApplication * aApplication);
  26. AudioService(IApplication * aApplication);
  27. virtual ~AudioService();
  28. /// IService: Инициализация сервиса.
  29. virtual bool initialize();
  30. /// IService: Закончена инициализация всех сервисов.
  31. virtual void finishInitialize();
  32. /// Возвращает false, если сервис не может быть остановлен в текущий момент.
  33. virtual bool canShutdown();
  34. /// IService: Завершение работы сервиса.
  35. virtual bool shutdown();
  36. /// IService: Возвращает имя сервиса.
  37. virtual QString getName() const;
  38. /// IService: Список необходимых сервисов.
  39. virtual const QSet<QString> & getRequiredServices() const;
  40. /// IService: Получить параметры сервиса.
  41. virtual QVariantMap getParameters() const;
  42. /// IService: Сброс служебной информации.
  43. virtual void resetParameters(const QSet<QString> & aParameters);
  44. #pragma region SDK::PaymentProcessor::IAudioService interface
  45. /// Воспроизвести звуковой файл.
  46. virtual void play(const QString & aFileName);
  47. /// Остановить вопроизведение.
  48. virtual void stop();
  49. #pragma endregion
  50. private slots:
  51. /// Изменение состояния проигрывателя музыки
  52. void stateChanged(QMediaPlayer::State aState);
  53. private:
  54. IApplication * mApplication;
  55. QString mInterfacePath;
  56. QSharedPointer<QMediaPlayer> mPlayer;
  57. };
  58. //---------------------------------------------------------------------------