12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277 |
- /*---------------------------------------------------
- -----------------------------------------------------
- Filename: fileinfo.m
- Version: 3.3
- Type: maki
- Date: 10. Aug. 2007 - 20:42
- Author: Martin Poehlmann aka Deimos
- E-Mail: [email protected]
- 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"));
- }
|