1277 lines
34 KiB
Mathematica
1277 lines
34 KiB
Mathematica
|
/*---------------------------------------------------
|
||
|
-----------------------------------------------------
|
||
|
Filename: fileinfo.m
|
||
|
Version: 3.3
|
||
|
Type: maki
|
||
|
Date: 10. Aug. 2007 - 20:42
|
||
|
Author: Martin Poehlmann aka Deimos
|
||
|
E-Mail: martin@skinconsortium.com
|
||
|
Internet: www.skinconsortium.com
|
||
|
www.martin.deimos.de.vu
|
||
|
-----------------------------------------------------
|
||
|
---------------------------------------------------*/
|
||
|
|
||
|
#include <lib/std.mi>
|
||
|
#include attribs/init_windowpage.m
|
||
|
|
||
|
#include <lib/com/songinfo.m>
|
||
|
|
||
|
//#define DEBUG
|
||
|
#define FILE_NAME "fileinfo.m"
|
||
|
#include <lib/com/debug.m>
|
||
|
|
||
|
#define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
|
||
|
|
||
|
Function loadFileInfo();
|
||
|
Function loadPlaylistArtWork();
|
||
|
Class GuiObject TextObject;
|
||
|
Class GuiObject CycleObject;
|
||
|
Function refreshRating(int rating);
|
||
|
Class Button RatingButton;
|
||
|
Function showBranding();
|
||
|
Class Group Infoline;
|
||
|
Function getTextHeight(InfoLine gn);
|
||
|
|
||
|
Global Group scriptGroup, g_cover;
|
||
|
Global AlbumArtLayer l_albumart;
|
||
|
Global AlbumArtLayer AlbumArt;
|
||
|
Global InfoLine g_rating, g_title, g_album, g_artist, g_year, g_genre, g_track, g_publisher, g_sname, g_surl, g_albumartist, g_composer, g_format, g_disc;
|
||
|
Global InfoLine g_target;
|
||
|
Global Text t_title, t_album, t_artist, t_year, t_genre, t_track, t_publisher, t_sname, t_surl, t_composer, t_albumartist, t_format, t_disc, t_rating;
|
||
|
Global Timer cycler;
|
||
|
// Global String stationLink = "";
|
||
|
|
||
|
Global List cycle;
|
||
|
Global Boolean cycler_paused, quick_change, HAVE_ML = TRUE;
|
||
|
Global List ratingStars;
|
||
|
|
||
|
#define CENTER_VAR Branding
|
||
|
Global layer l_branding;
|
||
|
#include <lib/com/centerlayer.m>
|
||
|
#undef CENTER_VAR
|
||
|
|
||
|
Global TextObject TextArtist, TextAlbum, TextTitle, TextGenre, TextPublisher, TextSURl, TextSname;
|
||
|
Global CycleObject cycleGenre, cyclePublisher, cycleTrack, cycleYear, cycleComposer, cycleAlbumartist, cycleFormat, cycleDisc;
|
||
|
|
||
|
Global RatingButton rate1, rate2, rate3, rate4, rate5, rate0;
|
||
|
Global Layer star1, star2, star3, star4, star5;
|
||
|
|
||
|
Global Int startwith = 0;
|
||
|
Global Int artRetries = 0;
|
||
|
Global Int maxlines;
|
||
|
|
||
|
Global timer delayLoad;
|
||
|
|
||
|
System.onScriptLoaded()
|
||
|
{
|
||
|
initAttribs_windowpage();
|
||
|
|
||
|
HAVE_ML = stringToInteger(getToken(getParam(), ",", 0));
|
||
|
maxlines = stringToInteger(getToken(getParam(), ",", 1));
|
||
|
|
||
|
scriptGroup = getScriptGroup();
|
||
|
|
||
|
cycler = new Timer;
|
||
|
cycler.setDelay(4000);
|
||
|
|
||
|
delayLoad = new Timer;
|
||
|
delayLoad.setDelay(10);
|
||
|
|
||
|
//debug(getWinampVersion() + "#" + integerToString(getBuildNumber()));
|
||
|
|
||
|
g_rating = scriptGroup.findObject("infodisplay.line.rating");
|
||
|
g_title = scriptGroup.findObject("infodisplay.line.title");
|
||
|
g_album = scriptGroup.findObject("infodisplay.line.album");
|
||
|
g_artist = scriptGroup.findObject("infodisplay.line.artist");
|
||
|
g_year = scriptGroup.findObject("infodisplay.line.year");
|
||
|
g_genre = scriptGroup.findObject("infodisplay.line.genre");
|
||
|
g_track = scriptGroup.findObject("infodisplay.line.track");
|
||
|
g_publisher = scriptGroup.findObject("infodisplay.line.publisher");
|
||
|
g_sname = scriptGroup.findObject("infodisplay.line.sname");
|
||
|
g_surl = scriptGroup.findObject("infodisplay.line.surl");
|
||
|
g_composer = scriptGroup.findObject("infodisplay.line.composer");
|
||
|
g_albumartist = scriptGroup.findObject("infodisplay.line.albumartist");
|
||
|
g_format = scriptGroup.findObject("infodisplay.line.format");
|
||
|
g_disc = scriptGroup.findObject("infodisplay.line.disc");
|
||
|
|
||
|
t_title = g_title.findObject("text");
|
||
|
t_album = g_album.findObject("text");
|
||
|
t_artist = g_artist.findObject("text");
|
||
|
t_year = g_year.findObject("text");
|
||
|
t_genre = g_genre.findObject("text");
|
||
|
t_track = g_track.findObject("text");
|
||
|
t_Publisher = g_publisher.findObject("text");
|
||
|
t_sname = g_sname.findObject("text");
|
||
|
t_surl = g_surl.findObject("text");
|
||
|
t_albumartist = g_albumartist.findObject("text");
|
||
|
t_composer = g_composer.findObject("text");
|
||
|
t_format = g_format.findObject("text");
|
||
|
t_disc = g_disc.findObject("text");
|
||
|
|
||
|
textArtist = g_artist.findObject("text");
|
||
|
textAlbum = g_album.findObject("text");
|
||
|
textTitle = g_title.findObject("text");
|
||
|
textsUrl = g_surl.findObject("text");
|
||
|
textSname = g_sname.findObject("text");
|
||
|
cycleGenre = g_genre.findObject("link");
|
||
|
cyclePublisher = g_publisher.findObject("link");
|
||
|
cycleTrack = g_track.findObject("link");
|
||
|
cycleYear = g_year.findObject("link");
|
||
|
cycleAlbumartist = g_albumartist.findObject("text");
|
||
|
cycleComposer = g_composer.findObject("text");
|
||
|
cycleFormat = g_format.findObject("link");
|
||
|
cycleDisc = g_disc.findObject("link");
|
||
|
|
||
|
cycle = new List;
|
||
|
ratingStars = new List;
|
||
|
|
||
|
group parent = scriptGroup.getParent();
|
||
|
l_branding = parent.findObject("branding");
|
||
|
g_cover = parent.findObject("info.component.cover");
|
||
|
_BrandingInit(l_branding, parent, 1, 0);
|
||
|
|
||
|
l_albumart = g_cover.getObjecT("winamp.albumart");
|
||
|
|
||
|
rate1 = g_rating.findObject("rate.1");
|
||
|
rate2 = g_rating.findObject("rate.2");
|
||
|
rate3 = g_rating.findObject("rate.3");
|
||
|
rate4 = g_rating.findObject("rate.4");
|
||
|
rate5 = g_rating.findObject("rate.5");
|
||
|
rate0 = g_rating.findObject("rate.0");
|
||
|
ratingStars.addItem(rate1);
|
||
|
ratingStars.addItem(rate2);
|
||
|
ratingStars.addItem(rate3);
|
||
|
ratingStars.addItem(rate4);
|
||
|
ratingStars.addItem(rate5);
|
||
|
|
||
|
star1 = g_rating.findObject("star.1");
|
||
|
star2 = g_rating.findObject("star.2");
|
||
|
star3 = g_rating.findObject("star.3");
|
||
|
star4 = g_rating.findObject("star.4");
|
||
|
star5 = g_rating.findObject("star.5");
|
||
|
|
||
|
t_rating = g_rating.findObject("label");
|
||
|
t_rating.onTextChanged ("");
|
||
|
|
||
|
refreshRating(System.getCurrentTrackRating());
|
||
|
loadFileInfo();
|
||
|
if (ic_fileinfo.getData() == "1")
|
||
|
{
|
||
|
if (getStatus() == STATUS_STOPPED && songinfo_location == "") showBranding(); // show branding if playback is stopped and the playlist is empty
|
||
|
if (removePath(getPlayItemString()) == "demo.mp3") // Show branding if playing DJ Mike
|
||
|
{
|
||
|
if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
|
||
|
{
|
||
|
showBranding();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
System.onScriptUnloading ()
|
||
|
{
|
||
|
cycler.stop();
|
||
|
delete cycler;
|
||
|
|
||
|
delayLoad.stop();
|
||
|
delete delayLoad;
|
||
|
}
|
||
|
|
||
|
// Reload fileInfo if track has changed
|
||
|
|
||
|
delayLoad.onTimer()
|
||
|
{
|
||
|
System.onTitleChange (getPlayItemString());
|
||
|
|
||
|
delayLoad.stop();
|
||
|
}
|
||
|
|
||
|
System.onTitleChange (String newtitle)
|
||
|
{
|
||
|
// Get rid of "" calls
|
||
|
if (newtitle == "" && getplayitemmetadatastring("title") == "" && !delayLoad.isRunning())
|
||
|
{
|
||
|
delayLoad.start();
|
||
|
}
|
||
|
|
||
|
// Get rid of buffering during stream connection & playback
|
||
|
if (StrLeft(newtitle, 1) == "[") {
|
||
|
if (StrLeft(newtitle, 7) == "[Buffer" || StrLeft(newtitle, 4) == "[ICY") return;
|
||
|
}
|
||
|
// Show branding for DJ Mike
|
||
|
if (removePath(getPlayItemString()) == "demo.mp3")
|
||
|
{
|
||
|
if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
|
||
|
{
|
||
|
showBranding();
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
debugString(DEBUG_PREFIX "System.onTitleChange() -> loadFileInfo();", D_WTF);
|
||
|
refreshRating(System.getCurrentTrackRating());
|
||
|
loadFileInfo();
|
||
|
}
|
||
|
|
||
|
// Reload fileInfo if textline attribs have changed
|
||
|
|
||
|
InfoLineAttribute.onDataChanged ()
|
||
|
{
|
||
|
if (l_branding.isVisible()) return;
|
||
|
loadFileInfo ();
|
||
|
}
|
||
|
|
||
|
/*l_albumart.onAlbumArtLoaded(boolean success)
|
||
|
{
|
||
|
if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
|
||
|
{
|
||
|
if(!l_albumart.isInvalid())
|
||
|
{
|
||
|
l_albumart.show();
|
||
|
l_webcover.hide();
|
||
|
}
|
||
|
}
|
||
|
}*/
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
// Our main machine.
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
loadPlaylistArtWork()
|
||
|
{
|
||
|
Group g_cover2;
|
||
|
Container player;
|
||
|
Frame dualwnd, pl_dualwnd, mainframe;
|
||
|
Layout mainframe;
|
||
|
|
||
|
player = getContainer("main");
|
||
|
if(player)
|
||
|
{
|
||
|
mainframe=player.getLayout("normal");
|
||
|
if(mainframe)
|
||
|
{
|
||
|
dualwnd = mainframe.findObject("player.dualwnd");
|
||
|
if(dualwnd)
|
||
|
{
|
||
|
pl_dualwnd = dualwnd.findObject("playlist.dualwnd");
|
||
|
if(pl_dualwnd)
|
||
|
{
|
||
|
g_cover2 = pl_dualwnd.findObject("player.component.playlist.albumart");
|
||
|
if(g_cover2)
|
||
|
{
|
||
|
AlbumArt = g_cover2.findObject("winamp.albumart");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
loadFileInfo ()
|
||
|
{
|
||
|
songinfo_reload(); // refresh vars
|
||
|
debugString(DEBUG_PREFIX "loadFileInfo() {", D_WTF);
|
||
|
debugString(DEBUG_PREFIX " songinfo_location: " + songinfo_location, D_WTF);
|
||
|
debugString(DEBUG_PREFIX " songinfo_displayTitle: " + songinfo_displayTitle, D_WTF);
|
||
|
|
||
|
// cancel g_target
|
||
|
if (g_target) g_target.cancelTarget();
|
||
|
if (g_target) g_target.setAlpha(255);
|
||
|
g_target = NULL;
|
||
|
|
||
|
// hide all lines and cycle buttons
|
||
|
g_rating.hide();
|
||
|
g_title.hide();
|
||
|
g_album.hide();
|
||
|
g_artist.hide();
|
||
|
g_year.hide();
|
||
|
g_genre.hide();
|
||
|
l_branding.hide();
|
||
|
g_track.hide();
|
||
|
g_publisher.hide();
|
||
|
g_cover.setAlpha(255);
|
||
|
g_surl.hide();
|
||
|
g_sname.hide();
|
||
|
g_albumartist.hide();
|
||
|
g_composer.hide();
|
||
|
g_format.hide();
|
||
|
g_disc.hide();
|
||
|
cycleTrack.hide();
|
||
|
cycleGenre.hide();
|
||
|
cyclePublisher.hide();
|
||
|
cycleFormat.hide();
|
||
|
cycleYear.hide();
|
||
|
cycleDisc.hide();
|
||
|
cycler.stop();
|
||
|
cycler_paused = 0;
|
||
|
// stationLink = "";
|
||
|
|
||
|
artRetries = 0;
|
||
|
l_albumart.setXMLParam("notfoundImage", "winamp.cover.notfound.xxl");
|
||
|
|
||
|
Boolean _cycle = (infocomp_cycle.getData() == "1");
|
||
|
Boolean _rating = (infocomp_show_rating.getData() == "1");
|
||
|
|
||
|
// empty cycle list
|
||
|
cycle.removeAll();
|
||
|
|
||
|
int pos = 1;
|
||
|
|
||
|
if (maxlines > 5)
|
||
|
{
|
||
|
pos += 2;
|
||
|
}
|
||
|
|
||
|
int n = 0;
|
||
|
|
||
|
debugString(DEBUG_PREFIX " songinfo_streamName: " + songinfo_streamName, D_WTF);
|
||
|
debugString(DEBUG_PREFIX " songinfo_streamType: " + integerToString(songinfo_streamType), D_WTF);
|
||
|
if (songinfo_isStream)
|
||
|
{
|
||
|
debugString(DEBUG_PREFIX " -> A stream is detected!", D_WTF);
|
||
|
|
||
|
debugString(DEBUG_PREFIX " songinfo_artist: " + songinfo_artist, D_WTF);
|
||
|
debugString(DEBUG_PREFIX " songinfo_title: " + songinfo_title, D_WTF);
|
||
|
|
||
|
if (songinfo_title != "")
|
||
|
{
|
||
|
// Title
|
||
|
if (n > 0) pos += getTextHeight(g_title);
|
||
|
t_title.setText(songinfo_title);
|
||
|
g_title.setXmlParam("y", integerToString(pos));
|
||
|
g_title.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_title);
|
||
|
|
||
|
// Artist
|
||
|
if (songinfo_artist != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_artist);
|
||
|
t_artist.setText(songinfo_artist);
|
||
|
g_artist.setXmlParam("y", integerToString(pos));
|
||
|
g_artist.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_artist);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
debugString(DEBUG_PREFIX " songinfo_streamtitle: " + songinfo_streamtitle, D_WTF);
|
||
|
if (songinfo_streamtitle != "")
|
||
|
{
|
||
|
int v = strsearch(songinfo_streamtitle, " - ");
|
||
|
if (v > 0) {
|
||
|
string s1 = strleft (songinfo_streamtitle, v);
|
||
|
string s2 = strright (songinfo_streamtitle, strlen(songinfo_streamtitle) - 3 - v);
|
||
|
|
||
|
// Title
|
||
|
if (n > 0) pos += getTextHeight(g_title);
|
||
|
t_title.setText(s2);
|
||
|
g_title.setXmlParam("y", integerToString(pos));
|
||
|
g_title.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_title);
|
||
|
|
||
|
// Artist
|
||
|
if (n > 0) pos += getTextHeight(g_artist);
|
||
|
if (songinfo_artist == "") t_artist.setText(s1);
|
||
|
else t_artist.setText(songinfo_artist);
|
||
|
g_artist.setXmlParam("y", integerToString(pos));
|
||
|
g_artist.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_artist);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// Title
|
||
|
if (n > 0) pos += getTextHeight(g_title);
|
||
|
t_title.setText(songinfo_streamtitle);
|
||
|
g_title.setXmlParam("y", integerToString(pos));
|
||
|
g_title.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_title);
|
||
|
|
||
|
// Artist
|
||
|
if (songinfo_artist != "") {
|
||
|
if (n > 0) pos += getTextHeight(g_artist);
|
||
|
t_artist.setText(songinfo_artist);
|
||
|
g_artist.setXmlParam("y", integerToString(pos));
|
||
|
g_artist.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_artist);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Stream Album
|
||
|
debugString(DEBUG_PREFIX " songinfo_album: " + songinfo_album, D_WTF);
|
||
|
if (songinfo_album != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_album);
|
||
|
t_album.setText(songinfo_album);
|
||
|
g_album.setXmlParam("y", integerToString(pos));
|
||
|
g_album.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_album);
|
||
|
}
|
||
|
|
||
|
// Stream Genre
|
||
|
String s = getPlayItemMetaDataString("streamgenre");
|
||
|
debugString(DEBUG_PREFIX " System.getPlayItemMetaDataString(streamgenre): " + s, D_WTF);
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_genre.setText(s);
|
||
|
cycleGenre.setXmlParam("w", "0");
|
||
|
cycle.addItem(g_genre);
|
||
|
if (n > 0) pos += getTextHeight(g_genre);
|
||
|
g_genre.setXmlParam("y", integerToString(pos));
|
||
|
g_genre.show();
|
||
|
n++;
|
||
|
}
|
||
|
|
||
|
// Set Stream Name
|
||
|
if (songinfo_streamName != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_sname);
|
||
|
t_sname.setText(songinfo_streamName);
|
||
|
g_sname.setXmlParam("y", integerToString(pos));
|
||
|
g_sname.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_sname);
|
||
|
}
|
||
|
|
||
|
// Stream URL (only visible if we have less than 4 lines till now)
|
||
|
debugString(DEBUG_PREFIX " songinfo_streamURL: " + songinfo_streamURL, D_WTF);
|
||
|
if (songinfo_streamURL != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_surl);
|
||
|
t_surl.setText(songinfo_streamURL);
|
||
|
g_surl.setXmlParam("y", integerToString(pos));
|
||
|
g_surl.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_surl);
|
||
|
}
|
||
|
|
||
|
// setCover either from a supplied url or from in-stream artwork or default to a generic image
|
||
|
if (songinfo_streamAlbumArt != "")
|
||
|
{
|
||
|
debugString(DEBUG_PREFIX " songinfo_streamAlbumArt: " + songinfo_streamAlbumArt, D_WTF);
|
||
|
l_albumart.setXMLParam("image", songinfo_streamAlbumArt);
|
||
|
l_albumart.setXMLParam("notfoundImage", "winamp.cover.notfound.xxl");
|
||
|
}
|
||
|
|
||
|
if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST || songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
|
||
|
{
|
||
|
if(songinfo_streamType == SONGINFO_STREAMTYPE_SHOUTCAST2)
|
||
|
{
|
||
|
if(l_albumart.isInvalid() && artRetries < 3)
|
||
|
{
|
||
|
if(!artRetries)
|
||
|
{
|
||
|
l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
|
||
|
}
|
||
|
artRetries += 1;
|
||
|
l_albumart.refresh();
|
||
|
if(!AlbumArt) loadPlaylistArtWork();
|
||
|
if(AlbumArt) AlbumArt.refresh();
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
l_albumart.setXMLParam("notfoundImage", WEBCOVER_SHOUTCAST);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ---------- Local Info ----------
|
||
|
else
|
||
|
{
|
||
|
debugString(DEBUG_PREFIX " -> No stream is detected! we do the normal procedure", D_WTF);
|
||
|
string s = songinfo_title;
|
||
|
if (s == "") songinfo_displayTitle;
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_title.setText(s);
|
||
|
g_title.setXmlParam("y", integerToString(pos));
|
||
|
g_title.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_title);
|
||
|
}
|
||
|
|
||
|
if (songinfo_artist != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_artist);
|
||
|
t_artist.setText(songinfo_artist);
|
||
|
g_artist.setXmlParam("y", integerToString(pos));
|
||
|
g_artist.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_artist);
|
||
|
}
|
||
|
|
||
|
if (songinfo_album != "")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_album);
|
||
|
t_album.setText(songinfo_album);
|
||
|
g_album.setXmlParam("y", integerToString(pos));
|
||
|
g_album.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_album);
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_track.getData() == "1")
|
||
|
{
|
||
|
s = getPlayitemMetaDataString("track");
|
||
|
if (s != "" && s != "-1")
|
||
|
{
|
||
|
// if tracknumber is like 1/9 we display 1 of 9
|
||
|
if (strsearch(s, "/") != -1)
|
||
|
{
|
||
|
s = getToken(s, "/", 0) + translate(" of ") + getToken(s, "/", 1);
|
||
|
}
|
||
|
if (n > 0) pos += getTextHeight(g_track);
|
||
|
t_track.setText(s);
|
||
|
g_track.setXmlParam("y", integerToString(pos));
|
||
|
g_track.show();
|
||
|
n++;
|
||
|
cycle.addItem(g_track);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_year.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("year");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_year.setText(s);
|
||
|
cycle.addItem(g_year);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_year);
|
||
|
g_year.setXmlParam("y", integerToString(pos));
|
||
|
g_year.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
cycleYear.show();
|
||
|
g_year.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "year")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_track.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_year.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_genre.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("genre");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_genre.setText(s);
|
||
|
cycle.addItem(g_genre);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_genre);
|
||
|
g_genre.setXmlParam("y", integerToString(pos));
|
||
|
g_genre.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
cycleGenre.show();
|
||
|
g_genre.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "genre")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_genre.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_disc.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("disc");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_disc.setText(s);
|
||
|
cycle.addItem(g_disc);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_disc);
|
||
|
g_disc.setXmlParam("y", integerToString(pos));
|
||
|
g_disc.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
if (g_genre.getGuiY() == pos) cycleGenre.show();
|
||
|
cycleDisc.show();
|
||
|
g_disc.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "disc")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
if (g_genre.getGuiY() == pos) g_genre.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_disc.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_albumartist.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("albumartist");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_albumartist.setText(s);
|
||
|
cycle.addItem(g_albumartist);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_albumartist);
|
||
|
g_albumartist.setXmlParam("y", integerToString(pos));
|
||
|
g_albumartist.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
if (g_genre.getGuiY() == pos) cycleGenre.show();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
cycleAlbumartist.show();
|
||
|
g_albumartist.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "albumartist")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
if (g_genre.getGuiY() == pos) g_genre.hide();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_albumartist.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_composer.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("composer");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_composer.setText(s);
|
||
|
cycle.addItem(g_composer);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_composer);
|
||
|
g_composer.setXmlParam("y", integerToString(pos));
|
||
|
g_composer.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
if (g_genre.getGuiY() == pos) cycleGenre.show();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
|
||
|
cycleComposer.show();
|
||
|
g_composer.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "composer")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
if (g_genre.getGuiY() == pos) g_genre.hide();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_composer.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_publisher.getData() == "1")
|
||
|
{
|
||
|
s = getPlayItemMetaDataString("publisher");
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_publisher.setText(s);
|
||
|
cycle.addItem(g_publisher);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_publisher);
|
||
|
g_publisher.setXmlParam("y", integerToString(pos));
|
||
|
g_publisher.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
if (g_genre.getGuiY() == pos) cycleGenre.show();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
|
||
|
if (g_composer.getGuiY() == pos) cycleComposer.show();
|
||
|
cyclePublisher.show();
|
||
|
g_publisher.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "publisher")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
if (g_genre.getGuiY() == pos) g_genre.hide();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
|
||
|
if (g_composer.getGuiY() == pos) g_composer.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_publisher.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (infocomp_show_format.getData() == "1")
|
||
|
{
|
||
|
s = system.getDecoderName(system.getPlayItemString());
|
||
|
if (s != "")
|
||
|
{
|
||
|
t_format.setText(s);
|
||
|
cycle.addItem(g_format);
|
||
|
if ((!_rating && n < maxlines) || (_rating && n < maxlines-1))
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_format);
|
||
|
g_format.setXmlParam("y", integerToString(pos));
|
||
|
g_format.show();
|
||
|
n++;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) cycleTrack.show();
|
||
|
if (g_year.getGuiY() == pos) cycleYear.show();
|
||
|
if (g_genre.getGuiY() == pos) cycleGenre.show();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_disc.getGuiY() == pos) cycleDisc.show();
|
||
|
if (g_albumartist.getGuiY() == pos) cycleAlbumartist.show();
|
||
|
if (g_composer.getGuiY() == pos) cycleComposer.show();
|
||
|
if (g_publisher.getGuiY() == pos) cyclePublisher.show();
|
||
|
cycleFormat.show();
|
||
|
g_format.setXmlParam("y", integerToString(pos));
|
||
|
if (_cycle) cycler.start();
|
||
|
else if (getPrivateString (getSkinName(), "FileInfo_usersel", "") == "format")
|
||
|
{
|
||
|
if (g_Track.getGuiY() == pos) g_Track.hide();
|
||
|
if (g_year.getGuiY() == pos) g_year.hide();
|
||
|
if (g_genre.getGuiY() == pos) g_genre.hide();
|
||
|
if (g_albumartist.getGuiY() == pos) g_albumartist.hide();
|
||
|
if (g_composer.getGuiY() == pos) g_composer.hide();
|
||
|
if (g_publisher.getGuiY() == pos) g_publisher.hide();
|
||
|
startwith = cycle.getNumitems() - 1;
|
||
|
g_format.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// check the media library status as well as input plug-in support
|
||
|
// to help determine if we show the rating control or not for here
|
||
|
if (_rating)
|
||
|
{
|
||
|
if (!HAVE_ML)
|
||
|
{
|
||
|
s = getPlayitemMetaDataString("rateable");
|
||
|
if (s != "" && s == "1")
|
||
|
{
|
||
|
if (n > 0) pos += getTextHeight(g_rating);
|
||
|
g_rating.setXmlParam("y", integerToString(pos));
|
||
|
g_rating.show();
|
||
|
}
|
||
|
} else {
|
||
|
if (n > 0) pos += getTextHeight(g_rating);
|
||
|
g_rating.setXmlParam("y", integerToString(pos));
|
||
|
g_rating.show();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (n==0)
|
||
|
{
|
||
|
showBranding();
|
||
|
}
|
||
|
debugString(DEBUG_PREFIX "}", D_WTF);
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
// Item Cycler: Only active if we have more items to display as lines
|
||
|
// if you click on a cycle line, this group is saved as g_target
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
cycler.onTimer ()
|
||
|
{
|
||
|
// Important: stop the cycler if branding is visible
|
||
|
if (l_branding.isvisible()) cycler.stop();
|
||
|
if (infocomp_cycle.getData() == "0" && !quick_change) { cycler.stop(); return; }
|
||
|
|
||
|
// g_target is defined --> we save the currently shown line as g_target
|
||
|
if (!g_target)
|
||
|
{
|
||
|
// check if rating is visible...
|
||
|
if (infocomp_show_rating.getData() == "1")
|
||
|
{
|
||
|
// if auto-cycler is disabled, and not the default line is shown, the line number is stored in startwith.
|
||
|
if (startwith)
|
||
|
{
|
||
|
// resort the cycle list and set startwith to 0
|
||
|
for ( int i = maxlines-2; i < startwith; i++ )
|
||
|
{
|
||
|
g_target = cycle.enumItem(maxlines-2);
|
||
|
cycle.removeItem(maxlines-2);
|
||
|
cycle.addItem(g_target);
|
||
|
}
|
||
|
startwith = 0;
|
||
|
}
|
||
|
|
||
|
// save g_target and remove from cycle
|
||
|
g_target = cycle.enumItem(maxlines-2);
|
||
|
cycle.removeItem(maxlines-2);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (startwith)
|
||
|
{
|
||
|
for ( int i = maxlines-1; i < startwith; i++ )
|
||
|
{
|
||
|
g_target = cycle.enumItem(maxlines-1);
|
||
|
cycle.removeItem(maxlines-1);
|
||
|
cycle.addItem(g_target);
|
||
|
}
|
||
|
startwith = 0;
|
||
|
}
|
||
|
g_target = cycle.enumItem(maxlines-1);
|
||
|
cycle.removeItem(maxlines-1);
|
||
|
}
|
||
|
// put g_target at the end of cycle
|
||
|
cycle.addItem(g_target);
|
||
|
}
|
||
|
|
||
|
// otherwise g_target is the last item of cycle
|
||
|
else g_target = cycle.enumItem(cycle.getNumItems()-1);
|
||
|
|
||
|
// TODO verify fix from pieter!
|
||
|
if (g_target == null)
|
||
|
return;
|
||
|
|
||
|
|
||
|
// fade out g_target
|
||
|
g_target.setTargetA(0);
|
||
|
g_target.setTargetY(g_target.getGuiY());
|
||
|
if (!quick_change) g_target.setTargetSpeed(0.25); // fade or quick show/hide
|
||
|
else g_target.setTargetSpeed(0);
|
||
|
g_target.gotoTarget();
|
||
|
}
|
||
|
|
||
|
g_target.onTargetReached ()
|
||
|
{
|
||
|
if (g_target.getAlpha() == 0)
|
||
|
{
|
||
|
// setback g_target to default values
|
||
|
g_target.hide();
|
||
|
g_target.setAlpha(255);
|
||
|
// detect if rating stars are visible and store the line tb shown in g_target
|
||
|
if (infocomp_show_rating.getData() == "1")
|
||
|
{
|
||
|
g_target = cycle.enumItem(maxlines-2);
|
||
|
cycle.removeItem(maxlines-2);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
g_target = cycle.enumItem(maxlines-1);
|
||
|
cycle.removeItem(maxlines-1);
|
||
|
}
|
||
|
// better set g-target alpha to 0 and, show this line and fade in
|
||
|
g_target.setAlpha(0);
|
||
|
g_target.show();
|
||
|
g_target.setTargetA(255);
|
||
|
g_target.setTargetY(getGuiY());
|
||
|
if (!quick_change) g_target.setTargetSpeed(0.25); // fade or quick show/hide
|
||
|
else
|
||
|
{
|
||
|
g_target.setTargetSpeed(0);
|
||
|
string v = getToken(g_target.getID(), ".", 2);
|
||
|
setPrivateString (getSkinName(), "FileInfo_usersel", v); // save current line
|
||
|
}
|
||
|
g_target.gotoTarget();
|
||
|
// add g_target to end of cycle
|
||
|
cycle.addItem(g_target);
|
||
|
if (infocomp_cycle.getData() == "1" && !cycler.isRunning()) cycler.start(); // check if we should start cycler
|
||
|
quick_change = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Automatic cycling through items on/off
|
||
|
infocomp_cycle.onDataChanged ()
|
||
|
{
|
||
|
if (l_branding.isVisible()) return;
|
||
|
if (getData() == "1")
|
||
|
{
|
||
|
if (cycler_paused) cycler.start();
|
||
|
else loadFileInfo();
|
||
|
cycler_paused = 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (cycler.isRunning()) cycler_paused = 1;
|
||
|
cycler.stop();
|
||
|
if (g_track.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "track");
|
||
|
else if (g_year.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "year");
|
||
|
else if (g_genre.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "genre");
|
||
|
else if (g_publisher.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "publisher");
|
||
|
else if (g_albumartist.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "albumartist");
|
||
|
else if (g_composer.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "composer");
|
||
|
else if (g_format.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "format");
|
||
|
else if (g_disc.isVisible()) setPrivateString (getSkinName(), "FileInfo_usersel", "disc");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Visual Stuff
|
||
|
CycleObject.onEnterArea ()
|
||
|
{
|
||
|
CycleObject.getParent().findObject("label").setAlpha(255);
|
||
|
}
|
||
|
|
||
|
CycleObject.onLeaveArea ()
|
||
|
{
|
||
|
CycleObject.getParent().findObject("label").setAlpha(180);
|
||
|
}
|
||
|
|
||
|
CycleObject.onLeftButtonDown (int x, int y)
|
||
|
{
|
||
|
CycleObject.getParent().findObject("label").setAlpha(220);
|
||
|
}
|
||
|
|
||
|
CycleObject.onLeftButtonUp (int x, int y)
|
||
|
{
|
||
|
if (getAlpha() < 255) return;
|
||
|
|
||
|
setAlpha(255);
|
||
|
|
||
|
if (quick_change) return;
|
||
|
quick_change = 1;
|
||
|
|
||
|
cycler.onTimer ();
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
// If user clicks on a link item (artist, album, title), let's start a web search
|
||
|
// Therefore we will send an action to the group "sui.content". This action is either "browser_navigate" or
|
||
|
// "browser_search". This action is then proccessed by suicore.maki (showing browser) and then (again) delivered
|
||
|
// to browser.maki (from suicore.maki)
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
/*
|
||
|
|
||
|
LinkObject.onEnterArea ()
|
||
|
{
|
||
|
LinkObject.getParent().findObject("label").setAlpha(255);
|
||
|
}
|
||
|
|
||
|
LinkObject.onLeaveArea ()
|
||
|
{
|
||
|
LinkObject.getParent().findObject("label").setAlpha(180);
|
||
|
}
|
||
|
|
||
|
LinkObject.onLeftButtonDown (int x, int y)
|
||
|
{
|
||
|
LinkObject.getParent().findObject("label").setAlpha(220);
|
||
|
}
|
||
|
|
||
|
LinkObject.onLeftButtonUp (int x, int y)
|
||
|
{
|
||
|
if (getAlpha() < 255) return;
|
||
|
|
||
|
setAlpha(255);
|
||
|
|
||
|
// 5.56: special handling for url/streamname
|
||
|
if (LinkObject == linkSurl || LinkObject == linkSname)
|
||
|
{
|
||
|
String nav = t_surl.getText();
|
||
|
group sui = scriptGroup.getParentLayout().findObject("sui.content");
|
||
|
if (nav != "")
|
||
|
{
|
||
|
sui.sendAction ("browser_navigate", nav, 0, 0, 0, 0);
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
string s;
|
||
|
if (infocomp_browser.getData() == "1")
|
||
|
{
|
||
|
if (LinkObject == linkArtist) s = t_artist.getText();
|
||
|
if (LinkObject == linkAlbum) s = t_artist.getText() + " " + t_album.getText();
|
||
|
if (LinkObject == linkTitle) s = t_artist.getText() + " " + t_title.getText();
|
||
|
|
||
|
if (s == "") return;
|
||
|
|
||
|
group sui = scriptGroup.getParentLayout().findObject("sui.content");
|
||
|
sui.sendAction ("browser_search", s, 0, 0, 0, 0);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (stationLink != "" && ( LinkObject == linkSname || LinkObject == linkSurl))
|
||
|
{
|
||
|
group sui = scriptGroup.getParentLayout().findObject("sui.content");
|
||
|
sui.sendAction ("browser_navigate", stationLink, 0, 0, 0, 0);
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
String icid = "fileinfotitle";
|
||
|
if (LinkObject == linkArtist) icid = "fileinfoartist";
|
||
|
if (LinkObject == linkAlbum) icid = "fileinfoalbum";
|
||
|
|
||
|
String artist = t_artist.getText();
|
||
|
if (artist == "") return;
|
||
|
System.navigateUrlBrowser("http://client.winamp.com/nowplaying/artist/?artistName=" + artist);
|
||
|
}
|
||
|
|
||
|
*/
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
// Rating System
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
System.onCurrentTrackRated (int rating)
|
||
|
{
|
||
|
refreshRating(rating);
|
||
|
}
|
||
|
|
||
|
RatingButton.onLeftButtonDown (int x, int y)
|
||
|
{
|
||
|
RatingButton.setAlpha(255);
|
||
|
RatingButton.getParent().findObject("label").setAlpha(220);
|
||
|
}
|
||
|
|
||
|
RatingButton.onleftClick ()
|
||
|
{
|
||
|
int rating = stringToInteger(getToken(getId(), ".", 1));
|
||
|
refreshRating(rating);
|
||
|
setCurrentTrackRating(rating);
|
||
|
for ( int i = 1; i <= rating; i++ )
|
||
|
{
|
||
|
guiobject o = ratingStars.enumItem(i-1);
|
||
|
o.setAlpha(255);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
RatingButton.onEnterArea ()
|
||
|
{
|
||
|
RatingButton.getParent().findObject("label").setAlpha(255);
|
||
|
|
||
|
int pos = stringToInteger(getToken(getId(), ".", 1));
|
||
|
int rating = System.getCurrentTrackRating();
|
||
|
|
||
|
star1.hide();
|
||
|
star2.hide();
|
||
|
star3.hide();
|
||
|
star4.hide();
|
||
|
star5.hide();
|
||
|
|
||
|
if (pos >= 1) star1.show();
|
||
|
if (pos >= 2) star2.show();
|
||
|
if (pos >= 3) star3.show();
|
||
|
if (pos >= 4) star4.show();
|
||
|
if (pos >= 5) star5.show();
|
||
|
|
||
|
if (pos > rating)
|
||
|
{
|
||
|
for ( int i = 1; i <= 5; i++ )
|
||
|
{
|
||
|
guiobject o = ratingStars.enumItem(i-1);
|
||
|
if ( i > pos || i <= rating)
|
||
|
{
|
||
|
o.setAlpha(255);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
o.setAlpha(0);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
rate1.setAlpha(255);
|
||
|
rate2.setAlpha(255);
|
||
|
rate3.setAlpha(255);
|
||
|
rate4.setAlpha(255);
|
||
|
rate5.setAlpha(255);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
RatingButton.onLeaveArea ()
|
||
|
{
|
||
|
RatingButton.getParent().findObject("label").setAlpha(180);
|
||
|
|
||
|
star1.hide();
|
||
|
star2.hide();
|
||
|
star3.hide();
|
||
|
star4.hide();
|
||
|
star5.hide();
|
||
|
rate1.setAlpha(255);
|
||
|
rate2.setAlpha(255);
|
||
|
rate3.setAlpha(255);
|
||
|
rate4.setAlpha(255);
|
||
|
rate5.setAlpha(255);
|
||
|
}
|
||
|
|
||
|
refreshRating (int rating)
|
||
|
{
|
||
|
rate1.setActivated(rating >= 1);
|
||
|
rate2.setActivated(rating >= 2);
|
||
|
rate3.setActivated(rating >= 3);
|
||
|
rate4.setActivated(rating >= 4);
|
||
|
rate5.setActivated(rating >= 5);
|
||
|
}
|
||
|
|
||
|
RatingButton.onRightButtonUp (int x, int y)
|
||
|
{
|
||
|
popupmenu rmenu = new popupmenu;
|
||
|
rmenu.addcommand("Remove Rating", 1, 0,0);
|
||
|
int result = rmenu.popAtMouse();
|
||
|
if (result == 1)
|
||
|
{
|
||
|
setCurrentTrackRating(0);
|
||
|
refreshRating(0);
|
||
|
}
|
||
|
complete;
|
||
|
}
|
||
|
|
||
|
t_rating.onTextChanged (String newtxt)
|
||
|
{
|
||
|
int w = t_rating.getAutoWidth();
|
||
|
|
||
|
group g = g_rating.findObject("infodisplay.line.rating.stars");
|
||
|
g.setXmlParam("x", integerToString(w));
|
||
|
g.setXmlParam("w", integerToString(-w));
|
||
|
rate0.setXmlParam("w", integerToString(w));
|
||
|
}
|
||
|
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
// Winamp Branding
|
||
|
//----------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
showBranding()
|
||
|
{
|
||
|
// stop cycler and hide all infolines
|
||
|
cycler.stop();
|
||
|
g_cover.setAlpha(0);
|
||
|
g_rating.hide();
|
||
|
g_title.hide();
|
||
|
g_album.hide();
|
||
|
g_artist.hide();
|
||
|
g_year.hide();
|
||
|
g_genre.hide();
|
||
|
g_track.hide();
|
||
|
g_publisher.hide();
|
||
|
g_composer.hide();
|
||
|
g_format.hide();
|
||
|
g_albumartist.hide();
|
||
|
g_surl.hide();
|
||
|
g_sname.hide();
|
||
|
g_disc.hide();
|
||
|
|
||
|
if (ic_vis_fileinfo.getData() == "1")
|
||
|
{
|
||
|
_BrandingsetXSpace((g_cover.getGuiW() + 2) / 2);
|
||
|
_BrandingsetWSpace(-2);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
_BrandingsetXSpace(2);
|
||
|
_BrandingsetWSpace(-2);
|
||
|
}
|
||
|
_BrandinghandleResize();
|
||
|
l_branding.show();
|
||
|
}
|
||
|
|
||
|
_BrandingsizeError (boolean iserror)
|
||
|
{
|
||
|
if (iserror)
|
||
|
{
|
||
|
l_branding.setAlpha(0);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
l_branding.setAlpha(255);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Hide branding of we start playback
|
||
|
System.onPlay ()
|
||
|
{
|
||
|
if (ic_fileinfo.getData() == "1" && removePath(getPlayItemString()) == "demo.mp3")
|
||
|
{
|
||
|
if (getPlayitemmetadatastring("artist") == "DJ Mike Llama" && getplayitemmetadatastring("title") == "Llama Whippin' Intro")
|
||
|
{
|
||
|
showBranding();
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
refreshRating(System.getCurrentTrackRating());
|
||
|
loadFileInfo();
|
||
|
}
|
||
|
|
||
|
ic_fileinfo.onDataChanged ()
|
||
|
{
|
||
|
if (getData() == "0")
|
||
|
{
|
||
|
cycler.stop();
|
||
|
l_branding.hide();
|
||
|
}
|
||
|
else if (l_branding.isVisible())
|
||
|
{
|
||
|
showBranding();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
loadFileInfo();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ic_cover_fileinfo.onDataChanged ()
|
||
|
{
|
||
|
if (l_branding.isVisible())
|
||
|
{
|
||
|
showBranding();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ic_vis_fileinfo.onDataChanged ()
|
||
|
{
|
||
|
if (l_branding.isVisible())
|
||
|
{
|
||
|
showBranding();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
getTextHeight (InfoLine gn)
|
||
|
{
|
||
|
return stringToInteger(gn.getXmlParam("h"));
|
||
|
}
|