123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827 |
- /*---------------------------------------------------
- -----------------------------------------------------
- Filename: notifier.m
- Version: 1.3
- Type: maki/notifier
- Date: 14. Mrz. 2007 - 14:50
- Author: Martin Poehlmann aka Deimos
- E-Mail: [email protected]
- Internet: www.skinconsortium.com
- www.martin.deimos.de.vu
- Note: Based on notifier.m from Winamp Modern
- -----------------------------------------------------
- // Workaround for Winamp bug by Pieter Nieuwoudt (pjn123) - [email protected] \\
- Temparary fix for the Winamp bug where the...
- extern AlbumArtLayer.onAlbumArtLoaded(boolean success);
- ...event stops working.
- Please note that this workaround only kicks in if the above event stops responding.
- If you want to test the workaround, just add // after the FORCE_BUG_MODE below.
- Once the above event stop responding the first notifier trigger will be delayed (3 sec),
- but after that there will be no delays anymore.
- To remove this fix in the future just search //BUGFIX for steps ;)
- -----------------------------------------------------
- ---------------------------------------------------*/
- #define FORCE_BUG_MODE
- #include <lib/std.mi>
- #include attribs/init_notifier.m
- #define DEBUG
- #define DebugString //
- Function reset();
- Function createNotifier(boolean cancel);
- Function showNotifier(Int w);
- Function onNext();
- function cancelAnimation();
- Function Int fillNextTrackInfo(String corneroverride);
- Function Int fillCustomInfo(String customstring);
- Function prepareAlbumArtNotifier();
- Function checkPref(int bypassfs);
- Function getArtist();
- Function onAlbumArt(Boolean success);
- Global Container notifier_container;
- Global Layout notifier_layout;
- Global Timer notifier_timer;
- Global String last_autotitle, last_autopis, cur_status;
- Global Boolean b_tohide = 0;
- Global boolean handleAACalback = false;
- Global AlbumArtLayer cover;
- Global Boolean triggerBug; //BUGFIX remove this
- Global Timer fallbackTempFix; //BUGFIX remove this
- #define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
- // ------------------------------------------------------------------------------
- // init
- // ------------------------------------------------------------------------------
- System.onScriptLoaded() {
- initAttribs_notifier();
- notifier_timer = new Timer;
- fallbackTempFix = new Timer; //BUGFIX remove this
- fallbackTempFix.setDelay(3000); //BUGFIX remove this / Time that onAlbumArtLoaded have to execute before bug mode is ON
- }
- // ------------------------------------------------------------------------------
- // shutdown
- // ------------------------------------------------------------------------------
- System.onScriptUnloading() {
- delete notifier_timer;
- delete fallbackTempFix; //BUGFIX remove this
- }
- // ------------------------------------------------------------------------------
- // called by the system when the global hotkey for notification is pressed
- // ------------------------------------------------------------------------------
- System.onShowNotification() {
- //if (checkPref(1)) return; --mp: if we push the hotkey, we want to show the notifier, no matter what the pref settings are.
- createNotifier(false);
- if (getStatus() == STATUS_PLAYING) cur_status = "Playing";
- if (getStatus() == STATUS_PAUSED) cur_status = "Playback Paused";
- if (getStatus() == STATUS_STOPPED) cur_status = "Playback Stopped";
- prepareAlbumArtNotifier();
- complete; // prevents other scripts from getting the message
- return 1; // tells anybody else that might watch the returned value that, yes, we implemented that
- }
- // ------------------------------------------------------------------------------
- // called by the system when the title for the playing item changes, this could be the result of the player
- // going to the next track, or of an update in the track title
- // ------------------------------------------------------------------------------
- // mpdeimos> seems like we get an onTitleChange callback sometimes on pause/resume, d'oh
- Global String lastUrl = 0;
- System.onTitleChange(String newtitle) {
- if (getPlayItemMetaDataString("streamtype") == "0" && lastUrl == getPlayItemString())
- {
- return;
- }
- lastUrl = getPlayItemString();
-
- if (StrLeft(newtitle, 1) == "[") {
- if (StrLeft(newtitle, 7) == "[Buffer" ||
- StrLeft(newtitle, 4) == "[ICY") return;
- }
- //String newpis = System.getPlayItemString();
- //if (last_autotitle == newtitle && last_autopis == newpis) return;
- //last_autotitle = newtitle;
- //last_autopis = newpis;
- DebugString("onTitleChange: "+getPlayItemString(), 9);
- onNext();
- fallbackTempFix.stop(); //BUGFIX remove later
- fallbackTempFix.start(); //BUGFIX remove later
- }
- // ------------------------------------------------------------------------------
- // called by the system when the user clicks the next button
- // ------------------------------------------------------------------------------
- onNext() {
- if (checkPref(0)) return;
- createNotifier(false);
- cur_status = "";
- prepareAlbumArtNotifier();
- }
- // ------------------------------------------------------------------------------
- // called by the system when the user clicks the play button
- // ------------------------------------------------------------------------------
- System.onPlay() {
- if (checkPref(0)) return;
- createNotifier(false);
- cur_status = "Playing";
- prepareAlbumArtNotifier();
- }
- // ------------------------------------------------------------------------------
- // called by the system when the user clicks the pause button
- // ------------------------------------------------------------------------------
- System.onPause() {
- fallbackTempFix.stop();
- if (checkPref(0)) return;
- DebugString("onPause",9);
- createNotifier(true);
- showNotifier(fillCustomInfo("Playback Paused"));
- }
- // ------------------------------------------------------------------------------
- // called by the system when the user clicks the pause button again
- // ------------------------------------------------------------------------------
- System.onResume() {
- if (checkPref(0)) return;
- DebugString("onResume",9);
- createNotifier(false);
- cur_status = "Resuming Playback";
- prepareAlbumArtNotifier();
- }
- // ------------------------------------------------------------------------------
- // called by the system when the user clicks the play button
- // ------------------------------------------------------------------------------
- System.onStop() {
- fallbackTempFix.stop();
- if (checkPref(0)) return;
- createNotifier(true);
- showNotifier(fillCustomInfo("End of Playback"));
- }
- // ------------------------------------------------------------------------------
- // checks if we should display anything
- // ------------------------------------------------------------------------------
- Int checkPref(int bypassfs) {
- if (!bypassfs && notifier_hideinfullscreen_attrib.getData() == "1" && isVideoFullscreen()) return 1;
- if (notifier_never_attrib.getData() == "1") return 1;
- if (notifier_minimized_attrib.getData() == "1" && !isMinimized()) return 1;
- if (notifier_windowshade_attrib.getData() == "1") {
- if (isMinimized()) return 0;
- Container c = getContainer("main");
- if (!c) return 1;
- Layout l = c.getCurLayout();
- if (!l) return 1;
- if (l.getId() != "shade") return 1;
- }
- return 0;
- }
- // ------------------------------------------------------------------------------
- // fade in/out completed
- // ------------------------------------------------------------------------------
- // TODO: on dual monitors the notif stays on 2nd monitor :(
- notifier_layout.onTargetReached() {
- if (b_tohide) {
- notifier_layout.setAlpha(0);
- reset();
- return;
- }
- int a = notifier_layout.getAlpha();
- if (a == 255 && !b_tohide) {
- notifier_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
- notifier_timer.start();
- }
- else if (a == 0) {
- reset();
- }
- }
- // ------------------------------------------------------------------------------
- // hold time elapsed
- // ------------------------------------------------------------------------------
- notifier_timer.onTimer() {
- stop();
- if (notifier_fdout_alpha.getData() == "1") {
- if (notifier_layout.isTransparencySafe()) {
- notifier_layout.setTargetA(0);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeouttime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- return;
- }
- else {
- reset();
- return;
- }
- }
- else if (notifier_fdout_vslide.getData() == "1") {
- b_tohide = 1;
- int sy;
- int geth;
- Layout m = getContainer("main").getCurLayout();
- if (notifier_loc_vport_attrib.getData() == "1")
- {
- geth = getViewportHeightFromGuiObject(m);
- }
- else
- {
- geth = getMonitorHeightFromGuiObject(m);
- }
- if (notifier_layout.getGuiY() == 2) sy = -80;
- else sy = geth + 80;
- notifier_layout.setTargetY(sy);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- return;
- }
- else {
- if (b_tohide) return;
- b_tohide = 1;
- int sx;
- int getw;
- Layout m = getContainer("main").getCurLayout();
- if (notifier_loc_vport_attrib.getData() == "1") {
- getw = getViewportWidthFromGuiObject(m);
- }
- else {
- getw = getMonitorWidthFromGuiObject(m);
- }
- if (notifier_layout.getGuiX() == 2) sx = -notifier_layout.getWidth();
- else sx = getw + notifier_layout.getWidth();
- notifier_layout.setTargetX(sx);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- return;
- }
- }
- // ------------------------------------------------------------------------------
- // when notifier is clicked, bring back the app from minimized state if its minimized and focus it
- // ------------------------------------------------------------------------------
- notifier_layout.onLeftButtonDown(int x, int y) {
- cancelAnimation();
- restoreApplication();
- activateApplication();
- /*if (notifier_opennowplaying_attrib.getData() == "1")
- {
- String artist = getArtist();
- if (artist == "") return;
- System.navigateUrlBrowser("http://client.winamp.com/nowplaying/artist/?icid=notifierbento&artistName=" + artist);
- }*/
- reset();
- }
- notifier_layout.onRightButtonUp(int x, int y) {
- cancelAnimation();
- reset();
- complete;
- return;
- }
- //TODO merge w/ code below
- String getArtist ()
- {
- String artist = getPlayItemMetaDataString("artist");
- if (artist == "") artist = getPlayItemMetaDataString("uvox/artist");
- if (artist == "") artist = getPlayItemMetaDataString("cbs/artist");
- if (artist == "") artist = getPlayItemMetaDataString("streamtitle");
- if (artist == "") artist = getPlayItemDisplayTitle();
- return artist;
- }
- // ------------------------------------------------------------------------------
- // close the notifier window, destroys the container automatically because it's dynamic
- // ------------------------------------------------------------------------------
- reset() {
- notifier_container.close();
- notifier_container = NULL;
- notifier_layout = NULL;
- handleAACalback = FALSE;
- }
- // ------------------------------------------------------------------------------
- createNotifier(boolean cancel) {
- if (notifier_container == NULL) {
- notifier_container = newDynamicContainer("notifier");
- if (!notifier_container) return; // reinstall duh!
- if (isDesktopAlphaAvailable())
- notifier_layout = notifier_container.getLayout("desktopalpha");
- else
- notifier_layout = notifier_container.getLayout("normal");
- if (!notifier_layout) return; // reinstall twice, man
- } else if (cancel) {
- cancelAnimation();
- }
- }
- cancelAnimation()
- {
- notifier_layout.cancelTarget();
- notifier_timer.stop();
- }
- // ------------------------------------------------------------------------------
- showNotifier(int w) {
- DebugString(IntegerToString(w), 0);
- b_tohide = 0;
- int x; int y;
- int sy; int sx;
- w = w + 30;
- int getx, gety, geth, getw;
- Layout m = getContainer("main").getCurLayout();
- if (notifier_loc_vport_attrib.getData() == "1")
- {
- getx = getViewportLeftFromGuiObject(m);
- gety = getViewportTopFromGuiObject(m);
- geth = getViewportHeightFromGuiObject(m);
- getw = getViewportWidthFromGuiObject(m);
- }
- else
- {
- getx = getMonitorLeftFromGuiObject(m);
- gety = getMonitorTopFromGuiObject(m);
- geth = getMonitorHeightFromGuiObject(m);
- getw = getMonitorWidthFromGuiObject(m);
- }
- if (notifier_loc_br_attrib.getData() == "1") {
- x = getw + getx - w - 2;
- y = geth + gety - 80 - 2;
- }
- else if (notifier_loc_bl_attrib.getData() == "1") {
- x = getx + 2;
- y = geth + gety - 80 - 2;
- }
- else if (notifier_loc_bc_attrib.getData() == "1") {
- x = getx + ((getw - w) / 2);
- y = geth + gety - 80 - 2;
- }
- else if (notifier_loc_tr_attrib.getData() == "1") {
- x = getw + getx - w - 2;
- y = 2;
- }
- else if (notifier_loc_tc_attrib.getData() == "1") {
- x = getx + ((getw - w) / 2);
- y = 2;
- }
- else {
- x = getx + 2;
- y = 2;
- }
- if (notifier_fdin_alpha.getData() == "1") {
- if (!notifier_layout.isVisible()) notifier_layout.resize(x, y, w, 80);
- else
- {
- notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
- }
- if (notifier_layout.isTransparencySafe()) {
- notifier_layout.show();
- notifier_layout.settargetA(255);
- notifier_layout.setTargetX(x);
- notifier_layout.setTargetY(y);
- notifier_layout.setTargetW(w);
- notifier_layout.setTargetH(80);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- } else {
- notifier_layout.setAlpha(255);
- notifier_layout.show();
- notifier_layout.settargetA(255);
- notifier_layout.setTargetX(x);
- notifier_layout.setTargetY(y);
- notifier_layout.setTargetW(w);
- notifier_layout.setTargetH(80);
- notifier_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
- notifier_timer.start();
- }
- }
- else if (notifier_fdin_vslide.getData() == "1") {
- if (y == 2) sy = -80;
- else sy = geth + 80;
- if (!notifier_layout.isVisible()) notifier_layout.resize(x, sy, w, 80);
- else
- {
- notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
- }
- notifier_layout.show();
- notifier_layout.setAlpha(255);
- notifier_layout.setTargetX(x);
- notifier_layout.setTargetY(y);
- notifier_layout.setTargetW(w);
- notifier_layout.setTargetH(80);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- }
- else {
- if (x < (getw + getx)/2) sx = -w;
- else sx = getw + w;
- if (!notifier_layout.isVisible()) {
- notifier_layout.resize(sx, y, w, 80);
- }
- else {
- notifier_layout.resize(notifier_layout.getguiX(), y, notifier_layout.getGuiW(), 80);
- }
- notifier_layout.show();
- notifier_layout.setAlpha(255);
- notifier_layout.setTargetX(x);
- notifier_layout.setTargetY(y);
- notifier_layout.setTargetW(w);
- notifier_layout.setTargetH(80);
- notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeintime_attrib.getData()) / 1000);
- notifier_layout.gotoTarget();
- }
- }
- // ------------------------------------------------------------------------------
- prepareAlbumArtNotifier()
- {
- if (!notifier_layout) return;
- Group g_albumart = notifier_layout.findObject("notifier.albumart");
- DebugString("prepareAlbumArtNotifier: handleAACalback="+integerToString(handleAACalback), 9);
- if (g_albumart)
- {
- cover = g_albumart.findObject("notifier.cover");
- DebugString("prepareAlbumArtNotifier: cover.isLoading="+integerToString(cover.isLoading()), 9);
- DebugString("prepareAlbumArtNotifier: cover.isInvalid="+integerToString(cover.isInvalid()), 9);
- handleAACalback = true;
- cover.refresh();
- }
- }
- cover.onAlbumArtLoaded(boolean success)
- {
- /*
- Created a seperate function for the code that was here because for some reason I couldn't force this
- event (from the fallbackTempFix.onTimer) with cover.onAlbumArtLoaded(success) after the Winamp bug appears.
- Weird, yes.
- */
- FORCE_BUG_MODE onAlbumArt(success);
- }
- // ------------------------------------------------------------------------------
- Int fillNextTrackInfo(String corneroverride) {
- Int maxv = 0;
- Int stream = 0;
- if (!notifier_layout) return 0;
- Group g_text = notifier_layout.findObject("notifier.text");
- Group g_albumart = notifier_layout.findObject("notifier.albumart");
- Text plentry = g_text.findObject("plentry");
- Text nexttrack = g_text.findObject("nexttrack");
- Text _title = g_text.findObject("title");
- Text album = g_text.findObject("album");
- Text artist = g_text.findObject("artist");
- Text endofplayback = notifier_layout.findObject("endofplayback");
- Text s_plentry = g_text.findObject("plentry.shadow");
- Text s_nexttrack = g_text.findObject("nexttrack.shadow");
- Text s_title = g_text.findObject("title.shadow");
- Text s_album = g_text.findObject("album.shadow");
- Text s_artist = g_text.findObject("artist.shadow");
- Text s_endofplayback = notifier_layout.findObject("endofplayback.shadow");
- DebugString("got callback for " + getPlayItemString(), 0);
- // Get Stream Name - if no stream returns ""
- string s = getPlayItemMetaDataString("streamname");
- string stype = getPlayItemMetaDataString("streamtype"); //"streamtype" will return "2" for SHOUTcast and "5" for SHOUTcast 2
- if (stype == "2" || stype == "5") stream = 1;
- if (endofplayback) endofplayback.hide();
- if (s_endofplayback) s_endofplayback.hide();
- if (plentry)
- {
- plentry.setText(integerToString(getPlaylistIndex()+1)+translate(" of ")+integerToString(getPlaylistLength()));
- plentry.show();
- s_plentry.setText(integerToString(getPlaylistIndex()+1)+translate(" of ")+integerToString(getPlaylistLength()));
- s_plentry.show();
- }
- if (nexttrack) {
- if (corneroverride == "") {
- if (!stream) {
- if (!isVideo())
- {
- nexttrack.setText("New track");
- s_nexttrack.setText("New track");
- }
- else
- {
- nexttrack.setText("New video");
- s_nexttrack.setText("New video");
- }
- }
- else
- {
- nexttrack.setText("On air");
- s_nexttrack.setText("On air");
- }
- }
- else
- {
- nexttrack.setText(corneroverride);
- s_nexttrack.setText(corneroverride);
- }
- nexttrack.show();
- s_nexttrack.show();
- }
- string set_artist = "";
- string set = "";
- if (_title) {
- _title.setXmlParam("ticker", "0");
- _title.setXmlParam("display", "");
- s_title.setXmlParam("ticker", "0");
- s_title.setXmlParam("display", "");
- String str;
- if (!stream)
- {
- str = getPlayitemMetaDataString("title");
- if (str == "") str = getPlayitemDisplayTitle();
- String l = getPlayItemMetaDataString("length");
- if (l != "") {
- str += " (" + integerToTime(stringtointeger(l)) + ")";
- }
- _title.setText(str);
- s_title.setText(str);
- }
- else
- {
- if (str = getPlayItemMetaDataString("streamtitle") != "")
- {
- int v = strsearch(str, " - "); // We divide the string by a " - " sublimiter - no luck for old / wrong tagged stations
- if (v > 0) {
- set_artist = strleft (str, v); // Store artist
- string str = strright (str, strlen(str) - 3 - v);
- _title.setText(str);
- s_title.setText(str);
- }
- else
- {
- _title.setXmlParam("ticker", "1"); // These titles can be _very_ long
- s_title.setXmlParam("ticker", "1");
- _title.setText(str);
- s_title.setText(str);
- }
- } else {
- _title.setXmlParam("ticker", "1");
- _title.setXmlParam("display", "songtitle");
- _title.setText("");
- s_title.setXmlParam("ticker", "1");
- s_title.setXmlParam("display", "songtitle");
- s_title.setText("");
- }
- }
- _title.show();
- s_title.show();
- }
- if (artist) {
- if (!stream) {
- if (isVideo())
- {
- artist.setText("");
- s_artist.setText("");
- }
- else
- {
- artist.setText(getPlayitemMetaDataString("artist"));
- s_artist.setText(getPlayitemMetaDataString("artist"));
- }
- }
- else
- {
- // Perhaps we've stored the artist before?
- if (set_artist != "")
- {
- artist.setText(set_artist);
- s_artist.setText(set_artist);
- }
- // Then display the station name
- else if (s != "")
- {
- artist.setText(s);
- s_artist.setText(s);
- }
- // So, we've had no luck - just display a static text :(
- else
- {
- if (isVideo())
- {
- artist.setText("Internet TV");
- s_artist.setText("Internet TV");
- }
- else
- {
- artist.setText("Internet Radio");
- s_artist.setText("Internet Radio");
- }
- }
- }
- artist.show();
- s_artist.show();
- }
- if (album) {
- String str;
- if (!stream && !isVideo()) {
- s_album.setXmlParam("display", "");
- album.setXmlParam("display", "");
- str = getPlayitemMetaDataString("album");
- String l = getPlayitemMetaDataString("track");
- if (l != "" && l != "-1") str += " (" + translate("Track ") + l + ")";
- album.setText(str);
- s_album.setText(str);
- }
- else
- {
- album.setXmlParam("display", "");
- s_album.setXmlParam("display", "");
- // we have divided the songname - let's display the station name
- if (set_artist != "" && s != "")
- {
- album.setText(s);
- s_album.setText(s);
- }
- // no luck either...
- else
- {
- album.setText("");
- album.setXmlParam("display", "songinfo_localise");
- s_album.setText("");
- s_album.setXmlParam("display", "songinfo_localise");
- }
- }
- album.show();
- s_album.show();
- }
- // Album Art Stuff
- Layer webcover;
- if (g_albumart)
- {
- cover = g_albumart.findObject("notifier.cover");
- webcover = g_albumart.findObject("notifier.webcover");
- }
- Boolean showAlbumArt = FALSE;
- if (cover != NULL && webcover != NULL && notifier_artworkinnotification_attrib.getData() == "1")
- {
- if (stream)
- {
- if(stype == "2" || stype == "5" && cover.isInvalid())
- {
- webcover.setXMLParam("image", WEBCOVER_SHOUTCAST);
- cover.hide();
- webcover.show();
- showAlbumArt = TRUE;
- }
- else if(stype == "5" && !cover.isInvalid())
- {
- webcover.hide();
- cover.show();
- showAlbumArt = TRUE;
- }
- }
- else
- {
- if (cover.isInvalid()) // Check if the album art obj shows a pic
- {
- showAlbumArt = FALSE;
- }
- else
- {
- webcover.hide();
- cover.show();
- showAlbumArt = TRUE;
- }
- }
- }
- if (showAlbumArt)
- {
- if (g_albumart) g_albumart.show();
- if (g_text) g_text.setXmlParam("x", "75");
- if (g_text) g_text.setXmlParam("w", "-95");
- }
- else
- {
- if (g_albumart) g_albumart.hide();
- if (g_text) g_text.setXmlParam("x", "15");
- if (g_text) g_text.setXmlParam("w", "-35");
- }
- if (g_text) g_text.show();
- maxv = artist.getAutoWidth();
- if (maxv < album.getAutoWidth()) maxv = album.getAutoWidth();
- if (maxv < _title.getAutoWidth()) maxv = _title.getAutoWidth();
- if (maxv < (plentry.getAutoWidth() + nexttrack.getAutoWidth())) maxv = (plentry.getAutoWidth() + nexttrack.getAutoWidth());
- if (maxv < 128) maxv = 128;
- int getw;
- Layout m = getContainer("main").getCurLayout();
- if (notifier_loc_vport_attrib.getData() == "1")
- {
- //getw = getViewportWidth();
- getw = getViewportWidthFromGuiObject(m);
- }
- else
- {
- getw = getMonitorWidthFromGuiObject(m);
- }
- if (maxv > getw/4) maxv = getw/4;
- return maxv + ( showAlbumArt * 60 ) + 1; // Adds 60 extra pixels if album art is visible
- }
- // ------------------------------------------------------------------------------
- Int fillCustomInfo(String customtext)
- {
- Group g_text = notifier_layout.findObject("notifier.text");
- Group g_albumart = notifier_layout.findObject("notifier.albumart");
- Text endofplayback = notifier_layout.findObject("endofplayback");
- Text s_endofplayback = notifier_layout.findObject("endofplayback.shadow");
- if (g_text) { g_text.hide(); }
- if (g_albumart) g_albumart.hide();
- if (endofplayback != NULL && s_endofplayback != NULL) {
- endofplayback.setText(translate(customtext)+" ");
- s_endofplayback.setText(translate(customtext)+" ");
- int aw = endofplayback.getAutoWidth();
- endofplayback.show();
- s_endofplayback.show();
- if (aw > 128)
- return aw;
- }
- return 128;
- }
- //BUGFIX remove this timer later
- fallbackTempFix.onTimer() //As soon as this timer run, bug mode is ON ;)
- {
- if (checkPref(0)) return;
- if (!notifier_layout) onNext();
- if(!triggerBug)
- {
- triggerBug = true;
- onAlbumArt(cover.isInvalid()); //First time we see the bug
- fallbackTempFix.setDelay(30);
-
- DebugString("Hello Bug", 9);
- }
- else if(triggerBug && !cover.isLoading()) onAlbumArt(cover.isInvalid());
- }
- onAlbumArt(Boolean success){
- fallbackTempFix.stop(); //BUGFIX remove later
- DebugString("onAlbumArtLoaded: success="+integerToString(success), 9);
- DebugString("onAlbumArtLoaded: handleAACalback="+integerToString(handleAACalback), 9);
- DebugString("onAlbumArtLoaded: cover.isLoading="+integerToString(cover.isLoading()), 9);
- DebugString("onAlbumArtLoaded: cover.isInvalid="+integerToString(cover.isInvalid()), 9);
- if (!handleAACalback || !notifier_layout /*|| isLoading()*/)
- {
- return;
- }
- handleAACalback = cover.isLoading();
- cancelAnimation();
- showNotifier(fillNextTrackInfo(cur_status));
- }
|