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