Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
615
Src/resources/skins/Winamp Modern/scripts/notifier.m
Normal file
615
Src/resources/skins/Winamp Modern/scripts/notifier.m
Normal file
|
@ -0,0 +1,615 @@
|
|||
#include <lib/std.mi>
|
||||
#include "attribs.m"
|
||||
|
||||
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 String getArtist();
|
||||
|
||||
Function onAlbumArt(Boolean success);
|
||||
|
||||
Global Container notifier_container;
|
||||
Global Layout notifier_layout;
|
||||
Global Timer notifier_timer;
|
||||
Global String last_autotitle, cur_status;
|
||||
|
||||
Global AlbumArtLayer cover;
|
||||
Global boolean handleAACalback = false;
|
||||
|
||||
Global Boolean triggerBug; //BUGFIX remove this
|
||||
Global Timer fallbackTempFix; //BUGFIX remove this
|
||||
|
||||
Global Boolean b_tohide = 0;
|
||||
Global int width = 0;
|
||||
Global int left = 0;
|
||||
|
||||
#define WEBCOVER_SHOUTCAST "winamp.cover.shoutcast"
|
||||
#define FORCE_BUG_MODE
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// init
|
||||
// ------------------------------------------------------------------------------
|
||||
System.onScriptLoaded() {
|
||||
initAttribs();
|
||||
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
|
||||
// ------------------------------------------------------------------------------
|
||||
System.onTitleChange(String newtitle) {
|
||||
if (last_autotitle == newtitle) return;
|
||||
if (StrLeft(newtitle, 1) == "[") {
|
||||
if (StrLeft(newtitle, 7) == "[Buffer" ||
|
||||
StrLeft(newtitle, 4) == "[ICY") return;
|
||||
}
|
||||
last_autotitle = newtitle;
|
||||
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() {
|
||||
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() {
|
||||
if (checkPref(0)) return;
|
||||
createNotifier(true);
|
||||
showNotifier(fillCustomInfo("End of Playback"));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// checks if we should display anything
|
||||
// ------------------------------------------------------------------------------
|
||||
Int checkPref(int bypassfs) {
|
||||
if (!bypassfs && notifier_disablefullscreen_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
|
||||
// ------------------------------------------------------------------------------
|
||||
notifier_layout.onTargetReached() {
|
||||
int a = notifier_layout.getAlpha();
|
||||
if (a == 255) {
|
||||
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_layout.isTransparencySafe()) {
|
||||
notifier_layout.setTargetA(0);
|
||||
notifier_layout.setTargetSpeed(StringToInteger(notifier_fadeouttime_attrib.getData()) / 1000);
|
||||
notifier_layout.gotoTarget();
|
||||
} else {
|
||||
reset();
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
// 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=notifiermodern&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) {
|
||||
w = w + 32;
|
||||
|
||||
Layout m = getContainer("main").getCurLayout();
|
||||
int x = left = getViewportWidthFromGuiObject(m) + getViewportLeftFromGuiObject(m) - w - 2;
|
||||
int y = getViewportHeightFromGuiObject(m) + getViewportTopFromGuiObject(m) - 80 - 2;
|
||||
|
||||
// show if not there or if already shown then lets resize on the fly (bento style)
|
||||
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_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
|
||||
notifier_timer.start();
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
|
||||
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");
|
||||
|
||||
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 (plentry)
|
||||
{
|
||||
plentry.setText(integerToString(getPlaylistIndex()+1)+translate(" of ")+integerToString(getPlaylistLength()));
|
||||
plentry.show();
|
||||
}
|
||||
if (nexttrack) {
|
||||
if (corneroverride == "") {
|
||||
if (!stream) {
|
||||
if (!isVideo())
|
||||
{
|
||||
nexttrack.setText("New track");
|
||||
}
|
||||
else
|
||||
{
|
||||
nexttrack.setText("New video");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
nexttrack.setText("On air");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
nexttrack.setText(corneroverride);
|
||||
}
|
||||
nexttrack.show();
|
||||
}
|
||||
|
||||
string set_artist = "";
|
||||
string set = "";
|
||||
if (_title) {
|
||||
String str;
|
||||
if (!stream)
|
||||
{
|
||||
_title.setXmlParam("ticker", "0");
|
||||
_title.setXmlParam("display", "");
|
||||
|
||||
str = getPlayitemMetaDataString("title");
|
||||
if (str == "") str = getPlayitemDisplayTitle();
|
||||
String l = getPlayItemMetaDataString("length");
|
||||
if (l != "") {
|
||||
str += " (" + integerToTime(stringtointeger(l)) + ")";
|
||||
}
|
||||
_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);
|
||||
}
|
||||
else
|
||||
{
|
||||
_title.setXmlParam("ticker", "1"); // These titles can be _very_ long
|
||||
_title.setText(str);
|
||||
}
|
||||
} else
|
||||
{
|
||||
_title.setXmlParam("ticker", "1");
|
||||
_title.setXmlParam("display", "songtitle");
|
||||
_title.setText("");
|
||||
}
|
||||
}
|
||||
_title.show();
|
||||
}
|
||||
|
||||
if (artist) {
|
||||
if (!stream) {
|
||||
if (isVideo())
|
||||
{
|
||||
artist.setText("");
|
||||
}
|
||||
else
|
||||
{
|
||||
artist.setText(getPlayitemMetaDataString("artist"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Perhaps we've stored the artist before?
|
||||
if (set_artist != "")
|
||||
{
|
||||
artist.setText(set_artist);
|
||||
}
|
||||
// Then display the station name
|
||||
else if (s != "")
|
||||
{
|
||||
artist.setText(s);
|
||||
}
|
||||
// So, we've had no luck - just display a static text :(
|
||||
else
|
||||
{
|
||||
if (isVideo())
|
||||
{
|
||||
artist.setText("Internet TV");
|
||||
}
|
||||
else
|
||||
{
|
||||
artist.setText("Internet Radio");
|
||||
}
|
||||
}
|
||||
}
|
||||
artist.show();
|
||||
}
|
||||
|
||||
if (album) {
|
||||
String str;
|
||||
if (!stream && !isVideo()) {
|
||||
album.setXmlParam("display", "");
|
||||
str = getPlayitemMetaDataString("album");
|
||||
String l = getPlayitemMetaDataString("track");
|
||||
if (l != "" && l != "-1") str += " (" + translate("Track ") + l + ")";
|
||||
album.setText(str);
|
||||
}
|
||||
else
|
||||
{
|
||||
album.setXmlParam("display", "");
|
||||
// we have divided the songname - let's display the station name
|
||||
if (set_artist != "" && s != "")
|
||||
{
|
||||
album.setText(s);
|
||||
}
|
||||
// no luck either...
|
||||
else
|
||||
{
|
||||
album.setText("");
|
||||
album.setXmlParam("display", "songinfo_localise");
|
||||
}
|
||||
}
|
||||
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 < (nexttrack.getAutoWidth() + plentry.getAutoWidth() - 5) ) maxv = nexttrack.getAutoWidth() + plentry.getAutoWidth() - 5;
|
||||
if (maxv < 128) maxv = 128;
|
||||
Layout m = getContainer("main").getCurLayout();
|
||||
if (maxv > getViewportWidthFromGuiObject(m)/4) maxv = getViewportWidthFromGuiObject(m)/4;
|
||||
|
||||
width = maxv;
|
||||
|
||||
return maxv + ( showAlbumArt * 91 );
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------
|
||||
Int fillCustomInfo(String customtext)
|
||||
{
|
||||
Group p = notifier_layout;
|
||||
Group g_text = p.findObject("notifier.text");
|
||||
Group g_albumart = p.findObject("notifier.albumart");
|
||||
Text plentry = p.findObject("plentry");
|
||||
Text nexttrack = p.findObject("nexttrack");
|
||||
Text _title = p.findObject("title");
|
||||
Text album = p.findObject("album");
|
||||
Text artist = p.findObject("artist");
|
||||
Text endofplayback = p.findObject("endofplayback");
|
||||
|
||||
if (g_text) { g_text.hide(); }
|
||||
if (g_albumart) g_albumart.hide();
|
||||
|
||||
if (plentry) { plentry.hide(); }
|
||||
if (nexttrack) nexttrack.hide();
|
||||
if (_title) { _title.hide(); }
|
||||
if (artist) { artist.hide(); }
|
||||
if (album) { album.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 runs, 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));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue