2 * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using System.Diagnostics;
20 namespace Tizen.Multimedia.Remoting
23 /// Specifies the playlist mode.
25 /// <since_tizen> 5 </since_tizen>
26 public enum MediaControlPlaylistMode
29 /// Playlist is created or update.
34 /// Playlist is removed.
40 /// Specifies the repeat mode.
42 /// <since_tizen> 4 </since_tizen>
43 public enum MediaControlRepeatMode
58 /// <since_tizen> 5 </since_tizen>
63 /// Specifies playback commands.
65 /// <since_tizen> 4 </since_tizen>
66 public enum MediaControlPlaybackCommand
104 /// Toggle play/pause.
106 /// <since_tizen> 5 </since_tizen>
111 /// Specifies playback states.
113 /// <since_tizen> 4 </since_tizen>
114 public enum MediaControlPlaybackState
117 /// Unknown; no state is set.
147 /// Skipping to the next item.
149 /// <since_tizen> 5 </since_tizen>
153 /// Skipping to the previous item.
155 /// <since_tizen> 5 </since_tizen>
160 /// Specifies the support type of media control capability.
162 /// <since_tizen> 5 </since_tizen>
163 public enum MediaControlCapabilitySupport
176 /// There's no support info in server.
182 /// Specifies the content type.
184 /// <since_tizen> 5 </since_tizen>
185 public enum MediaControlContentType
208 /// There's no content type info in server.
214 /// Specifies the search category.
216 /// <since_tizen> 5 </since_tizen>
217 public enum MediaControlSearchCategory
220 /// Search by all category.
225 /// Search by content title.
230 /// Search by content artist.
235 /// Search by content album.
240 /// Search by content genre.
245 /// Search by TPO(Time Place Occasion).
250 internal static class EnumExtensions
252 internal static MediaControlPlaybackState ToPublic(this MediaControllerNativePlaybackState nativeState)
256 case MediaControllerNativePlaybackState.None: return MediaControlPlaybackState.None;
257 case MediaControllerNativePlaybackState.Play: return MediaControlPlaybackState.Playing;
258 case MediaControllerNativePlaybackState.Pause: return MediaControlPlaybackState.Paused;
259 case MediaControllerNativePlaybackState.Stop: return MediaControlPlaybackState.Stopped;
260 case MediaControllerNativePlaybackState.Next:
261 case MediaControllerNativePlaybackState.MovingToNext: return MediaControlPlaybackState.MovingToNext;
262 case MediaControllerNativePlaybackState.Prev:
263 case MediaControllerNativePlaybackState.MovingToPrev: return MediaControlPlaybackState.MovingToPrevious;
264 case MediaControllerNativePlaybackState.FastForward:
265 case MediaControllerNativePlaybackState.FastForwarding: return MediaControlPlaybackState.FastForwarding;
266 case MediaControllerNativePlaybackState.Rewind:
267 case MediaControllerNativePlaybackState.Rewinding: return MediaControlPlaybackState.Rewinding;
270 Debug.Fail($"Not supported code for playback state{nativeState}.");
271 return MediaControlPlaybackState.None;
274 internal static MediaControllerNativePlaybackState ToNative(this MediaControlPlaybackState state)
278 case MediaControlPlaybackState.Playing: return MediaControllerNativePlaybackState.Play;
279 case MediaControlPlaybackState.Paused: return MediaControllerNativePlaybackState.Pause;
280 case MediaControlPlaybackState.Stopped: return MediaControllerNativePlaybackState.Stop;
281 case MediaControlPlaybackState.MovingToNext: return MediaControllerNativePlaybackState.MovingToNext;
282 case MediaControlPlaybackState.MovingToPrevious: return MediaControllerNativePlaybackState.MovingToPrev;
283 case MediaControlPlaybackState.FastForwarding: return MediaControllerNativePlaybackState.FastForwarding;
284 case MediaControlPlaybackState.Rewinding: return MediaControllerNativePlaybackState.Rewinding;
286 return MediaControllerNativePlaybackState.None;
289 internal static MediaControlPlaybackCommand ToPublic(this MediaControllerNativePlaybackAction nativeAction)
291 switch (nativeAction)
293 case MediaControllerNativePlaybackAction.Play: return MediaControlPlaybackCommand.Play;
294 case MediaControllerNativePlaybackAction.Pause: return MediaControlPlaybackCommand.Pause;
295 case MediaControllerNativePlaybackAction.Stop: return MediaControlPlaybackCommand.Stop;
296 case MediaControllerNativePlaybackAction.Next: return MediaControlPlaybackCommand.Next;
297 case MediaControllerNativePlaybackAction.Prev: return MediaControlPlaybackCommand.Previous;
298 case MediaControllerNativePlaybackAction.FastForward: return MediaControlPlaybackCommand.FastForward;
299 case MediaControllerNativePlaybackAction.Rewind: return MediaControlPlaybackCommand.Rewind;
300 case MediaControllerNativePlaybackAction.Toggle: return MediaControlPlaybackCommand.Toggle;
303 Debug.Fail($"Not supported code for playback command{nativeAction}.");
304 return MediaControlPlaybackCommand.Play;
307 internal static MediaControllerNativePlaybackAction ToNative(this MediaControlPlaybackCommand command)
311 case MediaControlPlaybackCommand.Play: return MediaControllerNativePlaybackAction.Play;
312 case MediaControlPlaybackCommand.Pause: return MediaControllerNativePlaybackAction.Pause;
313 case MediaControlPlaybackCommand.Stop: return MediaControllerNativePlaybackAction.Stop;
314 case MediaControlPlaybackCommand.Next: return MediaControllerNativePlaybackAction.Next;
315 case MediaControlPlaybackCommand.Previous: return MediaControllerNativePlaybackAction.Prev;
316 case MediaControlPlaybackCommand.FastForward: return MediaControllerNativePlaybackAction.FastForward;
317 case MediaControlPlaybackCommand.Rewind: return MediaControllerNativePlaybackAction.Rewind;
318 case MediaControlPlaybackCommand.Toggle: return MediaControllerNativePlaybackAction.Toggle;
320 return MediaControllerNativePlaybackAction.Play;
323 internal static MediaControlRepeatMode ToPublic(this MediaControllerNativeRepeatMode mode)
325 Debug.Assert(Enum.IsDefined(typeof(MediaControllerNativeRepeatMode), mode));
327 return mode == MediaControllerNativeRepeatMode.Off ? MediaControlRepeatMode.On :
328 (mode == MediaControllerNativeRepeatMode.On ? MediaControlRepeatMode.Off : MediaControlRepeatMode.OneMedia);
331 internal static MediaControllerNativeRepeatMode ToNative(this MediaControlRepeatMode mode)
333 Debug.Assert(Enum.IsDefined(typeof(MediaControlRepeatMode), mode));
335 return mode == MediaControlRepeatMode.Off ? MediaControllerNativeRepeatMode.On :
336 (mode == MediaControlRepeatMode.On ? MediaControllerNativeRepeatMode.Off : MediaControllerNativeRepeatMode.OneMedia);