Old 26th January 2007, 16:41   #1
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Question Resurgence-Skin

Hey guys,

I really love that "Resurgence"-skin made by mc^^^.

Though, IMHO its notifier lacks a little bit of information regarding the volume. So, I'd like to know how I can change the script to show up the notifier with the current volume each time I change it.

Thanks in advance,

Martin..
eagle3386 is offline   Reply With Quote
Old 26th January 2007, 17:05   #2
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
not going to be easy, you'll have to do some scripting. look at the notifier.m file in the skin (this will not help if you have no experience with any programming though) edit & recompile
hammerhead is offline   Reply With Quote
Old 26th January 2007, 17:13   #3
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Hammerhead,

thanks for your quick reply!

I do got some knowledge about programming and I already tried to do that according to this function:
PHP Code:
// ------------------------------------------------------------------------------
// called by the system when the global hotkey for notification is pressed
// ------------------------------------------------------------------------------
System.onShowNotification() {
  if (
checkPref(1)) return;
  
createNotifier();
  
String str;
  if (
getStatus() == STATUS_PLAYINGstr "Playing";
  if (
getStatus() == STATUS_PAUSEDstr "Playback Paused";
  if (
getStatus() == STATUS_STOPPEDstr "Playback Stopped";
  
showNotifier(fillNextTrackInfo(str));
  
complete// prevents other scripts from getting the message
  
return 1// tells anybody else that might watch the returned value that, yes, we implemented that

So, my first try looks like this:
PHP Code:
// ------------------------------------------------------------------------------
// called by the system when the global hotkeys for volume changing are pressed
// ------------------------------------------------------------------------------
System.onVolumeChanged() {
  if (
checkPref(1)) return;
  
createNotifier();
  
String str;
  
str "Volume: " integerToString(getVolume());
  
showNotifier(fillNextTrackInfo(str));
  
complete// prevents other scripts from getting the message
  
return 1// tells anybody else that might watch the returned value that, yes, we implemented that


But whenever I try to compile this with mc.exe, I get an error..

My command prompt looks like this:
Quote:
C:\Programme\System\Winamp\Skins\Code_Resurgence\scripts>mc.exe notifier.m
MC - Maki Compiler v1.1.3
(c)2001, Nullsoft Inc.

Preprocessing...
#include config.mi: file not found at attribs.m:8
Included from notifier.m:2
Preprocessor error, aborting
Exited with code 6

C:\Programme\System\Winamp\Skins\Code_Resurgence\scripts>
eagle3386 is offline   Reply With Quote
Old 26th January 2007, 18:40   #4
martin.deimos
Android/UI Development
 
martin.deimos's Avatar
 
Join Date: Sep 2004
Location: Bavaria
Posts: 1,242
Send a message via ICQ to martin.deimos Send a message via AIM to martin.deimos Send a message via Yahoo to martin.deimos
search for config.mi / std.mi in the web, then include it in winampdir/lib

WebSite: www.skinconsortium.com - Community for Userinterface Design & Coding
Skins: Click Here
martin.deimos is offline   Reply With Quote
Old 26th January 2007, 18:43   #5
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
std.mi is already there, but not that config.mi one..

Sadly, Google gives me no download-results.. Only Italian pages..


Alright.. Searched the board.. Was lucky enough to find this thread: http://forums.winamp.com/showthread....hreadid=168310
eagle3386 is offline   Reply With Quote
Old 26th January 2007, 18:46   #6
Mr Jones
Nothing to say...
 
Mr Jones's Avatar
 
Join Date: Sep 2000
Location: UK
Posts: 23,064
Fuck Google, try searching the forums.
http://forums.winamp.com/showthread....hreadid=168310
Mr Jones is offline   Reply With Quote
Old 26th January 2007, 18:58   #7
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Hehe..

Alright, managed everything so that mc.exe produces a maki-file and the notifier to come up when changing the volume's level.

Though, it shows me "<Title> (<time>)" instead of something like "Volume: <percentage>".

My code currently looks like this:
PHP Code:
System.onVolumeChanged(int newvol) {
  if (
checkPref(1)) return;
  
createNotifier();
  
String str;
  
str "Volume" integerToString(getVolume());
  
showNotifier(fillNextTrackInfo(str));
  
complete// prevents other scripts from getting the message
  
return 1// tells anybody else that might watch the returned value that, yes, we implemented that

eagle3386 is offline   Reply With Quote
Old 26th January 2007, 21:24   #8
Naamloos
Forum King
 
Naamloos's Avatar
 
Join Date: Mar 2001
Location: irc.tehflap.org/*******
Posts: 3,085
change the line which contains
"showNotifier(fillNextTrackInfo(str));"

=]
Naamloos is offline   Reply With Quote
Old 26th January 2007, 22:53   #9
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
yeah, as naamloos said, change 'showNotifier(fillNextTrackInfo(str));' to 'showNotifier(fillCustomInfo(str));'.. should work
hammerhead is offline   Reply With Quote
Old 27th January 2007, 09:22   #10
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Guys, this is absolutely strange.. As a programmer, I already did a search inside the skinning docs and found that function.. - Though, after compiling and reselecting it in the skin browser, there was no change..
Right now, I did just the same and everything works..

Also the rounding thing is gone (dividing by "2.55" rounds that number perfectly, although I don't know why.. *LOL*)..


Though, there's one thing I don't understand. While adjusting the volume, the notifier comes up with a "slide-in" from the bottom. But this sliding movement is interrupted everytime I press the keys for the volume change again. Is there any chance that the notifier moves on although I press the keys while it is moving?
eagle3386 is offline   Reply With Quote
Old 27th January 2007, 17:30   #11
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
Quote:
Originally posted by eagle3386
Guys, this is absolutely strange.. As a programmer, I already did a search inside the skinning docs and found that function.. - Though, after compiling and reselecting it in the skin browser, there was no change..
Right now, I did just the same and everything works..

Also the rounding thing is gone (dividing by "2.55" rounds that number perfectly, although I don't know why.. *LOL*)..


Though, there's one thing I don't understand. While adjusting the volume, the notifier comes up with a "slide-in" from the bottom. But this sliding movement is interrupted everytime I press the keys for the volume change again. Is there any chance that the notifier moves on although I press the keys while it is moving?
yeah, the rounding thing works because volume (and pretty much all skin-relevant properties) is measure in byte-form (0-255).

adjusted the script slightly, now it should be a little smoother:

PHP Code:
#include "std.mi"
#include "attribs.m"

Function reset();
Function 
createNotifier();
Function 
showNotifier(Int w);
Function 
onNext();

Function 
Int fillNextTrackInfo(String corneroverride);
Function 
Int fillCustomInfo(String customstring);

Function 
checkPref(int bypassfs);

Global 
Container notifier_container;
Global 
Layout notifier_layout;
Global 
Timer notifier_timerstarttimer;
Global 
String last_autotitle;
Global 
slider holdtime;
Global 
animatedlayer holdtimeanim;

Global 
boolean notifierOut false;

// ------------------------------------------------------------------------------
// init
// ------------------------------------------------------------------------------
System.onScriptLoaded() {
  
initAttribs();
  
notifier_timer = new Timer;
  
starttimer = new Timer;
  
starttimer.setdelay(1);
  
starttimer.start();
}
starttimer.ontimer() {
  
starttimer.stop();
      
Group c System.GetContainer("config").GetLayout("normal").FindObject("configpage").FindObject("cfp2");
    
holdtime c.GetObject("set.nhold");
    
holdtimeanim c.GetObject("holdanim");
    
holdtimeanim.gotoFrame(holdtime.getposition() / 10000 holdtimeanim.getlength() - 1);
}
// ------------------------------------------------------------------------------
// shutdown
// ------------------------------------------------------------------------------
System.onScriptUnloading() {
  
delete notifier_timer;
  
delete starttimer;
}

// ------------------------------------------------------------------------------
// called by the system when the global hotkey for notification is pressed
// ------------------------------------------------------------------------------
System.onShowNotification() {
  if (
checkPref(1)) return;
  
createNotifier();
  
String str;
  if (
getStatus() == STATUS_PLAYINGstr "Playing";
  if (
getStatus() == STATUS_PAUSEDstr "Playback Paused";
  if (
getStatus() == STATUS_STOPPEDstr "Playback Stopped";
  
showNotifier(fillNextTrackInfo(str));
  
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(newtitle1) == "[") {
    if (
StrLeft(newtitle7) == "[Buffer" ||
        
StrLeft(newtitle4) == "[ICY") return;
  }
  
last_autotitle newtitle;
  
onNext();
}

// ------------------------------------------------------------------------------
// called by the system when the user clicks the next button
// ------------------------------------------------------------------------------
onNext() {
  if (
checkPref(0)) return;
  
createNotifier();
  
showNotifier(fillNextTrackInfo(""));
}

// ------------------------------------------------------------------------------
// called by the system when the user clicks the play button
// ------------------------------------------------------------------------------
System.onPlay() {
  if (
checkPref(0)) return;
  
createNotifier();
  
showNotifier(fillNextTrackInfo("Playing"));
}


System.OnVolumeChanged(int newVol)
{
  if (
checkPref(0)) return;
 
 
  if (
notifierOut)
  {
    
Group p notifier_layout;
    
Text endofplayback p.findObject("endofplayback");

    if (
endofplayback)
      
endofplayback.setText("Volume: " integerToString(newVol/2.55) + "%");
  }
  else
  {
    
createNotifier();
    
showNotifier(fillCustomInfo("Volume: " integerToString(newVol/2.55) + "%"));
  }
}

// ------------------------------------------------------------------------------
// called by the system when the user clicks the pause button
// ------------------------------------------------------------------------------
System.onPause() {
  if (
checkPref(0)) return;
  
createNotifier();
  
showNotifier(fillCustomInfo("Playback Paused"));
}

// ------------------------------------------------------------------------------
// called by the system when the user clicks the pause button again
// ------------------------------------------------------------------------------
System.onResume() {
  if (
checkPref(0)) return;
  
createNotifier();
  
showNotifier(fillNextTrackInfo("Resuming Playback"));
}

// ------------------------------------------------------------------------------
// called by the system when the user clicks the play button
// ------------------------------------------------------------------------------
System.onStop() {
  if (
checkPref(0)) return;
  
createNotifier();
  
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() != "player.main.titlebar" && l.getId() != "player.main.shade") return 1;
  }
  return 
0;
}

// ------------------------------------------------------------------------------
// fade in/out completed
// ------------------------------------------------------------------------------
notifier_layout.onTargetReached() {
  
int y notifier_layout.getTop();
  if (
getViewportHeight() + getViewportTop()) {
    
notifier_timer.setDelay(StringToInteger(notifier_holdtime_attrib.getData()));
    
notifier_timer.start();
  }
  else if (
>= getViewportHeight() + getViewportTop()) {
    
reset();
  }
}

// ------------------------------------------------------------------------------
// hold time elapsed
// ------------------------------------------------------------------------------
notifier_timer.onTimer() {
  
stop();
  
notifier_layout.setTargetY(getViewportHeight() + getViewportTop() + notifier_layout.getHeight());
  
notifier_layout.setTargetSpeed(1);
  
notifier_layout.gotoTarget();

  
notifierOut false;
}

// ------------------------------------------------------------------------------
// when notifier is clicked, bring back the app from minimized state if its minimized and focus it
// ------------------------------------------------------------------------------
notifier_layout.onLeftButtonDown(int xint y) {
  
notifier_timer.stop();
  
notifier_layout.cancelTarget();
  
reset();
  
restoreApplication();
  
activateApplication();
}

// ------------------------------------------------------------------------------
// close the notifier window, destroys the container automatically because it's dynamic
// ------------------------------------------------------------------------------
reset() {
  
notifier_timer.stop();
  
notifier_layout.resize(0,0,0,0);
  
notifier_container.close();
  
notifier_container NULL;
  
notifier_layout NULL;
}

// ------------------------------------------------------------------------------
createNotifier() {
  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 {
    
notifier_layout.cancelTarget();
    
notifier_timer.stop();
  }
}

// ------------------------------------------------------------------------------
showNotifier(int w) {
  
notifierOut true;

  
int x getViewportWidth() + getViewportLeft() - 5;
  
85;
  if(
notifier_whichsideleft_attrib.getData() == "1"getViewportLeft() + 5;
  if(
notifier_whichsideright_attrib.getData() == "1"getViewportWidth() + getViewportLeft() - 5;
  
int y getViewportHeight() + getViewportTop() - notifier_layout.getHeight() - 5;

  if (!
notifier_layout.isVisible()) {
      
notifier_layout.resize(xnotifier_layout.getHeight() + 5wnotifier_layout.getHeight());
  }
  
notifier_layout.show();
  
notifier_layout.setAlpha(255);
  
notifier_layout.setTargetX(x);
  
notifier_layout.setTargetW(w);
  
notifier_layout.setTargetY(y);
  
notifier_layout.setTargetH(notifier_layout.getHeight());
  
notifier_layout.setTargetSpeed(2);
  
notifier_layout.gotoTarget();
}
// ------------------------------------------------------------------------------
Int fillNextTrackInfo(String corneroverride) {
  
Int maxv 0;
  
Int stream 0;
  
Group p notifier_layout;
  
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 (
StrLeft(getPlayItemString(), 7) == "http://"stream 1;

  if (
endofplaybackendofplayback.settext("");

  if (
plentry) { plentry.setText(integerToString(getPlaylistIndex()+1)+"/"+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();
  }
  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 (
!= "") {
        
str += " (" integerToTime(stringtointeger(l)) + ")";
      }
      
_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 {
      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 (
!= "" && != "-1"str += " (Track " ")";
      
album.setText(str); 
    } else {
      
album.setText("");
      
album.setXmlParam("display""songinfo");
    }
    
album.show(); 
  }
  
maxv artist.getAutoWidth();
  if (
maxv album.getAutoWidth()) maxv album.getAutoWidth();
  if (
maxv _title.getAutoWidth()) maxv _title.getAutoWidth();
  if (
maxv 128maxv 128;
  if (
maxv getViewportWidth()/4maxv getViewportWidth()/4;
  
  return 
maxv;
}

// ------------------------------------------------------------------------------
Int fillCustomInfo(String customtext) {
  
Group p notifier_layout;
  
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 (
plentry) { plentry.hide(); }
  if (
nexttracknexttrack.hide();
  if (
_title) { _title.hide(); }
  if (
artist) { artist.hide(); }
  if (
album) { album.hide(); }

  if (
endofplayback) {
    
endofplayback.setText(customtext);
    
int aw endofplayback.getAutoWidth();
    
endofplayback.show();
    if (
aw 128)
      return 
aw;
  }
  return 
128;
}

holdtime.OnSetPosition(int x)
{
    
holdtimeanim.gotoFrame(10000 holdtimeanim.getlength() - 1);

yeah, maki is not the most logical thing at times, but it seems to work (usually )
hammerhead is offline   Reply With Quote
Old 28th January 2007, 08:55   #12
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Hammerhead,

your code works like a charm!


Though, I'd like to know how it does that sliding smoother than my code did. It'd be great if you could tell me that..


Thanks,
Martin..
eagle3386 is offline   Reply With Quote
Old 28th January 2007, 12:12   #13
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
ok sure..

well the problem was that if you tell the notifier to move out while it is already moving, the motion is slightly interrupted. this is solved by having the onSetVolume function checking whether the notifier is moving (or fully out) and if so simply changing the text it displays directly.

first of all i modified shownotifier to set 'notifierOut' to true when it starts moving. i then modified notifier_timer.OnTimer() (this is called when it is time for the notifier to slide down again) to set notifierOut to false. if onSetVolume is called whenever the notifierOut bool is set to true, we can simply change the text object, shown by this code:

PHP Code:


  
if (notifierOut
  { 
    
Group p notifier_layout
    
Text endofplayback p.findObject("endofplayback"); 

    if (
endofplayback
      
endofplayback.setText("Volume: " integerToString(newVol/2.55) + "%"); 
  } 
edit: i initially posted the whole script because there were too many modifications

hope this helps
hammerhead
hammerhead is offline   Reply With Quote
Old 28th January 2007, 12:42   #14
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
Hammerhead,

thanks for pointing that out - it's all clear now!

Lastly, I've discovered a little bug within your script:

By pressing the keys for starting playback of a file, the notifier moves in and shows the normal ID3-tag information.

But in case I'm changing the volume while the notifier moves in (or out), the volume information is shown between the artist's name and the song's name - but sometimes it's also in the line of the title, but "above" that title information.

So, I'd like to know if it's possible to hide song information as soon as the volume is changed. Because the other way round (showing the volume and while this is done switching to another song) works perfectly..


Thanks in advance,

Martin..
eagle3386 is offline   Reply With Quote
Old 28th January 2007, 15:27   #15
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
ah i see, sorry about that, did not bother testing the script enough

replace OnVolumeChanged with this:

PHP Code:
System.OnVolumeChanged(int newVol)
{
  if (
checkPref(0)) return;
 
 
  if (
notifierOut)
  {
    
Group p notifier_layout;
    
Text endofplayback p.findObject("endofplayback");
    
Text _title p.findObject("title");

    if (
_title_title.Hide();

    if (
endofplayback)
      
endofplayback.setText("Volume: " integerToString(newVol/2.55) + "%");
  }
  else
  {
    
createNotifier();
    
showNotifier(fillCustomInfo("Volume: " integerToString(newVol/2.55) + "%"));
  }

should work
hammerhead is offline   Reply With Quote
Old 28th January 2007, 16:43   #16
eagle3386
Member
 
eagle3386's Avatar
 
Join Date: Dec 2002
Location: » Earth » Europe » Germany » Saxony » Ore Mountains
Posts: 64
Send a message via ICQ to eagle3386
It works indeed..

Although the title's text is replaced correctly, the artist's and album's text still remains.. IMHO that text should be removed, too.

Could you fixed this little remaining bug? Afterwards, everything is perfect.. - I do really appreciate your work! Over all skins I've used so far, Resurgence is the one that rocks most!
eagle3386 is offline   Reply With Quote
Old 28th January 2007, 22:39   #17
hammerhead
The Shark
(Forum King)
 
hammerhead's Avatar
 
Join Date: Jul 2002
Posts: 2,537
Send a message via AIM to hammerhead
Quote:
Originally posted by eagle3386
It works indeed..

Although the title's text is replaced correctly, the artist's and album's text still remains.. IMHO that text should be removed, too.

Could you fixed this little remaining bug? Afterwards, everything is perfect.. - I do really appreciate your work! Over all skins I've used so far, Resurgence is the one that rocks most!
lol, im doing this because i wrote about half the code for the skin and yes, it does rock

PHP Code:
System.OnVolumeChanged(int newVol)
{
  if (
checkPref(0)) return;
 
 
  if (
notifierOut)
  {
    
Group p notifier_layout;
    
Text endofplayback p.findObject("endofplayback");
    
Text _title p.findObject("title");

    
Text plentry p.findObject("plentry");
    
Text nexttrack p.findObject("nexttrack");
    
Text album p.findObject("album");
    
Text artist p.findObject("artist");

    if (
plentry) { plentry.hide(); }
    if (
nexttracknexttrack.hide();
    if (
_title) { _title.hide(); }
    if (
artist) { artist.hide(); }
    if (
album) { album.hide(); }

    if (
endofplayback)
      
endofplayback.setText("Volume: " integerToString(newVol/2.55) + "%");
  }
  else
  {
    
createNotifier();
    
showNotifier(fillCustomInfo("Volume: " integerToString(newVol/2.55) + "%"));
  }

hammerhead is offline   Reply With Quote
Reply
Go Back   Winamp & Shoutcast Forums > Skinning and Design > Modern Skins

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump