home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 November / CDVD1105.ISO / Util / Winamp / Skins / Anime_Shogo.wal / scripts / notifier.m < prev    next >
Text File  |  2004-09-05  |  10KB  |  409 lines

  1. //-----------------------------------------------------------------------------
  2. // opensource_notifier.m
  3. //
  4. // Add a Winamp Modern-esque notifier to your skin, with prefrences and all that
  5. //
  6. // by iPlayTheSpoons (Jared Kole)
  7. //
  8. // please leave this part when you distribute your skin
  9. //-----------------------------------------------------------------------------
  10.  
  11. #include "../../../lib/std.mi"
  12.  
  13. Function Go(Float Fadein,Float Fadeout);
  14. function SetSize();
  15. Function SetInfo();
  16. Function Prep();
  17.  
  18. Global Container Noti, Prefs;
  19. Global Layout Notifier,NotifierSize;
  20. Global Group Texts;
  21. Global Text Artist, Song, Album, PlEntry, Nexttrack;
  22. Global Text FadeinText,StayText,FadeoutText;
  23. Global Slider FadeinSlider, StaySlider, FadeoutSlider;
  24. Global CheckBox FadeEffect, SlideEffect, Fullscreen;
  25.  
  26. Global Browser PhysicalCover;
  27. Global Timer Stay, Buffer;
  28. Global Int Tracker, TitleW, Wide;
  29. Global Float Fadein, Fadeout, StayTime;
  30. Global String Effect, Position;
  31.  
  32. System.onScriptLoaded() { 
  33.  
  34.     Noti = system.getContainer("opensource_notifier");
  35.     Prefs = system.getContainer("config");
  36.     
  37.     Notifier = Noti.getLayout("normal");
  38.     NotifierSize = Noti.getLayout("normal");
  39.     Texts = Notifier.findObject("notifier.text");
  40.     
  41.     Artist = Notifier.findObject("artist");
  42.     Song = Notifier.findObject("title");
  43.     Album = Notifier.findObject("album");
  44.     PlEntry = Notifier.findObject("plentry");
  45.     Nexttrack = Notifier.findObject("nexttrack");
  46.     
  47.     Layout PrefsLayout = Prefs.getLayout("normal");
  48.     
  49.     FadeinText = PrefsLayout.findObject("fadein.text");
  50.     StayText = PrefsLayout.findObject("stay.text");
  51.     FadeoutText = PrefsLayout.findObject("fadeout.text");
  52.     FadeinSlider = PrefsLayout.findObject("fadein.slider");
  53.     StaySlider = PrefsLayout.findObject("stay.slider");
  54.     FadeoutSlider = PrefsLayout.findObject("fadeout.slider");
  55.     Fullscreen = PrefsLayout.findObject("fullscreen");
  56.     FadeEffect = PrefsLayout.findObject("radio.fade");
  57.     SlideEffect = PrefsLayout.findObject("radio.slide");
  58.         
  59.     Fadein = system.getPrivateInt("OpenNote","FadeIn",6);
  60.     Fadeout = system.getPrivateInt("OpenNote","FadeOut",2);
  61.     StayTime = system.getPrivateInt("OpenNote","Stay",16);
  62.     Effect = system.getPrivateString("OpenNote","Effect","Fade");
  63.     
  64.     if(Effect == "Fade")
  65.         FadeEffect.setChecked(1);
  66.     Else
  67.         SlideEffect.setChecked(1);
  68.     
  69.     Stay = new Timer;
  70.     Buffer = new Timer;
  71.     Buffer.setDelay(100);
  72.     
  73.     FadeinSlider.SetPosition(Fadein);
  74.     FadeoutSlider.SetPosition(Fadeout);
  75.     StaySlider.SetPosition(StayTime);
  76.     Fullscreen.setChecked(system.getPrivateInt("OpenNote","Fullscreen",0));
  77.     Notifier.hide();
  78.     
  79.     SetSize();
  80.     Prep();
  81.     
  82. }
  83.  
  84. system.onScriptUnloading()
  85. {
  86.     system.setPrivateInt("OpenNote","FadeIn",(Fadein*4));
  87.     system.setPrivateInt("OpenNote","FadeOut",(Fadeout*4));
  88.     system.setPrivateInt("OpenNote","Stay",((StayTime*4)/1000));
  89.     system.setPrivateString("OpenNote","Effect",Effect);
  90. }
  91.  
  92. Fullscreen.onToggle(int newstate)
  93. {
  94.     system.setPrivateInt("OpenNote","Fullscreen",newstate);
  95. }
  96.  
  97. FadeEffect.onToggle(int newstate)
  98. {
  99.     if(FadeEffect.isChecked() == 1)
  100.     {
  101.         Effect = "Fade";
  102.         FadeinSlider.SetPosition(Fadein*4);
  103.         FadeoutSlider.SetPosition(Fadeout*4);
  104.         StaySlider.setPosition((StayTime*4)/1000);
  105.     }
  106. }
  107.  
  108. SlideEffect.onToggle(int newstate)
  109. {
  110.     if(SlideEffect.isChecked() == 1)
  111.     {
  112.         Effect = "Slide";
  113.         FadeinSlider.SetPosition(Fadein*4);
  114.         FadeoutSlider.SetPosition(Fadeout*4);
  115.         StaySlider.setPosition((StayTime*4)/1000);
  116.         if(Tracker == 2)     Notifier.setXMLParam("y",integertostring(system.getViewportHeight()+5));
  117.     }
  118. }
  119.  
  120. FadeinSlider.onSetPosition(int newFadein)
  121. {
  122.     FadeinText.setText(Effect+"-in Time (" + system.floattostring(NewFadein/4,1) + "s):");
  123.     Fadein=NewFadein/4;
  124. }
  125.  
  126. FadeoutSlider.onSetPosition(int newFadeout)
  127. {
  128.     FadeoutText.setText(Effect+"-out Time (" + system.floattostring(NewFadeout/4,1) + "s):");
  129.     Fadeout=NewFadeout/4;
  130. }
  131.  
  132. StaySlider.onSetPosition(int newStay)
  133. {
  134.     StayText.setText("Hold Time (" + system.floattostring(NewStay/4,1) + "s):");
  135.     StayTime = (newStay/4)*1000; 
  136.     Stay.setdelay(StayTime);
  137. }
  138.  
  139. system.onTitleChange(String NewTitle)
  140. {
  141.     Buffer.start();
  142. }
  143.  
  144. system.onPlay()
  145. {
  146.     Buffer.start();
  147. }
  148.  
  149. system.onResume()
  150. {
  151.     Buffer.start();
  152. }
  153.  
  154. System.onShowNotification()
  155. {
  156.     Buffer.start();
  157.     complete; 
  158.       return 1;
  159. }
  160.  
  161. Buffer.onTimer()
  162. {
  163.     Buffer.stop();
  164.     prep();
  165. }
  166.  
  167. Notifier.onLeftButtonDown(int x, int y)
  168. {
  169.     Prefs.show();
  170. }
  171.  
  172. Notifier.onRightButtonDown(int x, int y)
  173. {
  174.     Notifier.hide();
  175. }
  176.  
  177. Prep()
  178. {
  179.     string freq=system.getPrivateString("OpenNote","Freq","Always Show Notifications");
  180.     if((Fullscreen.isChecked() == 1 && System.isVideoFullscreen() == 0) || Fullscreen.isChecked() == 0){
  181.     if (freq=="Always Show Notifications")
  182.     {
  183.         SetInfo();
  184.         SetSize();
  185.         Go(Fadein, FadeOut);
  186.     }
  187.     if (freq=="Show Notifications When Minimized" && System.isMinimized()==1)
  188.     {
  189.         SetInfo();
  190.         SetSize();
  191.         Go(Fadein, FadeOut);
  192.     }}
  193. }
  194.         
  195.  
  196. SetInfo()
  197. {
  198. Int stream = 0;
  199. if (StrLeft(getPlayItemString(), 7) == "http://") stream = 1;
  200.     
  201.     String PLTot = integertostring(System.getPlaylistLength());
  202.     String PLCur = integertostring(System.getPlaylistIndex()+1);
  203.  
  204. if(!stream){
  205.     
  206.     Int T = System.getPlayItemLength()/1000;
  207.     Int M = T/60;
  208.     Int S = T-(M*60);
  209.     String Ss;
  210.     if (S<10)
  211.     {
  212.         Ss = "0" + integertoString(S);
  213.     }
  214.     else
  215.     {
  216.         Ss = integertoString(S);
  217.     }
  218.     
  219.     
  220. String name;    
  221. if(getPlayItemMetaDataString("title")=="")
  222. {name="???";}
  223. else
  224. {name=System.getPlayItemMetaDataString("title");}
  225.  
  226. Song.setXmlParam("ticker", "1");
  227.     
  228.     If (T != 0)
  229.     {
  230.         String Ts = integertoString(M) + ":" + Ss;
  231.         Song.setText(name + " (" + Ts + ")");
  232.     }
  233.     else
  234.         Song.setText(name+"    ");
  235.  
  236. if(getPlayItemMetaDataString("artist")=="")
  237. {Artist.setText("by "+"???");}
  238. else        
  239.     Artist.setText("by "+system.getPlayItemMetaDataString("artist"));
  240.  
  241. if(system.getPlayItemMetaDataString("album") == ""){
  242. Album.setText("");}
  243.  
  244. if(system.getPlayItemMetaDataString("album") != ""){
  245.  
  246. if(system.getPlayItemMetaDataString("track") >= "0")
  247.         Album.setText(system.getPlayItemMetaDataString("album") + " (Track " + system.getPlayItemMetaDataString("track") + ")");
  248.     else
  249.         Album.setText(system.getPlayItemMetaDataString("album"));
  250. }
  251. else
  252. {Album.setText("");}
  253.     
  254.  
  255. }//!stream
  256.  
  257. if(stream){
  258.  
  259. Nexttrack.setText("On Air");
  260.  
  261.       Song.setXmlParam("ticker", "1");
  262.       Song.setXmlParam("display", "songtitle");
  263.       Song.setText("");
  264.  
  265.       if (!isVideo())
  266.         Artist.setText("Internet Radio");
  267.       else
  268.         Artist.setText("Internet TV");
  269.  
  270.       Album.setText("");
  271.       Album.setXmlParam("display", "songinfo");
  272.  
  273. }//stream
  274.  
  275.  
  276. PLEntry.setText(PlCur + "/" + PLTot);
  277.  
  278. }
  279.  
  280. SetSize()
  281. {
  282.  
  283. string pos = system.getPrivateString("Abducted_OpenNote", "NotifierPosition", "1. Bottom Right");
  284.  
  285.     Int ScreenW = system.getViewPortWidth();
  286.     Int ScreenH = system.getViewportHeight();
  287.     Int TitleW = System.strlen(Song.getText());
  288.         
  289.     Wide = artist.getAutoWidth();
  290.   if (Wide < Album.getAutoWidth()) Wide = album.getAutoWidth();
  291.   if (Wide < Song.getAutoWidth()) Wide = Song.getAutoWidth();
  292.   if (Wide < 128) Wide = 150;
  293.   if (Wide > getViewportWidth()/4) Wide = getViewportWidth()/4;
  294.  
  295. Wide=Wide+60;
  296.  
  297.     Texts.setXMLParam("x","10");
  298.     Texts.setXMLParam("w","-20");
  299.         
  300.  
  301. if(pos=="1. Bottom Right"){
  302.  
  303. Position="b";
  304.  
  305.     Notifier.setXMLParam("x",integertostring(ScreenW-Wide-5));
  306.     Notifier.setXMLParam("y",integertostring(ScreenH-124));
  307. }
  308.  
  309. if(pos=="2. Bottom Left"){
  310.  
  311. Position="b";
  312.  
  313.     Notifier.setXMLParam("x",integertostring(5));
  314.     Notifier.setXMLParam("y",integertostring(ScreenH-124));
  315. }
  316.  
  317. if(pos=="3. Top Right"){
  318.  
  319. Position="t";
  320.  
  321.     Notifier.setXMLParam("x",integertostring(ScreenW-Wide-5));
  322.     Notifier.setXMLParam("y",integertostring(5));
  323. }
  324.  
  325. if(pos=="4. Top Left"){
  326.  
  327. Position="t";
  328.  
  329.     Notifier.setXMLParam("x",integertostring(5));
  330.     Notifier.setXMLParam("y",integertostring(5));
  331. }
  332.  
  333.     Notifier.setXMLParam("h",integertostring(119));
  334.     Notifier.setXMLParam("w",integertostring(Wide));
  335.  
  336. }
  337.  
  338. Go(Float Fadein,Float Fadeout)
  339. {
  340.     Tracker = 1;
  341.     if(FadeEffect.isChecked() == 1)
  342.     {
  343.         Notifier.show();
  344.         Notifier.setTargetA(255);
  345.         Notifier.setTargetY(StringToInteger(Notifier.getXMLParam("y")));
  346.         Notifier.SetTargetW(Wide);
  347.         Notifier.setTargetX(StringToInteger(Notifier.getXMLParam("x")));
  348.         Notifier.setTargetSpeed(Fadein);
  349.         Notifier.gotoTarget();
  350.     }
  351.     else
  352.     {
  353.         Notifier.setAlpha(255);
  354.         Notifier.show();
  355.         Notifier.setTargetA(255);
  356.         Notifier.setTargetY(StringToInteger(Notifier.getXMLParam("y")));
  357.         Notifier.SetTargetW(Wide);
  358.         Notifier.setTargetX(StringToInteger(Notifier.getXMLParam("x")));
  359.         Notifier.setTargetSpeed(Fadein);
  360.         Notifier.gotoTarget();
  361.     }
  362. }
  363.  
  364. Notifier.onTargetReached()
  365. {
  366.     if (Tracker == 1)
  367.     {
  368.         Stay.start();
  369.     }
  370.     if (Tracker == 2)
  371.     {
  372.         Notifier.hide();
  373.     }
  374. }
  375.     
  376. Stay.onTimer()
  377. {
  378.     Stay.stop();
  379.     Tracker = 2;
  380.     if(FadeEffect.isChecked() == 1)
  381.     {
  382.         Notifier.setTargetA(0);
  383.         Notifier.setTargetY(StringToInteger(Notifier.getXMLParam("y")));
  384.         Notifier.SetTargetW(Wide);
  385.         Notifier.setTargetX(StringToInteger(Notifier.getXMLParam("x")));
  386.         Notifier.setTargetSpeed(Fadeout);
  387.         Notifier.gotoTarget();
  388.     }
  389.     else
  390.     {
  391.         Notifier.show();
  392.         Notifier.setTargetA(255);
  393.  
  394. if(position=="b")
  395.         Notifier.setTargetY(StringToInteger(Notifier.getXMLParam("y"))+150);
  396.  
  397. if(position=="t")
  398.         Notifier.setTargetY(StringToInteger(Notifier.getXMLParam("y"))-150);
  399.  
  400.         Notifier.SetTargetW(Wide);
  401.         Notifier.setTargetX(StringToInteger(Notifier.getXMLParam("x")));
  402.         Notifier.setTargetSpeed(Fadein);
  403.         Notifier.gotoTarget();
  404.     }
  405.  
  406. }
  407.  
  408.  
  409.