*
*/
+/*! @header ITMTRemote
+ * @abstract Declares the necessary protocol and class to implement a MenuTunes Remote.
+ */
+
#import <Cocoa/Cocoa.h>
+typedef enum {stopped = -1, paused, playing, rewinding, forwarding} PlayerState;
+
+/*! @protocol ITMTRemote
+ * @abstract Declares what a MenuTunes Remote must be able to do.
+ * @discussion A MenuTunes Remote must be able to return and change state information.
+ */
@protocol ITMTRemote
+
+/*! @method remote
+ * @abstract Returns an autoreleased instance of the remote.
+ * @discussion Should be very quick and compact.
+ * EXAMPLE:
+ * + (id)remote
+ * {
+ * return [[[MyRemote alloc] init] autorelease];
+ * }
+ * @result The instance.
+ */
+ (id)remote;
-// Return an autoreleased instance of the remote.
-// Should be very quick and compact.
-// EXAMPLE:
-// + (id)remote
-// {
-// return [[[MyRemote alloc] init] autorelease];
-// }
+/*! @method title:
+ * @abstract Returns an autoreleased instance of the remote.
+ * @result An NSString containing the title.
+ */
- (NSString *)title;
-// Return the title of the remote.
-- (NSString *)description;
-// Return a short description of the remote.
+/*! @method description:
+ * @abstract Returns a description of the remote.
+ * @result An NSString containing the description.
+ */
+- (NSString *)information;
+/*! @method icon:
+ * @abstract Returns a icon for the remote.
+ * @result An NSImage containing the icon.
+ */
- (NSImage *)icon;
-// Return a 16x16 icon representation for the remote.
+/*! @method begin:
+ * @abstract Sent when the plugin should begin operation.
+ * @result A result code signifying success.
+ */
- (BOOL)begin;
-// Sent to the plugin when it should begin operation.
+/*! @method halt:
+ * @abstract Sent when the plugin should cease operation.
+ * @result A result code signifying success.
+ */
- (BOOL)halt;
-// Sent to the plugin when it should cease operation.
-- (NSArray *)sources;
-- (int)currentSourceIndex;
+- (BOOL)isAppRunning;
+- (PlayerState)playerState;
-- (NSArray *)playlistsForCurrentSource;
+- (NSArray *)playlists;
+- (int)numberOfSongsInPlaylistAtIndex:(int)index;
+- (NSString *)classOfPlaylistAtIndex:(int)index;
- (int)currentPlaylistIndex;
-- (NSString *)songTitleAtIndex;
+- (NSString *)songTitleAtIndex:(int)index;
- (int)currentSongIndex;
- (NSString *)currentSongTitle;
- (NSString *)currentSongRemaining;
- (NSArray *)eqPresets;
+- (int)currentEQPresetIndex;
- (BOOL)play;
- (BOOL)pause;
- (BOOL)goToNextSong;
- (BOOL)goToPreviousSong;
-- (BOOL)goToNextPlaylist;
-- (BOOL)goToPreviousPlaylist;
+- (BOOL)fastForward;
+- (BOOL)rewind;
-- (BOOL)switchToSourceAtIndex:(int)index;
- (BOOL)switchToPlaylistAtIndex:(int)index;
- (BOOL)switchToSongAtIndex:(int)index;
- (BOOL)switchToEQAtIndex:(int)index;