Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Remoting / MediaController / MediaControllerPlayback.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 Native = Interop.MediaControllerClient;
19
20 namespace Tizen.Multimedia.MediaController
21 {
22     /// <summary>
23     /// Playback represents a playback state and playback position.
24     /// </summary>
25     public class MediaControllerPlayback
26     {
27         /// <summary>
28         /// The constructor of MediaControllerPlayback class.
29         /// </summary>
30         /// <since_tizen> 3 </since_tizen>
31         /// <param name="state">
32         /// The state of the playback which is playing in MediaConttoller server application
33         /// </param>
34         /// <param name="position">
35         /// The position of the playback which is playing in MediaConttoller server application
36         /// </param>
37         public MediaControllerPlayback(MediaControllerPlaybackState state, ulong position)
38         {
39             State = state;
40             Position = position;
41         }
42
43         internal MediaControllerPlayback(IntPtr handle)
44         {
45             MediaControllerPlaybackState state = MediaControllerPlaybackState.None;
46             ulong position = 0L;
47
48             if (handle == IntPtr.Zero)
49             {
50                 throw new InvalidOperationException("MediaControllerPlayback is not valid.");
51             }
52
53             MediaControllerValidator.ThrowIfError(
54                 Native.GetPlaybackState(handle, out state), "Get Playback state failed");
55
56             MediaControllerValidator.ThrowIfError(
57                 Native.GetPlaybackPosition(handle, out position), "Get Playback position failed");
58
59             State = state;
60             Position = position;
61         }
62
63         /// <summary>
64         /// Set/Get the State of playback information
65         /// </summary>
66         /// <since_tizen> 3 </since_tizen>
67         public MediaControllerPlaybackState State { get; }
68
69         /// <summary>
70         /// Set/Get the Position of playback information
71         /// </summary>
72         /// <since_tizen> 3 </since_tizen>
73         public ulong Position { get; }
74     }
75 }
76