Merge branch 'master' of git://github.com/ksuther/MenuTunes
[MenuTunes.git] / ITMTRemote.h
index f5a9195..cd79315 100755 (executable)
@@ -1,17 +1,14 @@
 /*
- *  MenuTunes
- *  ITMTRemote
- *    Plugin definition for audio player control via MenuTunes
+ *     MenuTunes
+ *     ITMTRemote.h
  *
- *  Original Author : Matt Judy <mjudy@ithinksw.com>
- *   Responsibility : Matt Judy <mjudy@ithinksw.com>
- *
- *  Copyright (c) 2002 - 2003 iThink Software.
- *  All Rights Reserved
+ *     Plugin definition for audio player control via MenuTunes.
  *
  *     This header defines the Objective-C protocol which all MenuTunes Remote
- *  plugins must implement.  To build a remote, create a subclass of this
- *  object, and implement each method in the @protocol below.
+ *     plugins must implement.  To build a remote, create a subclass of this
+ *     object, and implement each method in the @protocol below.
+ *
+ *     Copyright (c) 2002-2003 iThink Software
  *
  */
 
@@ -57,6 +54,7 @@ typedef enum {
  * @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.
@@ -75,7 +73,7 @@ typedef enum {
     ITMTRemoteCDSource,
     ITMTRemoteRadioSource,
     ITMTRemoteiPodSource,
-    ITMTRemoteMP3PlayerSource,
+    ITMTRemoteGenericDeviceSource,
     ITMTRemoteSharedLibrarySource
 } ITMTRemotePlayerSource;
 
@@ -156,6 +154,7 @@ typedef enum {
  * @method playerFullName
  * @abstract Returns the remote's player's application filename.
  * @discussion This string should be the name typically used by the remote's player's application bundle/file. For example, Panic's Audion audio player is known simply as "Audion", however, the application bundle is called "Audion 3" for version 3 of thei
+
 r application. This should return "Audion 3", not simply "Audion". See playerSimpleName.
  * @result An NSString containing the remote's player's application filename
  */
@@ -186,6 +185,7 @@ r application. This should return "Audion 3", not simply "Audion". See playerSim
  * @method playerRunningState
  * @abstract Returns the running state of the remote's player.
  * @discussion While most remotes will use only ITMTRemotePlayerNotRunning or ITMTRemotePlayerRunning, we have included support for ITMTRemotePlayerLaunching (see ITMTRemotePlayerRunningState) for remotes that want the most precise control over their play
+
 er's process managment.
  * @result An ITMTRemotePlayerRunningState defining the running state of the remote's player.
  */
@@ -201,6 +201,16 @@ er's process managment.
  */
 - (NSArray *)playlists;
 
+/*!
+ * @method artists
+ */
+- (NSArray *)artists;
+
+/*!
+ * @method albums
+ */
+- (NSArray *)albums;
+
 /*!
  * @method numberOfSongsInPlaylistAtIndex:
  */
@@ -211,6 +221,11 @@ er's process managment.
  */
 - (ITMTRemotePlayerSource)currentSource;
 
+/*!
+ * @method currentSourceIndex
+ */
+- (int)currentSourceIndex;
+
 /*!
  * @method currentPlaylistClass
  */
@@ -226,6 +241,11 @@ er's process managment.
  */
 - (NSString *)songTitleAtIndex:(int)index;
 
+/*!
+ * @method songEnabledAtIndex:
+ */
+- (BOOL)songEnabledAtIndex:(int)index;
+
 /*!
  * @method currentAlbumTrackCount:
  */
@@ -256,6 +276,11 @@ er's process managment.
  */
 - (NSString *)currentSongArtist;
 
+/*!
+ * @method currentSongComposer
+ */
+- (NSString *)currentSongComposer;
+
 /*!
  * @method currentSongAlbum
  */
@@ -271,11 +296,36 @@ er's process managment.
  */
 - (NSString *)currentSongLength;
 
+/*!
+ * @method currentSongPlayed
+ */
+- (int)currentSongPlayed;
+
+/*!
+ * @method currentSongDuration
+ */
+- (int)currentSongDuration;
+
 /*!
  * @method currentSongRemaining
  */
 - (NSString *)currentSongRemaining;
 
+/*!
+ * @method currentSongElapsed
+ */
+- (NSString *)currentSongElapsed;
+
+/*!
+ * @method currentSongAlbumArt
+ */
+- (NSImage *)currentSongAlbumArt;
+
+/*!
+ * @method currentSongPlayCount
+ */
+- (int)currentSongPlayCount;
+
 /*!
  * @method currentSongRating
  */
@@ -286,6 +336,26 @@ er's process managment.
  */
 - (BOOL)setCurrentSongRating:(float)rating;
 
+/*!
+ * @method currentSongShuffable
+ */
+- (BOOL)currentSongShufflable;
+
+/*!
+ * @method setCurrentSongShuffable:
+ */
+- (BOOL)setCurrentSongShufflable:(BOOL)shufflable;
+
+/*!
+ * @method equalizerEnabled
+ */
+- (BOOL)equalizerEnabled;
+
+/*!
+ * @method setEqualizerEnabled:
+ */
+- (BOOL)setEqualizerEnabled:(BOOL)enabled;
+
 /*!
  * @method eqPresets
  */
@@ -361,6 +431,11 @@ er's process managment.
  */
 - (BOOL)switchToPlaylistAtIndex:(int)index;
 
+/*!
+ * @method switchToPlaylistAtIndex:
+ */
+- (BOOL)switchToPlaylistAtIndex:(int)index ofSourceAtIndex:(int)index2;
+
 /*!
  * @method switchToSongAtIndex:
  */
@@ -371,6 +446,11 @@ er's process managment.
  */
 - (BOOL)switchToEQAtIndex:(int)index;
 
+/*!
+ * @method makePlaylistWithTerm:ofType:
+ */
+- (BOOL)makePlaylistWithTerm:(NSString *)term ofType:(int)type;
+
 @end
 
 /*!