diff options
Diffstat (limited to 'Src/resources/skins/Big Bento/scripts/coverflow.m')
-rw-r--r-- | Src/resources/skins/Big Bento/scripts/coverflow.m | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/Src/resources/skins/Big Bento/scripts/coverflow.m b/Src/resources/skins/Big Bento/scripts/coverflow.m new file mode 100644 index 00000000..a9ca1c7c --- /dev/null +++ b/Src/resources/skins/Big Bento/scripts/coverflow.m @@ -0,0 +1,229 @@ +/********************************************************\ +** Filename: coverflow.m ** +** Version: 1.0 ** +** Date: 20. Nov. 2007 - 15:25 ** +********************************************************** +** Type: winamp.wasabi/maki ** +** Project: Cover Flow ** +********************************************************** +** Author: Martin Poehlmann aka Deimos ** +** E-Mail: martin@skinconsortium.com ** +** Internet: http://www.skinconsortium.com ** +** http://home.cs.tum.edu/~poehlman ** +\********************************************************/ + + +#include <lib/std.mi> +#include <lib/pldir.mi> + +Function update(); +Function fade (GuiObject o, int alpha, float s); + +Class GuiObject AlbumCover; +Class AlbumCover playButton; + +Global AlbumCover prev2, prev1, curr, next1, next2; +Global String sprev2, sprev1, scurr, snext1, snext2; +Global playButton bprev2, bprev1, bcurr, bnext1, bnext2; +Global text info; + +#define CENTER_VAR SGrp +Global Group sg; +#include <lib/com/centerlayer.m> +#undef CENTER_VAR + +Global PlEdit PleditListener; + +Global Timer delay; + +System.onScriptLoaded () +{ + sg = getScriptGroup(); + + PleditListener = new PlEdit; + + prev2 = sg.getObject("aa.prev2"); + prev1 = sg.getObject("aa.prev1"); + curr = sg.getObject("aa.curr"); + next1 = sg.getObject("aa.next1"); + next2 = sg.getObject("aa.next2"); + + bprev2 = sg.getObject("play.prev2"); + bprev1 = sg.getObject("play.prev1"); + bcurr = sg.getObject("play.curr"); + bnext1 = sg.getObject("play.next1"); + bnext2 = sg.getObject("play.next2"); + + info = sg.getParent().findObject("info"); + + _SGrpInit(sg, sg.getParent(), 1, 0); + + delay = new Timer; + delay.setDelay(10); + + update(); +} + +System.onScriptUnloading () +{ + delete delay; +} + +System.onTitleChange (String newtitle) +{ + update(); +} + +update () +{ + int cur = PlEdit.getCurrentIndex(); + int max = PlEdit.getNumTracks(); + + if (cur > 1) + { + prev2.setXmlParam("source", PlEdit.getFileName(cur-2)); + prev2.show(); + sprev2 = PlEdit.getTitle(cur-2); + } + else prev2.hide(); + + if (cur > 0) + { + prev1.setXmlParam("source", PlEdit.getFileName(cur-1)); + prev1.show(); + sprev1 = PlEdit.getTitle(cur-1); + } + else prev1.hide(); + + scurr = PlEdit.getTitle(cur); + + if (cur < max-2) + { + next2.setXmlParam("source", PlEdit.getFileName(cur+2)); + next2.show(); + snext2 = PlEdit.getTitle(cur+2); + } + else next2.hide(); + + if (cur < max-1) + { + next1.setXmlParam("source", PlEdit.getFileName(cur+1)); + next1.show(); + snext1 = PlEdit.getTitle(cur+1); + } + else next1.hide(); +} + +PleditListener.onPleditModified () +{ + if (delay) delay.start(); +} + +delay.onTimer () +{ + delay.stop(); + update(); +} + +AlbumCover.onRightButtonDown (int x, int y) +{ + popupmenu p = new popupmenu; + + p.addCommand("Get Album Art", 1, 0, 0); + p.addCommand("Refresh Album Art", 2, 0, 0); + p.addCommand("Open Folder", 3, 0, 0); + + int result = p.popatmouse(); + delete p; + + String pis = getXmlParam("source"); + if (pis == "") pis = system.getPlayItemString(); + + if (result == 1) + { + if (system.getAlbumArt(pis) > 0) + { + setXmlParam("notfoundimage", getXmlParam("notfoundimage")); // a nesty refresh - isn't it? + } + } + else if (result == 2) + { + setXmlParam("notfoundimage", getXmlParam("notfoundimage")); // a nesty refresh - isn't it? + } + else if (result == 3) + { + System.navigateUrl(getPath(pis)); + } +} + +AlbumCover.onLeftButtonDblClk (int x, int y) +{ + if (AlbumCover == playButton) + return; + + String pis = getXmlParam("source"); + if (pis == "") pis = system.getPlayItemString(); + System.navigateUrl(getPath(pis)); +} + +AlbumCover.onEnterArea () +{ + if (!findObject("aa." + getToken(getId(), ".", 1)).isVisible()) + { + return; + } + + int cur = PlEdit.getCurrentIndex(); + + if (AlbumCover == prev2 || AlbumCover == bprev2) + info.setText(sprev2); + else if (AlbumCover == prev1 || AlbumCover == bprev1) + info.setText(sprev1); + else if (AlbumCover == curr || AlbumCover == bcurr) + info.setText(scurr); + else if (AlbumCover == next1 || AlbumCover == bnext1) + info.setText(snext1); + else if (AlbumCover == next2 || AlbumCover == bnext2) + info.setText(snext2); + + GuiObject o = sg.findObject("play." + getToken(getId(), ".", 1)); + if (o ) + { + fade(o, 255, 0.133); + } +} + +AlbumCover.onLeaveArea () +{ + info.setText(""); + + GuiObject o = sg.findObject("play." + getToken(getId(), ".", 1)); + if (o) + { + fade(o, 0, 0.3); + } +} + +playButton.onLeftButtonUp (int x, int y) +{ + int cur = PlEdit.getCurrentIndex(); + if (playButton == bprev2) + PlEdit.playTrack(cur-2); + else if (playButton == bprev1) + PlEdit.playTrack(cur-1); + else if (playButton == bnext1) + PlEdit.playTrack(cur+1); + else if (playButton == bnext2) + PlEdit.playTrack(cur+2); + + setAlpha(0); + info.setTexT(""); +} + +fade (GuiObject o, int alpha, float s) +{ + o.cancelTarget(); + o.setTargetA(alpha); + o.setTargetSpeed(s); + o.gotoTarget(); +}
\ No newline at end of file |