2 * Copyright (c) 2016 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
22 internal static class EnumExtensions
24 internal static MediaControlPlaybackState ToPublic(this MediaControllerNativePlaybackState nativeState)
28 case MediaControllerNativePlaybackState.None: return MediaControlPlaybackState.None;
29 case MediaControllerNativePlaybackState.Play: return MediaControlPlaybackState.Playing;
30 case MediaControllerNativePlaybackState.Pause: return MediaControlPlaybackState.Paused;
31 case MediaControllerNativePlaybackState.Stop: return MediaControlPlaybackState.Stopped;
32 case MediaControllerNativePlaybackState.Next:
33 case MediaControllerNativePlaybackState.MovingToNext: return MediaControlPlaybackState.MovingToNext;
34 case MediaControllerNativePlaybackState.Prev:
35 case MediaControllerNativePlaybackState.MovingToPrev: return MediaControlPlaybackState.MovingToPrevious;
36 case MediaControllerNativePlaybackState.FastForward:
37 case MediaControllerNativePlaybackState.FastForwarding: return MediaControlPlaybackState.FastForwarding;
38 case MediaControllerNativePlaybackState.Rewind:
39 case MediaControllerNativePlaybackState.Rewinding: return MediaControlPlaybackState.Rewinding;
42 Debug.Fail($"Not supported code for playback state{nativeState}.");
43 return MediaControlPlaybackState.None;
46 internal static MediaControllerNativePlaybackState ToNative(this MediaControlPlaybackState state)
50 case MediaControlPlaybackState.Playing: return MediaControllerNativePlaybackState.Play;
51 case MediaControlPlaybackState.Paused: return MediaControllerNativePlaybackState.Pause;
52 case MediaControlPlaybackState.Stopped: return MediaControllerNativePlaybackState.Stop;
53 case MediaControlPlaybackState.MovingToNext: return MediaControllerNativePlaybackState.MovingToNext;
54 case MediaControlPlaybackState.MovingToPrevious: return MediaControllerNativePlaybackState.MovingToPrev;
55 case MediaControlPlaybackState.FastForwarding: return MediaControllerNativePlaybackState.FastForwarding;
56 case MediaControlPlaybackState.Rewinding: return MediaControllerNativePlaybackState.Rewinding;
58 return MediaControllerNativePlaybackState.None;
61 internal static MediaControlPlaybackCommand ToPublic(this MediaControllerNativePlaybackAction nativeAction)
65 case MediaControllerNativePlaybackAction.Play: return MediaControlPlaybackCommand.Play;
66 case MediaControllerNativePlaybackAction.Pause: return MediaControlPlaybackCommand.Pause;
67 case MediaControllerNativePlaybackAction.Stop: return MediaControlPlaybackCommand.Stop;
68 case MediaControllerNativePlaybackAction.Next: return MediaControlPlaybackCommand.Next;
69 case MediaControllerNativePlaybackAction.Prev: return MediaControlPlaybackCommand.Previous;
70 case MediaControllerNativePlaybackAction.FastForward: return MediaControlPlaybackCommand.FastForward;
71 case MediaControllerNativePlaybackAction.Rewind: return MediaControlPlaybackCommand.Rewind;
72 case MediaControllerNativePlaybackAction.Toggle: return MediaControlPlaybackCommand.Toggle;
75 Debug.Fail($"Not supported code for playback command{nativeAction}.");
76 return MediaControlPlaybackCommand.Play;
79 internal static MediaControllerNativePlaybackAction ToNative(this MediaControlPlaybackCommand command)
83 case MediaControlPlaybackCommand.Play: return MediaControllerNativePlaybackAction.Play;
84 case MediaControlPlaybackCommand.Pause: return MediaControllerNativePlaybackAction.Pause;
85 case MediaControlPlaybackCommand.Stop: return MediaControllerNativePlaybackAction.Stop;
86 case MediaControlPlaybackCommand.Next: return MediaControllerNativePlaybackAction.Next;
87 case MediaControlPlaybackCommand.Previous: return MediaControllerNativePlaybackAction.Prev;
88 case MediaControlPlaybackCommand.FastForward: return MediaControllerNativePlaybackAction.FastForward;
89 case MediaControlPlaybackCommand.Rewind: return MediaControllerNativePlaybackAction.Rewind;
90 case MediaControlPlaybackCommand.Toggle: return MediaControllerNativePlaybackAction.Toggle;
92 return MediaControllerNativePlaybackAction.Play;
95 internal static MediaControllerNativeRepeatMode ToNative(this MediaControlRepeatMode mode)
97 Debug.Assert(Enum.IsDefined(typeof(MediaControlRepeatMode), mode));
99 return mode == MediaControlRepeatMode.Off ? MediaControllerNativeRepeatMode.On :
100 (mode == MediaControlRepeatMode.On ? MediaControllerNativeRepeatMode.Off : MediaControllerNativeRepeatMode.OneMedia);
103 internal static MediaControlRepeatMode ToPublic(this MediaControllerNativeRepeatMode mode)
105 Debug.Assert(Enum.IsDefined(typeof(MediaControllerNativeRepeatMode), mode));
107 return mode == MediaControllerNativeRepeatMode.Off ? MediaControlRepeatMode.On :
108 (mode == MediaControllerNativeRepeatMode.On ? MediaControlRepeatMode.Off : MediaControlRepeatMode.OneMedia);