Music Hub  ..
A session-wide music playback service
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 "apparmor/ubuntu.h"
28 #include "mpris/player.h"
29 
30 #include <core/dbus/skeleton.h>
31 #include <core/dbus/types/object_path.h>
32 
33 #include <memory>
34 
35 namespace core
36 {
37 namespace ubuntu
38 {
39 namespace media
40 {
41 namespace helper
42 {
43 struct ExternalServices;
44 }
45 
46 class Service;
47 
49 {
50  public:
51  // All creation time arguments go here.
53  {
54  // The bus connection we are associated with.
55  std::shared_ptr<core::dbus::Bus> bus;
56  // The session object that we want to expose the skeleton upon.
57  std::shared_ptr<core::dbus::Object> session;
58  // Our functional dependencies.
61  };
62 
63  PlayerSkeleton(const Configuration& configuration);
65 
66  virtual const core::Property<bool>& can_play() const;
67  virtual const core::Property<bool>& can_pause() const;
68  virtual const core::Property<bool>& can_seek() const;
69  virtual const core::Property<bool>& can_go_previous() const;
70  virtual const core::Property<bool>& can_go_next() const;
71  virtual const core::Property<bool>& is_video_source() const;
72  virtual const core::Property<bool>& is_audio_source() const;
73  virtual const core::Property<PlaybackStatus>& playback_status() const;
74  virtual const core::Property<LoopStatus>& loop_status() const;
75  virtual const core::Property<PlaybackRate>& playback_rate() const;
76  virtual const core::Property<bool>& is_shuffle() const;
77  virtual const core::Property<Track::MetaData>& meta_data_for_current_track() const;
78  virtual const core::Property<Volume>& volume() const;
79  virtual const core::Property<PlaybackRate>& minimum_playback_rate() const;
80  virtual const core::Property<PlaybackRate>& maximum_playback_rate() const;
81  virtual const core::Property<int64_t>& position() const;
82  virtual const core::Property<int64_t>& duration() const;
83  virtual const core::Property<AudioStreamRole>& audio_stream_role() const;
84  virtual const core::Property<Orientation>& orientation() const;
85  virtual const core::Property<Lifetime>& lifetime() const;
86 
87  virtual core::Property<LoopStatus>& loop_status();
88  virtual core::Property<PlaybackRate>& playback_rate();
89  virtual core::Property<bool>& is_shuffle();
90  virtual core::Property<Volume>& volume();
91  virtual core::Property<AudioStreamRole>& audio_stream_role();
92  virtual core::Property<Lifetime>& lifetime();
93 
94  virtual const core::Signal<int64_t>& seeked_to() const;
95  virtual const core::Signal<void>& about_to_finish() const;
96  virtual const core::Signal<void>& end_of_stream() const;
97  virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
98  virtual const core::Signal<Error>& error() const;
99 
100  // These properties are not exposed to the client, but still need to be
101  // able to be settable from within the Player:
102  virtual core::Property<PlaybackStatus>& playback_status();
103  virtual core::Property<bool>& can_play();
104  virtual core::Property<bool>& can_pause();
105  virtual core::Property<bool>& can_seek();
106  virtual core::Property<bool>& can_go_previous();
107  virtual core::Property<bool>& can_go_next();
108  virtual core::Property<bool>& is_video_source();
109  virtual core::Property<bool>& is_audio_source();
110  virtual core::Property<Track::MetaData>& meta_data_for_current_track();
111  virtual core::Property<PlaybackRate>& minimum_playback_rate();
112  virtual core::Property<PlaybackRate>& maximum_playback_rate();
113  virtual core::Property<int64_t>& position();
114  virtual core::Property<int64_t>& duration();
115  virtual core::Property<Orientation>& orientation();
116 
117  virtual core::Signal<int64_t>& seeked_to();
118  virtual core::Signal<void>& about_to_finish();
119  virtual core::Signal<void>& end_of_stream();
120  virtual core::Signal<PlaybackStatus>& playback_status_changed();
121  virtual core::Signal<video::Dimensions>& video_dimension_changed();
122  virtual core::Signal<Error>& error();
123 
124  private:
125  struct Private;
126  std::shared_ptr<Private> d;
127 };
128 }
129 }
130 }
131 
132 #endif // CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
virtual const core::Signal< Error > & error() const
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
Definition: player.h:32
virtual const core::Property< bool > & can_play() const
std::shared_ptr< RequestContextResolver > Ptr
Definition: ubuntu.h:87
virtual const core::Signal< void > & about_to_finish() 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
apparmor::ubuntu::RequestContextResolver::Ptr request_context_resolver
apparmor::ubuntu::RequestAuthenticator::Ptr request_authenticator
virtual const core::Property< Orientation > & orientation() const
virtual const core::Property< Volume > & volume() const
virtual const core::Signal< video::Dimensions > & video_dimension_changed() const
virtual core::Signal< PlaybackStatus > & playback_status_changed()
virtual const core::Property< bool > & is_audio_source() const
std::shared_ptr< RequestAuthenticator > Ptr
Definition: ubuntu.h:127
virtual const core::Property< Lifetime > & lifetime() const
std::shared_ptr< core::dbus::Bus > bus