Music Hub  ..
A session-wide music playback service
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
player_skeleton.h
Go to the documentation of this file.
1 
20 #ifndef CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
21 #define CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
22 
23 #include <core/media/player.h>
24 
25 #include "player_traits.h"
26 
27 #include "mpris/player.h"
28 
29 #include <core/dbus/skeleton.h>
30 #include <core/dbus/types/object_path.h>
31 
32 #include <memory>
33 
34 namespace core
35 {
36 namespace ubuntu
37 {
38 namespace media
39 {
40 class Service;
41 
43 {
44  public:
46 
47  virtual const core::Property<bool>& can_play() const;
48  virtual const core::Property<bool>& can_pause() const;
49  virtual const core::Property<bool>& can_seek() const;
50  virtual const core::Property<bool>& can_go_previous() const;
51  virtual const core::Property<bool>& can_go_next() const;
52  virtual const core::Property<bool>& is_video_source() const;
53  virtual const core::Property<bool>& is_audio_source() const;
54  virtual const core::Property<PlaybackStatus>& playback_status() const;
55  virtual const core::Property<LoopStatus>& loop_status() const;
56  virtual const core::Property<PlaybackRate>& playback_rate() const;
57  virtual const core::Property<bool>& is_shuffle() const;
58  virtual const core::Property<Track::MetaData>& meta_data_for_current_track() const;
59  virtual const core::Property<Volume>& volume() const;
60  virtual const core::Property<PlaybackRate>& minimum_playback_rate() const;
61  virtual const core::Property<PlaybackRate>& maximum_playback_rate() const;
62  virtual const core::Property<int64_t>& position() const;
63  virtual const core::Property<int64_t>& duration() const;
64  virtual const core::Property<AudioStreamRole>& audio_stream_role() const;
65 
66  virtual core::Property<LoopStatus>& loop_status();
67  virtual core::Property<PlaybackRate>& playback_rate();
68  virtual core::Property<bool>& is_shuffle();
69  virtual core::Property<Volume>& volume();
70  virtual core::Property<AudioStreamRole>& audio_stream_role();
71 
72  virtual const core::Signal<int64_t>& seeked_to() const;
73  virtual const core::Signal<void>& end_of_stream() const;
74  virtual core::Signal<PlaybackStatus>& playback_status_changed();
75 
76 protected:
77  // All creation time arguments go here.
79  {
80  // The bus connection we are associated with.
81  std::shared_ptr<core::dbus::Bus> bus;
82  // The session object that we want to expose the skeleton upon.
83  std::shared_ptr<core::dbus::Object> session;
84  // Our identity, an identifier we pass out to other parts of the system.
85  // Defaults to the short app id (${PKG_NAME}_${APP}).
86  std::string identity;
87  };
88 
89  PlayerSkeleton(const Configuration& configuration);
90 
91  virtual core::Property<PlaybackStatus>& playback_status();
92  virtual core::Property<bool>& can_play();
93  virtual core::Property<bool>& can_pause();
94  virtual core::Property<bool>& can_seek();
95  virtual core::Property<bool>& can_go_previous();
96  virtual core::Property<bool>& can_go_next();
97  virtual core::Property<bool>& is_video_source();
98  virtual core::Property<bool>& is_audio_source();
99  virtual core::Property<Track::MetaData>& meta_data_for_current_track();
100  virtual core::Property<PlaybackRate>& minimum_playback_rate();
101  virtual core::Property<PlaybackRate>& maximum_playback_rate();
102  virtual core::Property<int64_t>& position();
103  virtual core::Property<int64_t>& duration();
104 
105  virtual core::Signal<int64_t>& seeked_to();
106  virtual core::Signal<void>& end_of_stream();
107 
108  private:
109  struct Private;
110  std::shared_ptr<Private> d;
111 };
112 }
113 }
114 }
115 
116 #endif // CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
virtual const core::Property< PlaybackStatus > & playback_status() const
virtual const core::Property< bool > & is_video_source() const
virtual const core::Signal< void > & end_of_stream() const
virtual const core::Property< int64_t > & duration() const
virtual const core::Property< bool > & can_seek() const
virtual const core::Property< PlaybackRate > & maximum_playback_rate() const
virtual const core::Property< bool > & is_shuffle() const
virtual const core::Property< bool > & can_go_next() const
virtual const core::Property< int64_t > & position() const
virtual const core::Property< bool > & can_go_previous() const
virtual const core::Property< bool > & can_play() const
virtual const core::Property< Track::MetaData > & meta_data_for_current_track() const
virtual const core::Property< bool > & can_pause() const
virtual const core::Property< LoopStatus > & loop_status() const
virtual const core::Signal< int64_t > & seeked_to() const
virtual const core::Property< PlaybackRate > & playback_rate() const
PlayerSkeleton(const Configuration &configuration)
virtual const core::Property< AudioStreamRole > & audio_stream_role() const
std::shared_ptr< core::dbus::Object > session
virtual const core::Property< PlaybackRate > & minimum_playback_rate() const
virtual const core::Property< Volume > & volume() const
virtual core::Signal< PlaybackStatus > & playback_status_changed()
virtual const core::Property< bool > & is_audio_source() const
std::shared_ptr< core::dbus::Bus > bus