421847e1fde2c6594dd7b617a25eed0e0aad26bd
[platform/core/api/webapi-plugins.git] / src / mediacontroller / mediacontroller_server.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16
17 #ifndef MEDIACONTROLLER_MEDIACONTROLLER_SERVER_H_
18 #define MEDIACONTROLLER_MEDIACONTROLLER_SERVER_H_
19
20 #include <media_controller_server.h>
21 #include <string>
22
23 #include "common/platform_result.h"
24 #include "mediacontroller/mediacontroller_utils.h"
25
26 namespace extension {
27 namespace mediacontroller {
28
29 class MediaControllerServer {
30  public:
31   MediaControllerServer();
32   virtual ~MediaControllerServer();
33
34   common::PlatformResult Init();
35   common::PlatformResult SetPlaybackState(const std::string& state);
36   common::PlatformResult SetPlaybackPosition(double position);
37   common::PlatformResult SetContentAgeRating(const std::string& rating);
38   common::PlatformResult SetContentType(const std::string& content_type);
39   common::PlatformResult SetShuffleMode(bool mode);
40   common::PlatformResult SetRepeatMode(bool mode);
41   common::PlatformResult SetRepeatState(const std::string& state);
42   common::PlatformResult SetMetadata(const picojson::object& metadata);
43
44   common::PlatformResult SetChangeRequestPlaybackInfoListener(const JsonCallback& callback);
45   common::PlatformResult UnsetChangeRequestPlaybackInfoListener();
46
47   common::PlatformResult SetSearchRequestListener(const JsonCallback& callback);
48   common::PlatformResult UnsetSearchRequestListener();
49
50   common::PlatformResult CommandReply(const std::string& client_name, const std::string& request_id,
51                                       int code, const picojson::value& data);
52
53   common::PlatformResult SetCommandListener(const JsonCallback& callback);
54   common::PlatformResult UnsetCommandListener();
55
56   common::PlatformResult CreatePlaylist(const std::string& name, picojson::value* playlist_info);
57   common::PlatformResult SavePlaylist(const std::string& name);
58   common::PlatformResult DeletePlaylist(const std::string& name);
59   common::PlatformResult UpdatePlaybackItem(const std::string& name, const std::string& index);
60
61   common::PlatformResult MediaControllerPlaylistAddItem(const std::string& name,
62                                                         const std::string& index,
63                                                         const picojson::object& metadata);
64   common::PlatformResult MediaControllerPlaylistGetItems(const std::string& name,
65                                                          picojson::array* items);
66   common::PlatformResult UpdateIconURI(const char* icon_uri);
67   common::PlatformResult SetPlaybackAbility(const std::string& action,
68                                             const std::string& support_str, bool* is_changed);
69   common::PlatformResult SavePlaybackAbilities(const picojson::value& abilities);
70   common::PlatformResult SetDisplayModeAbility(const std::string& mode,
71                                                const std::string& support_str);
72   common::PlatformResult SetDisplayRotationAbility(std::string& display_rotation_ability,
73                                                    const std::string& support_str);
74   common::PlatformResult SetSimpleAbility(const std::string& ability_type,
75                                           const std::string& support_str);
76
77   common::PlatformResult GetAllClientsInfo(picojson::array* clientsInfo);
78
79   common::PlatformResult UpdateSubtitlesEnabled(bool enabled);
80   common::PlatformResult SetSubtitlesChangeRequestListener(const JsonCallback& callback);
81   common::PlatformResult UnsetSubtitlesChangeRequestListener();
82
83   common::PlatformResult UpdateMode360Enabled(bool enabled);
84   common::PlatformResult SetMode360ChangeRequestListener(const JsonCallback& callback);
85   common::PlatformResult UnsetMode360ChangeRequestListener();
86
87   common::PlatformResult UpdateDisplayModeType(const std::string& type);
88   common::PlatformResult SetDisplayModeChangeRequestListener(const JsonCallback& callback);
89   common::PlatformResult UnsetDisplayModeChangeRequestListener();
90
91   common::PlatformResult UpdateDisplayRotation(const std::string& display_rotation);
92   common::PlatformResult SetDisplayRotationChangeRequestListener(const JsonCallback& callback);
93   common::PlatformResult UnsetDisplayRotationChangeRequestListener();
94
95   common::PlatformResult SendEvent(const char* event_name, const picojson::value& event_data,
96                                    const char* client_name, const JsonCallback& reply_cb,
97                                    char** request_id);
98
99  private:
100   mc_server_h handle_;
101
102   JsonCallback change_request_playback_info_listener_;
103   JsonCallback event_reply_callback_;
104   JsonCallback command_listener_;
105   JsonCallback search_request_listener_;
106   JsonCallback subtitles_change_request_listener_;
107   JsonCallback mode360_change_request_listener_;
108   JsonCallback display_mode_change_request_listener_;
109   JsonCallback display_rotation_change_request_listener_;
110
111   mc_playback_states_e playback_state_;
112   unsigned long long position_;
113   mc_content_age_rating_e age_rating_;
114   mc_content_type_e content_type_;
115   mc_shuffle_mode_e shuffle_mode_;
116   mc_repeat_mode_e repeat_mode_;
117   bool is_shuffle_mode_set_;
118   bool is_repeat_mode_set_;
119   std::map<std::string, mc_ability_support_e> abilities_;
120
121   std::map<std::string, mc_playlist_h> playlist_handle_map_;
122
123   static void OnPlaybackActionCommand(const char* client_name, const char* request_id,
124                                       mc_playback_action_e action, void* user_data);
125   static void OnPlaybackPositionCommand(const char* client_name, const char* request_id,
126                                         unsigned long long position, void* user_data);
127   static void OnShuffleModeCommand(const char* client_name, const char* request_id,
128                                    mc_shuffle_mode_e mode, void* user_data);
129   static void OnRepeatModeCommand(const char* client_name, const char* request_id,
130                                   mc_repeat_mode_e mode, void* user_data);
131   static void OnPlaybackItemCommand(const char* client_name, const char* request_id,
132                                     const char* playlist_name, const char* index,
133                                     mc_playback_action_e action, unsigned long long position,
134                                     void* user_data);
135   static void OnEventReply(const char* client_name, const char* request_id, int result_code,
136                            bundle* data, void* user_data);
137   static void OnSearchRequestReceived(const char* client_name, const char* request_id,
138                                       mc_search_h request, void* user_data);
139   static void OnCommandReceived(const char* client_name, const char* request_id,
140                                 const char* command, bundle* data, void* user_data);
141   static void OnSubtitlesChangeCommand(const char* client_name, const char* request_id,
142                                        bool enabled, void* user_data);
143   static void OnMode360ChangeCommand(const char* client_name, const char* request_id, bool enabled,
144                                      void* user_data);
145
146   static void OnDisplayModeChangeCommand(const char* client_name, const char* request_id,
147                                          mc_display_mode_e type, void* user_data);
148
149   static void OnDisplayRotationChangeCommand(const char* client_name, const char* request_id,
150                                              mc_display_rotation_e type, void* user_data);
151 };
152
153 }  // namespace mediacontroller
154 }  // namespace extension
155
156 #endif  // MEDIACONTROLLER_MEDIACONTROLLER_SERVER_H_