Added notes to the TODO. Matt, please check and modify TODO as required :)
[MenuTunes.git] / ITMTRemote.h
index 57a3228..0cb9b99 100755 (executable)
 #import <Cocoa/Cocoa.h>
 
 /*!
-  @enum ITMTRemotePlayerRunningState
-  @abstract Possible running states for the remote's player.
-  @discussion Used in fuctions that report or take the running state of the remote's player application.
-  @constant ITMTRemotePlayerNotRunning The remote's player isn't running.
-  @constant ITMTRemotePlayerLaunching The remote's player is starting up, or is running, but not yet accepting remote commands.
-  @constant ITMTRemotePlayerRunning The remote's player is running, and as such, is accepting remote commands.
* @enum ITMTRemotePlayerRunningState
* @abstract Possible running states for the remote's player.
* @discussion Used in fuctions that report or take the running state of the remote's player application.
* @constant ITMTRemotePlayerNotRunning The remote's player isn't running.
* @constant ITMTRemotePlayerLaunching The remote's player is starting up, or is running, but not yet accepting remote commands.
* @constant ITMTRemotePlayerRunning The remote's player is running, and as such, is accepting remote commands.
  */
 typedef enum {
     ITMTRemotePlayerNotRunning = -1,
@@ -36,14 +36,14 @@ typedef enum {
 } ITMTRemotePlayerRunningState;
 
 /*!
-  @enum ITMTRemotePlayerPlayingState
-  @abstract Possible playing states for the remote's player.
-  @discussion Used in functions that report or take the playing state of the remote's player application.
-  @constant ITMTRemotePlayerStopped The remote's player is stopped.
-  @constant ITMTRemotePlayerPaused The remote's player is paused.
-  @constant ITMTRemotePlayerPlaying The remote's player is playing.
-  @constant ITMTRemotePlayerRewinding The remote's player is rewinding.
-  @constant ITMTRemotePlayerForwarding The remote's player is forwarding.
* @enum ITMTRemotePlayerPlayingState
* @abstract Possible playing states for the remote's player.
* @discussion Used in functions that report or take the playing state of the remote's player application.
* @constant ITMTRemotePlayerStopped The remote's player is stopped.
* @constant ITMTRemotePlayerPaused The remote's player is paused.
* @constant ITMTRemotePlayerPlaying The remote's player is playing.
* @constant ITMTRemotePlayerRewinding The remote's player is rewinding.
* @constant ITMTRemotePlayerForwarding The remote's player is forwarding.
  */
 typedef enum {
     ITMTRemotePlayerStopped = -1,
@@ -53,6 +53,36 @@ typedef enum {
     ITMTRemotePlayerForwarding
 } ITMTRemotePlayerPlayingState;
 
+/*!
+ * @enum ITMTRemotePlayerPlaylistClass
+ * @abstract Possible playlist classes used by a remote's player
+ * @discussion Used in functions that report the class of a playlist to MenuTunes. While we borrow the terms/descriptions from iTunes, these should work fine with any other player. If your player doesn't support a given type of playlist, then just return ITMTRemotePlayerPlaylist.
+ * @constant ITMTRemotePlayerLibraryPlaylist For players that have one playlist that contains all of a user's music, or for players that don't have the concept of multiple playlists, this is the class for that "Master" list.
+ * @constant ITMTRemotePlayerPlaylist The generic playlist. Created and maintained by the user.
+ * @constant ITMTRemotePlayerSmartPlaylist A smart playlist is a playlist who's contents are dynamic, based on a set of criteria or updated by a script. These are usually not edited directly by the user, but instead maintained by the player.
+ * @constant ITMTRemotePlayerRadioPlaylist This is for when playing tracks off of (online) radio stations.
+ */
+typedef enum {
+    ITMTRemotePlayerLibraryPlaylist = -1,
+    ITMTRemotePlayerPlaylist,
+    ITMTRemotePlayerSmartPlaylist,
+    ITMTRemotePlayerRadioPlaylist
+} ITMTRemotePlayerPlaylistClass;
+
+/*!
+ * @enum ITMTRemotePlayerRepeatMode
+ * @abstract Possible repeat modes for the remote's player.
+ * @discussion Used in functions that report or set the remote's player's repeat mode.
+ * @constant ITMTRemotePlayerRepeatOff The player plays all of the songs in a playlist through to the end, and then stops.
+ * @constant ITMTRemotePlayerRepeatAll The player plays all of the songs in a playlist through to the end, and then starts over again from the beginning.
+ * @constant ITMTRemotePlayerRepeatOne The player loops playing the selected song.
+ */
+typedef enum {
+    ITMTRemotePlayerRepeatOff = -1,
+    ITMTRemotePlayerRepeatAll,
+    ITMTRemotePlayerRepeatOne
+} ITMTRemotePlayerRepeatMode;
+
 /*!
  * @protocol ITMTRemote
  * @discussion The Objective-C protocol which all MenuTunes remotes must implement.
@@ -136,6 +166,11 @@ typedef enum {
  */
 - (NSDictionary *)capabilities;
 
+/*!
+ * @method showPrimaryInterface
+ */
+- (BOOL)showPrimaryInterface;
+
 /*!
  * @method playerRunningState
  * @abstract Returns the running state of the remote's player.
@@ -160,9 +195,9 @@ typedef enum {
 - (int)numberOfSongsInPlaylistAtIndex:(int)index;
 
 /*!
- * @method classOfPlaylistAtIndex:
+ * @method currentPlaylistClass
  */
-- (NSString *)classOfPlaylistAtIndex:(int)index;
+- (ITMTRemotePlayerPlaylistClass)currentPlaylistClass;
 
 /*!
  * @method currentPlaylistIndex
@@ -174,6 +209,21 @@ typedef enum {
  */
 - (NSString *)songTitleAtIndex:(int)index;
 
+/*!
+ * @method currentAlbumTrackCount:
+ */
+- (int)currentAlbumTrackCount;
+
+/*!
+ * @method currentSongTrack:
+ */
+- (int)currentSongTrack;
+
+/*!
+ * @method currentSongUniqueIdentifier:
+ */
+- (NSString *)currentSongUniqueIdentifier;
+
 /*!
  * @method currentSongIndex
  */
@@ -219,16 +269,6 @@ typedef enum {
  */
 - (BOOL)setCurrentSongRating:(float)rating;
 
-/*!
- * @method equalizerEnabled
- */
-- (BOOL)equalizerEnabled;
-
-/*!
- * @method setEqualizerEnabled:
- */
-- (BOOL)setEqualizerEnabled:(BOOL)enabled;
-
 /*!
  * @method eqPresets
  */
@@ -249,6 +289,26 @@ typedef enum {
  */
 - (BOOL)setVolume:(float)volume;
 
+/*!
+ * @method shuffleEnabled
+ */
+- (BOOL)shuffleEnabled;
+
+/*!
+ * @method setShuffleEnabled:
+ */
+- (BOOL)setShuffleEnabled:(BOOL)enabled;
+
+/*!
+ * @method repeatMode
+ */
+- (ITMTRemotePlayerRepeatMode)repeatMode;
+
+/*!
+ * @method setRepeatMode:
+ */
+- (BOOL)setRepeatMode:(ITMTRemotePlayerRepeatMode)repeatMode;
+
 /*!
  * @method play
  */