summaryrefslogtreecommitdiff
path: root/SmartDeviceLink/SDLMediaServiceData.h
blob: 8b44a4aa98bde5e4f2553f8530e888505fa6b55b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
//
//  SDLMediaServiceData.h
//  SmartDeviceLink
//
//  Created by Nicole on 2/8/19.
//  Copyright © 2019 smartdevicelink. All rights reserved.
//

#import "SDLRPCRequest.h"

#import "SDLMediaType.h"

NS_ASSUME_NONNULL_BEGIN


/**
 *  This data is related to what a media service should provide.
 */
@interface SDLMediaServiceData : SDLRPCStruct

/**
 *  Convenience init
 *
 *  @param mediaType                The type of the currently playing or paused track
 *  @param mediaTitle               The name of the current playing media
 *  @param mediaArtist              The name of the current media artist
 *  @param mediaAlbum               The name of the current media album
 *  @param playlistName             The name of the playlist
 *  @param isExplicit               Whether or not the content currently playing contains explicit content
 *  @param trackPlaybackProgress    The current progress of the track
 *  @param trackPlaybackDuration    The total duration of the track
 *  @param queuePlaybackProgess     The current progress of the playback queue in seconds
 *  @param queuePlaybackDuration    The total duration of the playback queue in seconds
 *  @param queueCurrentTrackNumber  The current number (1 based) of the track in the playback queue
 *  @param queueTotalTrackCount     The total number of tracks in the playback queue
 *  @return                         A SDLMediaServiceData object
 */
- (instancetype)initWithMediaType:(nullable SDLMediaType)mediaType mediaTitle:(nullable NSString *)mediaTitle mediaArtist:(nullable NSString *)mediaArtist mediaAlbum:(nullable NSString *)mediaAlbum playlistName:(nullable NSString *)playlistName isExplicit:(BOOL)isExplicit trackPlaybackProgress:(UInt32)trackPlaybackProgress trackPlaybackDuration:(UInt32)trackPlaybackDuration queuePlaybackProgess:(UInt32)queuePlaybackProgess queuePlaybackDuration:(UInt32)queuePlaybackDuration queueCurrentTrackNumber:(UInt32)queueCurrentTrackNumber queueTotalTrackCount:(UInt32)queueTotalTrackCount;

/**
 *  The type of the currently playing or paused track.
 *
 *  SDLMediaType, Optional
 */
@property (nullable, strong, nonatomic) SDLMediaType mediaType;

/**
 *  Music: The name of the current track
 *  Podcast: The name of the current episode
 *  Audiobook: The name of the current chapter
 *
 *  String, Optional
 */
@property (nullable, strong, nonatomic) NSString *mediaTitle;

/**
 *  Music: The name of the current album artist
 *  Podcast: The provider of the podcast (hosts, network, company)
 *  Audiobook: The book author's name
 *
 *  String, Optional
 */
@property (nullable, strong, nonatomic) NSString *mediaArtist;

/**
 *  Music: The name of the current album
 *  Podcast: The name of the current podcast show
 *  Audiobook: The name of the current book
 *
 *  String, Optional
 */
@property (nullable, strong, nonatomic) NSString *mediaAlbum;

/**
 *  Music: The name of the playlist or radio station, if the user is playing from a playlist, otherwise, Null
 *  Podcast: The name of the playlist, if the user is playing from a playlist, otherwise, Null
 *  Audiobook: Likely not applicable, possibly a collection or "playlist" of books
 *
 *  String, Optional
 */
@property (nullable, strong, nonatomic) NSString *playlistName;

/**
 *  Whether or not the content currently playing (e.g. the track, episode, or book) contains explicit content.
 *
 *  Boolean, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLBool> *isExplicit;

/**
 *  Music: The current progress of the track in seconds
 *  Podcast: The current progress of the episode in seconds
 *  Audiobook: The current progress of the current segment (e.g. the chapter) in seconds
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackProgress;

/**
 *  Music: The total duration of the track in seconds
 *  Podcast: The total duration of the episode in seconds
 *  Audiobook: The total duration of the current segment (e.g. the chapter) in seconds
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *trackPlaybackDuration;

/**
 *  Music: The current progress of the playback queue in seconds
 *  Podcast: The current progress of the playback queue in seconds
 *  Audiobook: The current progress of the playback queue (e.g. the book) in seconds
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackProgess;

/**
 *  Music: The total duration of the playback queue in seconds
 *  Podcast: The total duration of the playback queue in seconds
 *  Audiobook: The total duration of the playback queue (e.g. the book) in seconds
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queuePlaybackDuration;

/**
 *  Music: The current number (1 based) of the track in the playback queue
 *  Podcast: The current number (1 based) of the episode in the playback queue
 *  Audiobook: The current number (1 based) of the episode in the playback queue (e.g. the chapter number in the book)
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueCurrentTrackNumber;

/**
 *  Music: The total number of tracks in the playback queue
 *  Podcast: The total number of episodes in the playback queue
 *  Audiobook: The total number of sections in the playback queue (e.g. the number of chapters in the book)
 *
 *  Integer, Optional
 */
@property (nullable, strong, nonatomic) NSNumber<SDLInt> *queueTotalTrackCount;

@end

NS_ASSUME_NONNULL_END