#include <Bonobo.idl>
#include <Bonobo_Property.idl>

/* arch-tag: Rhythmbox Bonobo interface definition
 */

module GNOME
{
	interface Rhythmbox : Bonobo::Unknown
	{
		struct SongInfo {
			string title;
			string artist;
			string genre;
			string album;
			string path;
			long track_number;
			long disc_number;
			long duration;
			long bitrate;

			long filesize;

			double rating;
			long play_count;
			long last_played;

			double track_gain;
			double track_peak;
			double album_gain;
			double album_peak;
		};

		void addToLibrary (in string uri);
		
		void handleFile (in string uri);

		void select (in string uri);
		void play (in string uri);
		
		void grabFocus ();
		
		void playPause ();
		void next ();
		void previous ();
		

		long getPlayingTime ();         /* returns -1 if not playing */
		void setPlayingTime (in long seconds);
		void skip (in long offset);

		void setRating (in double rating);
	        
		/* Available properties:
		 * 
		 * repeat:     boolean, read-write, notification
		 * shuffle:    boolean, read-write, notification
		 * play-order: string,  read-only, notification
		 * playing:    boolean, read-only, notification
		 * song:       SongInfo, read-only, notification
		 * visibility: boolean, read-write, notification
		 * volume:     float,   read-write, notification
		 */
	        Bonobo::PropertyBag getPlayerProperties ();
		
		void quit ();

		void toggleMute ();
	};
};

