system_media_controls_manager.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "data/data_audio_msg_id.h"
  9. #include "media/player/media_player_instance.h"
  10. #include "media/media_common.h"
  11. namespace base::Platform {
  12. class SystemMediaControls;
  13. } // namespace base::Platform
  14. namespace Data {
  15. class DocumentMedia;
  16. } // namespace Data
  17. namespace Window {
  18. class Controller;
  19. } // namespace Window
  20. namespace Media::Streaming {
  21. class Instance;
  22. } // namespace Media::Streaming
  23. namespace Media {
  24. class SystemMediaControlsManager {
  25. public:
  26. SystemMediaControlsManager();
  27. ~SystemMediaControlsManager();
  28. static bool Supported();
  29. private:
  30. const std::unique_ptr<base::Platform::SystemMediaControls> _controls;
  31. std::vector<std::shared_ptr<Data::DocumentMedia>> _cachedMediaView;
  32. std::unique_ptr<Streaming::Instance> _streamed;
  33. AudioMsgId _lastAudioMsgId;
  34. OrderMode _lastOrderMode = OrderMode::Default;
  35. rpl::lifetime _lifetimeDownload;
  36. rpl::lifetime _lifetime;
  37. };
  38. } // namespace Media