From c789b26c59856a6e13d49076237da62b58baca15 Mon Sep 17 00:00:00 2001 From: terencehill Date: Sun, 4 Aug 2013 15:12:02 +0200 Subject: [PATCH] Add buttons to remove tracks from the playlist --- .../xonotic/dialog_multiplayer_musicplayer.c | 13 ++++++++--- qcsrc/menu/xonotic/playlist.c | 23 +++++++++++++++---- qcsrc/menu/xonotic/soundlist.c | 4 ---- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_musicplayer.c b/qcsrc/menu/xonotic/dialog_multiplayer_musicplayer.c index 9ac0be8f8..d2d4f5da4 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_musicplayer.c +++ b/qcsrc/menu/xonotic/dialog_multiplayer_musicplayer.c @@ -35,7 +35,7 @@ void XonoticMusicPlayerTab_fill(entity me) soundList.playlist = playList; me.TR(me); - me.TD(me, me.rows - 4, columns_nospacing / 2, soundList); + me.TD(me, me.rows - 5, columns_nospacing / 2, soundList); me.gotoRC(me, me.rows - 4, 0); me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Add")), '0 0 0')); @@ -58,9 +58,9 @@ void XonoticMusicPlayerTab_fill(entity me) me.TD(me, 1, columns_nospacing / 4, e = makeXonoticTextLabel(0, _("Playlist:"))); me.TD(me, 1, columns_nospacing / 4, e = makeXonoticCheckBox(0, "music_playlist_random0", _("Random order"))); me.TR(me); - me.TD(me, me.rows - 3, columns_nospacing / 2, playList); + me.TD(me, me.rows - 4, columns_nospacing / 2, playList); - me.gotoRC(me, me.rows - 2, columns_nospacing / 2 + 0.2); + me.gotoRC(me, me.rows - 3, columns_nospacing / 2 + 0.2); me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Stop")), '0 0 0')); e.onClick = StopSound_Click; e.onClickEntity = playList; @@ -76,5 +76,12 @@ void XonoticMusicPlayerTab_fill(entity me) me.TD(me, 1, columns_nospacing / 10, e = makeXonoticButton(ZCTX(_("MUSICPL^Next")), '0 0 0')); e.onClick = NextSound_Click; e.onClickEntity = playList; + me.TR(me); + me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Remove")), '0 0 0')); + e.onClick = PlayList_Remove; + e.onClickEntity = playList; + me.TD(me, 1, columns_nospacing / 4, e = makeXonoticButton(ZCTX(_("MUSICPL^Remove all")), '0 0 0')); + e.onClick = PlayList_Remove_All; + e.onClickEntity = playList; } #endif diff --git a/qcsrc/menu/xonotic/playlist.c b/qcsrc/menu/xonotic/playlist.c index d9ca2f7df..0127181d9 100644 --- a/qcsrc/menu/xonotic/playlist.c +++ b/qcsrc/menu/xonotic/playlist.c @@ -13,7 +13,7 @@ CLASS(XonoticPlayList) EXTENDS(XonoticListBox) METHOD(XonoticPlayList, mouseDrag, float(entity, vector)) METHOD(XonoticPlayList, addToPlayList, void(entity, string)) - METHOD(XonoticPlayList, removeFromPlayList, void(entity, string)) + METHOD(XonoticPlayList, removeSelectedFromPlayList, void(entity)) ATTRIB(XonoticPlayList, playingTrack, string, string_null) ATTRIB(XonoticPlayList, realFontSize, vector, '0 0 0') @@ -30,6 +30,8 @@ CLASS(XonoticPlayList) EXTENDS(XonoticListBox) ENDCLASS(XonoticPlayList) entity makeXonoticPlayList(); +void PlayList_Remove(entity btn, entity me); +void PlayList_Remove_All(entity btn, entity me); void StopSound_Click(entity btn, entity me); void StartSound_Click(entity btn, entity me); void PauseSound_Click(entity btn, entity me); @@ -86,7 +88,7 @@ void XonoticPlayList_addToPlayList(entity me, string track) cvar_set("music_playlist_list0", strcat(cvar_string("music_playlist_list0"), " ", track)); } -void XonoticPlayList_removeFromPlayList(entity me, string track) +void XonoticPlayList_removeSelectedFromPlayList(entity me) { float i, cpt = FALSE; string s = ""; @@ -95,7 +97,7 @@ void XonoticPlayList_removeFromPlayList(entity me, string track) return; for(i = 0; i < me.nItems; ++i) { - if(argv(i) == track) + if(i == me.selectedItem) { if(i == me.nItems - 1) me.setSelected(me, me.selectedItem - 1); @@ -121,6 +123,18 @@ void XonoticPlayList_removeFromPlayList(entity me, string track) me.startSound(me, 0); // stop current playing track otherwise pause/play button will resume from another track } +void PlayList_Remove(entity btn, entity me) +{ + me.removeSelectedFromPlayList(me); +} + +void PlayList_Remove_All(entity btn, entity me) +{ + cvar_set("music_playlist_list0", ""); + me.stopSound(me); + me.selectedItem = 0; +} + float XonoticPlayList_mouseDrag(entity me, vector pos) { float f, i; @@ -267,8 +281,7 @@ float XonoticPlayList_keyDown(entity me, float scan, float ascii, float shift) return 1; } else if(scan == K_DEL || scan == K_KP_DEL || scan == K_BACKSPACE || scan == K_MOUSE3) { - me.nItems = tokenize_console(cvar_string("music_playlist_list0")); - me.removeFromPlayList(me, argv(me.selectedItem)); + me.removeSelectedFromPlayList(me); return 1; } else diff --git a/qcsrc/menu/xonotic/soundlist.c b/qcsrc/menu/xonotic/soundlist.c index 126b01721..f1b4aa300 100644 --- a/qcsrc/menu/xonotic/soundlist.c +++ b/qcsrc/menu/xonotic/soundlist.c @@ -177,10 +177,6 @@ float XonoticSoundList_keyDown(entity me, float scan, float ascii, float shift) me.playlist.addToPlayList(me.playlist, me.soundName(me, me.selectedItem)); return 1; } - else if(scan == K_DEL || scan == K_KP_DEL) { - me.playlist.removeFromPlayList(me.playlist, me.soundName(me, me.selectedItem)); - return 1; - } else return SUPER(XonoticSoundList).keyDown(me, scan, ascii, shift); } -- 2.39.2