diff --git a/src/Tizen.Multimedia.Remoting/MediaController/ClientCustomCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/ClientCustomCapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..b7e9b04e035 --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/ClientCustomCapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class ClientCustomCapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The client custom capability. + /// is not valid. + /// 11 + internal ClientCustomCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the client custom is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs index 7e0d5e3fae0..df9e0b8b83f 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaControlServer.cs @@ -637,6 +637,82 @@ public static void SetMode360Capability(MediaControlCapabilitySupport support) ThrowIfError("Failed to set 360 mode capability."); } + /// + /// Sets the indicating playback position is supported or not. + /// + /// A value indicating whether the playback position is supported or not. + /// + /// The server is not running .
+ /// -or-
+ /// An internal error occurs. + ///
+ /// is invalid. + /// 11 + public static void SetPlaybackPositionCapability(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.PlaybackPosition, support). + ThrowIfError("Failed to set playback position capability."); + } + + /// + /// Sets the indicating playlist is supported or not. + /// + /// A value indicating whether the playlist is supported or not. + /// + /// The server is not running .
+ /// -or-
+ /// An internal error occurs. + ///
+ /// is invalid. + /// 11 + public static void SetPlaylistCapability(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.Playlist, support). + ThrowIfError("Failed to set playlist capability."); + } + + /// + /// Sets the indicating client custom is supported or not. + /// + /// A value indicating whether the client custom is supported or not. + /// + /// The server is not running .
+ /// -or-
+ /// An internal error occurs. + ///
+ /// is invalid. + /// 11 + public static void SetClientCustomCapability(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.ClientCustom, support). + ThrowIfError("Failed to set client custom capability."); + } + + /// + /// Sets the indicating search is supported or not. + /// + /// A value indicating whether the search is supported or not. + /// + /// The server is not running .
+ /// -or-
+ /// An internal error occurs. + ///
+ /// is invalid. + /// 11 + public static void SetSearchCapability(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Native.SetSimpleCapability(Handle, MediaControlNativeCapabilityCategory.Search, support). + ThrowIfError("Failed to set search capability."); + } + /// /// Sets the indicating whether subtitle mode is supported or not. /// diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.Events.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.Events.cs index a9b0fa78a43..db5d61b0b6d 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.Events.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.Events.cs @@ -237,7 +237,7 @@ internal void RaisePlaybackCapabilityUpdatedEvent(IntPtr playbackCapaHandle) } /// - /// Occurs when the repeat mode capabilities are updated. + /// Occurs when the repeat mode capability is updated. /// /// 5 public event EventHandler RepeatModeCapabilityUpdated; @@ -248,7 +248,7 @@ internal void RaiseRepeatModeCapabilityUpdatedEvent(MediaControlCapabilitySuppor } /// - /// Occurs when the shuffle mode capabilities are updated. + /// Occurs when the shuffle mode capability is updated. /// /// 5 public event EventHandler ShuffleModeCapabilityUpdated; @@ -259,7 +259,73 @@ internal void RaiseShuffleModeCapabilityUpdatedEvent(MediaControlCapabilitySuppo } /// - /// Occurs when the display mode capabilities are updated. + /// Occurs when the playback position capability is updated. + /// + /// 11 + public event EventHandler PlaybackPositionCapabilityUpdated; + + internal void RaisePlaybackPositionCapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + PlaybackPositionCapabilityUpdated?.Invoke(this, new PlaybackPositionCapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the playlist capability is updated. + /// + /// 11 + public event EventHandler PlaylistCapabilityUpdated; + + internal void RaisePlaylistCapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + PlaylistCapabilityUpdated?.Invoke(this, new PlaylistCapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the client custom capability is updated. + /// + /// 11 + public event EventHandler ClientCustomCapabilityUpdated; + + internal void RaiseClientCustomCapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + ClientCustomCapabilityUpdated?.Invoke(this, new ClientCustomCapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the search capability is updated. + /// + /// 11 + public event EventHandler SearchCapabilityUpdated; + + internal void RaiseSearchCapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + SearchCapabilityUpdated?.Invoke(this, new SearchCapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the subtitle capability is updated. + /// + /// 11 + public event EventHandler SubtitleCapabilityUpdated; + + internal void RaiseSubtitleCapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + SubtitleCapabilityUpdated?.Invoke(this, new SubtitleCapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the mode360 capability is updated. + /// + /// 11 + public event EventHandler Mode360CapabilityUpdated; + + internal void RaiseMode360CapabilityUpdatedEvent(MediaControlCapabilitySupport support) + { + Mode360CapabilityUpdated?.Invoke(this, new Mode360CapabilityUpdatedEventArgs(support)); + } + + /// + /// Occurs when the display mode capability is updated. /// /// 6 public event EventHandler DisplayModeCapabilityUpdated; @@ -270,7 +336,7 @@ internal void RaiseDisplayModeCapabilityUpdatedEvent(MediaControlNativeDisplayMo } /// - /// Occurs when the display rotation capabilities are updated. + /// Occurs when the display rotation capability is updated. /// /// 6 public event EventHandler DisplayRotationCapabilityUpdated; diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs index 51ac909fcfe..664ee46f8a6 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaController.cs @@ -679,6 +679,90 @@ public MediaControlCapabilitySupport GetSubtitleModeCapability() return support; } + /// + /// Gets the value whether the playback position is supported or not. + /// + /// A . + /// + /// The server has already been stopped.
+ /// -or-
+ /// An internal error occurs. + ///
+ /// The has already been disposed. + /// 11 + public MediaControlCapabilitySupport GetPlaybackPositionCapability() + { + ThrowIfStopped(); + + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.PlaybackPosition, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get playback position capability"); + + return support; + } + + /// + /// Gets the value whether the playlist is supported or not. + /// + /// A . + /// + /// The server has already been stopped.
+ /// -or-
+ /// An internal error occurs. + ///
+ /// The has already been disposed. + /// 11 + public MediaControlCapabilitySupport GetPlaylistCapability() + { + ThrowIfStopped(); + + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.Playlist, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get playlist capability"); + + return support; + } + + /// + /// Gets the value whether the client custom is supported or not. + /// + /// A . + /// + /// The server has already been stopped.
+ /// -or-
+ /// An internal error occurs. + ///
+ /// The has already been disposed. + /// 11 + public MediaControlCapabilitySupport GetClientCustomCapability() + { + ThrowIfStopped(); + + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.ClientCustom, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get client custom capability"); + + return support; + } + + /// + /// Gets the value whether the search is supported or not. + /// + /// A . + /// + /// The server has already been stopped.
+ /// -or-
+ /// An internal error occurs. + ///
+ /// The has already been disposed. + /// 11 + public MediaControlCapabilitySupport GetSearchCapability() + { + ThrowIfStopped(); + + Native.GetSimpleCapability(Manager.Handle, ServerAppId, MediaControlNativeCapabilityCategory.Search, out MediaControlCapabilitySupport support). + ThrowIfError("Failed to get search capability"); + + return support; + } + /// /// Gets the value whether the repeat mode is supported or not. /// diff --git a/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs b/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs index 7fa8125c7ef..5b2c894f8aa 100644 --- a/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs +++ b/src/Tizen.Multimedia.Remoting/MediaController/MediaControllerManager.Events.cs @@ -293,11 +293,32 @@ private void RegisterSimpleCapabilityUpdatedEvent() { switch (category) { + case MediaControlNativeCapabilityCategory.Shuffle: + GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support); + break; case MediaControlNativeCapabilityCategory.Repeat: GetController(serverName)?.RaiseRepeatModeCapabilityUpdatedEvent(support); break; - case MediaControlNativeCapabilityCategory.Shuffle: - GetController(serverName)?.RaiseShuffleModeCapabilityUpdatedEvent(support); + case MediaControlNativeCapabilityCategory.PlaybackPosition: + GetController(serverName)?.RaisePlaybackPositionCapabilityUpdatedEvent(support); + break; + case MediaControlNativeCapabilityCategory.Playlist: + GetController(serverName)?.RaisePlaylistCapabilityUpdatedEvent(support); + break; + case MediaControlNativeCapabilityCategory.ClientCustom: + GetController(serverName)?.RaiseClientCustomCapabilityUpdatedEvent(support); + break; + case MediaControlNativeCapabilityCategory.Search: + GetController(serverName)?.RaiseSearchCapabilityUpdatedEvent(support); + break; + case MediaControlNativeCapabilityCategory.Subtitle: + GetController(serverName)?.RaiseSubtitleCapabilityUpdatedEvent(support); + break; + case MediaControlNativeCapabilityCategory.Mode360: + GetController(serverName)?.RaiseMode360CapabilityUpdatedEvent(support); + break; + default: + Log.Info(GetType().FullName, $"There's no category : {category}"); break; } }; diff --git a/src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..e036ce373fb --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/Mode360CapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class Mode360CapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The mode360 capability. + /// is not valid. + /// 11 + internal Mode360CapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the mode360 is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..8a722f625bd --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/PlaybackPositionCapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class PlaybackPositionCapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The playback position capability. + /// is not valid. + /// 11 + internal PlaybackPositionCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the playback position is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..61005e8ab16 --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/PlaylistCapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class PlaylistCapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The repeat mode capability. + /// is not valid. + /// 11 + internal PlaylistCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the repeat mode is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..f1b0bd8b2ce --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/SearchCapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class SearchCapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The search capability. + /// is not valid. + /// 11 + internal SearchCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the search is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file diff --git a/src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs b/src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs new file mode 100644 index 00000000000..2fbcf49eb5c --- /dev/null +++ b/src/Tizen.Multimedia.Remoting/MediaController/SubtitleCapabilityUpdatedEventArgs.cs @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System; + +namespace Tizen.Multimedia.Remoting +{ + /// + /// Provides data for the event. + /// + /// 11 + public class SubtitleCapabilityUpdatedEventArgs : EventArgs + { + /// + /// Initializes a new instance of the class. + /// + /// The subtitle capability. + /// is not valid. + /// 11 + internal SubtitleCapabilityUpdatedEventArgs(MediaControlCapabilitySupport support) + { + ValidationUtil.ValidateEnum(typeof(MediaControlCapabilitySupport), support, nameof(support)); + + Support = support; + } + + /// + /// Gets the value whether the subtitle is supported or not. + /// + /// 11 + public MediaControlCapabilitySupport Support { get; } + } +} \ No newline at end of file