[MediaController] Add new APIs for sending command and its callback (#396)
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Remoting / MediaController / EnumExtensions.cs
1 /*
2  * Copyright (c) 2016 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 using System;
18 using System.Diagnostics;
19
20 namespace Tizen.Multimedia.Remoting
21 {
22     internal static class EnumExtensions
23     {
24         internal static MediaControlPlaybackState ToPublic(this MediaControllerNativePlaybackState nativeState)
25         {
26             switch (nativeState)
27             {
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;
40             }
41
42             Debug.Fail($"Not supported code for playback state{nativeState}.");
43             return MediaControlPlaybackState.None;
44         }
45
46         internal static MediaControllerNativePlaybackState ToNative(this MediaControlPlaybackState state)
47         {
48             switch (state)
49             {
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;
57             }
58             return MediaControllerNativePlaybackState.None;
59         }
60
61         internal static MediaControlPlaybackCommand ToPublic(this MediaControllerNativePlaybackAction nativeAction)
62         {
63             switch (nativeAction)
64             {
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;
73             }
74
75             Debug.Fail($"Not supported code for playback command{nativeAction}.");
76             return MediaControlPlaybackCommand.Play;
77         }
78
79         internal static MediaControllerNativePlaybackAction ToNative(this MediaControlPlaybackCommand command)
80         {
81             switch (command)
82             {
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;
91             }
92             return MediaControllerNativePlaybackAction.Play;
93         }
94
95         internal static MediaControllerNativeRepeatMode ToNative(this MediaControlRepeatMode mode)
96         {
97             Debug.Assert(Enum.IsDefined(typeof(MediaControlRepeatMode), mode));
98
99             return mode == MediaControlRepeatMode.Off ? MediaControllerNativeRepeatMode.On :
100                 (mode == MediaControlRepeatMode.On ? MediaControllerNativeRepeatMode.Off : MediaControllerNativeRepeatMode.OneMedia);
101         }
102
103         internal static MediaControlRepeatMode ToPublic(this MediaControllerNativeRepeatMode mode)
104         {
105             Debug.Assert(Enum.IsDefined(typeof(MediaControllerNativeRepeatMode), mode));
106
107             return mode == MediaControllerNativeRepeatMode.Off ? MediaControlRepeatMode.On :
108                 (mode == MediaControllerNativeRepeatMode.On ? MediaControlRepeatMode.Off : MediaControlRepeatMode.OneMedia);
109         }
110     }
111 }