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  virtual const core::Property<Orientation>& orientation() const;
66  virtual const core::Property<Lifetime>& lifetime() const;
67 
68  virtual core::Property<LoopStatus>& loop_status();
69  virtual core::Property<PlaybackRate>& playback_rate();
70  virtual core::Property<bool>& is_shuffle();
71  virtual core::Property<Volume>& volume();
72  virtual core::Property<AudioStreamRole>& audio_stream_role();
73  virtual core::Property<Lifetime>& lifetime();
74 
75  virtual const core::Signal<int64_t>& seeked_to() const;
76  virtual const core::Signal<void>& end_of_stream() const;
77  virtual core::Signal<PlaybackStatus>& playback_status_changed();
78  virtual const core::Signal<uint64_t>& video_dimension_changed() const;
79  virtual const core::Signal<Error>& error() const;
80 
81 protected:
82  // All creation time arguments go here.
84  {
85  // The bus connection we are associated with.
86  std::shared_ptr<core::dbus::Bus> bus;
87  // The session object that we want to expose the skeleton upon.
88  std::shared_ptr<core::dbus::Object> session;
89  // Our identity, an identifier we pass out to other parts of the system.
90  // Defaults to the short app id (${PKG_NAME}_${APP}).
91  std::string identity;
92  };
93 
94  PlayerSkeleton(const Configuration& configuration);
95 
96  // These properties are not exposed to the client, but still need to be
97  // able to be settable from within the Player:
98  virtual core::Property<PlaybackStatus>& playback_status();
99  virtual core::Property<bool>& can_play();
100  virtual core::Property<bool>& can_pause();
101  virtual core::Property<bool>& can_seek();
102  virtual core::Property<bool>& can_go_previous();
103  virtual core::Property<bool>& can_go_next();
104  virtual core::Property<bool>& is_video_source();
105  virtual core::Property<bool>& is_audio_source();
106  virtual core::Property<Track::MetaData>& meta_data_for_current_track();
107  virtual core::Property<PlaybackRate>& minimum_playback_rate();
108  virtual core::Property<PlaybackRate>& maximum_playback_rate();
109  virtual core::Property<int64_t>& position();
110  virtual core::Property<int64_t>& duration();
111  virtual core::Property<Orientation>& orientation();
112 
113  virtual core::Signal<int64_t>& seeked_to();
114  virtual core::Signal<void>& end_of_stream();
115  virtual core::Signal<uint64_t>& video_dimension_changed();
116  virtual core::Signal<Error>& error();
117 
118  private:
119  struct Private;
120  std::shared_ptr<Private> d;
121 };
122 }
123 }
124 }
125 
126 #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:29
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< uint64_t > & video_dimension_changed() 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< Orientation > & orientation() const
virtual const core::Property< Volume > & volume() const
virtual core::Signal< PlaybackStatus > & playback_status_changed()
virtual const core::Property< bool > & is_audio_source() const
virtual const core::Property< Lifetime > & lifetime() const
std::shared_ptr< core::dbus::Bus > bus