// Beep Remote // // Douglas Thrift // // $Id$ #ifndef _BeepRemote_hpp_ #define _BeepRemote_hpp_ #include #include #include class BeepRemote { private: int session; public: BeepRemote(int session = 0) : session(session) {} void Playlist(const std::vector& list, bool enqueue = false) { char** list_(new char*[list.size()]); for (size_t index(0); index != list.size(); ++index) list_[index] = const_cast(list[index].c_str()); ::xmms_remote_playlist(session, list_, list.size(), enqueue); delete [] list_; } int GetVersion() { return ::xmms_remote_get_version(session); } void PlaylistAdd(const std::vector& list) { ::GList* list_(NULL); for (std::vector::const_iterator item(list.begin()); item != list.end(); ++item) list_ = ::g_list_append(list_, const_cast(item->c_str())); ::xmms_remote_playlist_add(session, list_); ::g_list_free(list_); } void PlaylistAdd(const std::string& item) { ::GList list = { const_cast(item.c_str()), NULL, NULL }; ::xmms_remote_playlist_add(session, &list); } void PlaylistDelete(int position) { ::xmms_remote_playlist_delete(session, position); } void Play() { ::xmms_remote_play(session); } void Pause() { ::xmms_remote_pause(session); } void Stop() { ::xmms_remote_stop(session); } bool IsPlaying() { return ::xmms_remote_is_playing(session); } bool IsPaused() { return ::xmms_remote_is_paused(session); } int GetPlaylistPosition() { return ::xmms_remote_get_playlist_pos(session); } void SetPlaylistPosition(int position) { ::xmms_remote_set_playlist_pos(session, position); } int GetPlaylistLength() { return ::xmms_remote_get_playlist_length(session); } void PlaylistClear() { return ::xmms_remote_playlist_clear(session); } int GetOutputTime() { return ::xmms_remote_get_output_time(session); } void JumpToTime(int position) { ::xmms_remote_jump_to_time(session, position); } void GetVolume(int& left, int& right) { ::xmms_remote_get_volume(session, &left, &right); } int GetMainVolume() { return ::xmms_remote_get_main_volume(session); } int GetBalance() { return ::xmms_remote_get_balance(session); } void SetVolume(int left, int right) { ::xmms_remote_set_volume(session, left, right); } void SetMainVolume(int volume) { ::xmms_remote_set_main_volume(session, volume); } void SetBalance(int balance) { ::xmms_remote_set_balance(session, balance); } std::string GetSkin() { return ::xmms_remote_get_skin(session); } void SetSkin(const std::string& skin) { ::xmms_remote_set_skin(session, const_cast(skin.c_str())); } std::string GetPlaylistFile(int position) { return ::xmms_remote_get_playlist_file(session, position); } std::string GetPlaylistTitle(int position) { return ::xmms_remote_get_playlist_title(session, position); } int GetPlaylistTime(int position) { return ::xmms_remote_get_playlist_time(session, position); } void GetInfo(int& rate, int& frequency, int& channels) { ::xmms_remote_get_info(session, &rate, &frequency, &channels); } void MainWindowToggle(bool show) { ::xmms_remote_main_win_toggle(session, show); } void PlaylistWindowToggle(bool show) { ::xmms_remote_pl_win_toggle(session, show); } void EqualizerWindowToggle(bool show) { ::xmms_remote_eq_win_toggle(session, show); } bool IsMainWindow() { return ::xmms_remote_is_main_win(session); } bool IsPlaylistWindow() { return ::xmms_remote_is_pl_win(session); } bool IsEqualizerWindow() { return ::xmms_remote_is_eq_win(session); } void ShowPreferencesBox() { ::xmms_remote_show_prefs_box(session); } void ToggleAlwaysOnTop(bool always) { ::xmms_remote_toggle_aot(session, always); } void Eject() { ::xmms_remote_eject(session); } void PlaylistPrevious() { ::xmms_remote_playlist_prev(session); } void PlaylistNext() { ::xmms_remote_playlist_next(session); } void PlaylistAddUrl(const std::string& url) { ::xmms_remote_playlist_add_url_string(session, const_cast(url.c_str())); } bool IsRunning() { return ::xmms_remote_is_running(session); } void ToggleRepeat() { ::xmms_remote_toggle_repeat(session); } void ToggleShuffle() { ::xmms_remote_toggle_shuffle(session); } bool IsRepeat() { return ::xmms_remote_is_repeat(session); } bool IsShuffle() { return ::xmms_remote_is_shuffle(session); } void ToggleRepeat(bool repeat) { if (repeat != IsRepeat()) ToggleRepeat(); } void ToggleShuffle(bool shuffle) { if (shuffle != IsShuffle()) ToggleShuffle(); } void GetEqualizer(float& preamp, float*& bands) { ::xmms_remote_get_eq(session, &preamp, &bands); } float GetEqualizerPreamp() { ::xmms_remote_get_eq_preamp(session); } float GetEqualizerBand(int band) { ::xmms_remote_get_eq_band(session, band); } void SetEqualizer(float preamp, float* bands) { ::xmms_remote_set_eq(session, preamp, bands); } void SetEqualizerPreamp(float preamp) { ::xmms_remote_set_eq_preamp(session, preamp); } void SetEqualizerBand(int band, float value) { ::xmms_remote_set_eq_band(session, band, value); } void Quit() { ::xmms_remote_quit(session); } void PlayPause() { ::xmms_remote_play_pause(session); } void PlaylistInsertUrl(const std::string& url, int position) { ::xmms_remote_playlist_ins_url_string(session, const_cast(url.c_str()), position); } void Activate() { ::xmms_remote_activate(session); } }; #endif//_BeepRemote_hpp_