home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / cpu.js_3 < prev    next >
Text (UTF-16)  |  2012-05-19  |  18KB  |  370 lines

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // THIS CODE IS NOT APPROVED FOR USE IN/ON ANY OTHER UI ELEMENT OR PRODUCT COMPONENT.
  4. // Copyright (c) 2009 Microsoft Corporation. All rights reserved.
  5. //
  6. ////////////////////////////////////////////////////////////////////////////////
  7. var REFRESH_INTERVAL = 3000;
  8.  
  9. var dialOffset = -125;
  10.  
  11. var intCPUDialPos = dialOffset;
  12. var intMEMDialPos = dialOffset;
  13.  
  14. var intCPUCurrent = dialOffset;
  15. var intMEMCurrent = dialOffset;
  16.  
  17. var intNoAnimThresh = 4;
  18.  
  19. var isDocked;
  20. var isVisible = true;
  21.  
  22. var cpuPercentageText;
  23. var memoryPercentageText;
  24.  
  25. var gadgetTimeout;
  26. var dialTimeout;
  27.  
  28. var L_PROCESSOR_TEXT = "CPU usage";
  29. var L_MEMORY_TEXT    = "Random access memory (RAM)";
  30.  
  31. ////////////////////////////////////////////////////////////////////////////////
  32. //
  33. // GADGET FUNCTIONS
  34. //
  35. ////////////////////////////////////////////////////////////////////////////////
  36. function loadMain()
  37. {
  38.     System.Gadget.visibilityChanged = checkVisibility;
  39.     System.Gadget.onUndock = checkState;
  40.     System.Gadget.onDock = checkState;
  41.     
  42.     cpuPercentageText = document.getElementById("cpuBackground");
  43.     memoryPercentageText = document.getElementById("memoryBackground");
  44.  
  45.     cpuMeter.addShadow("grey", 2, 40, 2, 2);
  46.     memMeter.addShadow("grey", 2, 40, 2, 2);
  47.     checkState();
  48.     updateGadgetDials();
  49. }
  50. ////////////////////////////////////////////////////////////////////////////////
  51. //
  52. // start gadget animation
  53. //
  54. ////////////////////////////////////////////////////////////////////////////////
  55. function updateGadgetDials()
  56. {
  57.     clearTimeout(dialTimeout);
  58.     
  59.     var cpuUpdated = false;
  60.     var memoryUpdated = false;
  61.  
  62.     var oMachine = new machineStatus();
  63.     
  64.     if (Math.round(intCPUCurrent) != Math.round(oMachine.CPUUsagePercentage))
  65.     {
  66.         intCPUCurrent = oMachine.CPUUsagePercentage;
  67.         writeMeter(0, numberFormat(oMachine.CPUUsagePercentage) + "%");
  68.         
  69.         cpuUpdated = true;
  70.     }
  71.     
  72.     if (Math.round(intMEMCurrent) != Math.round(oMachine.memoryPercentage))
  73.     {
  74.         intMEMCurrent = oMachine.memoryPercentage;
  75.         writeMeter(1, numberFormat(oMachine.memoryPercentage) + "%");
  76.         
  77.         memoryUpdated = true;
  78.     }
  79.     
  80.     if (cpuUpdated || memoryUpdated)
  81.     {
  82.         moveDial(cpuUpdated, (oMachine.CPUUsagePercentage - intCPUDialPos), memoryUpdated, (oMachine.memoryPercentage - intMEMDialPos) );
  83.     }
  84.     
  85.     gadgetTimeout = setTimeout("updateGadgetDials()", REFRESH_INTERVAL);
  86. }
  87. ////////////////////////////////////////////////////////////////////////////////
  88. //
  89. // update machine status statistics
  90. //
  91. ////////////////////////////////////////////////////////////////////////////////
  92. function machineStatus()
  93. {
  94.     this.CPUCount = System.Machine.CPUs.count;
  95.  
  96.     var usageTotal = 0;
  97.     
  98.     for (var i = 0; i < this.CPUCount; i++)
  99.     {
  100.         usageTotal += System.Machine.CPUs.item(i).usagePercentage;
  101.     }
  102.  
  103.     this.CPUUsagePercentage = Math.min(Math.max(0, usageTotal / this.CPUCount), 100);
  104.     this.totalMemory = System.Machine.totalMemory;
  105.     this.availableMemory = System.Machine.availableMemory;
  106.     
  107.     if((this.totalMemory > 0) && (this.totalMemory > this.availableMemory))
  108.     {
  109.         this.memoryPercentage = Math.min(100 - (this.availableMemory / this.totalMemory * 100), 100);
  110.     }
  111.     else
  112.     {
  113.         this.memoryPercentage = 0;
  114.     }
  115. }
  116. ////////////////////////////////////////////////////////////////////////////////
  117. //
  118. // write meter reading
  119. //
  120. ////////////////////////////////////////////////////////////////////////////////
  121. function writeMeter(dialType, percent)
  122. {
  123.     if (dialType == 0)
  124.     {
  125.         cpuPercentageText.style.left = centerPercent(percent, [33,56], [3,3]);
  126.         cpuPercentageText.innerText = percent;
  127.         cpuMeterLabel.innerHTML = L_PROCESSOR_TEXT + " " +percent;
  128.     }
  129.     else if (dialType == 1)
  130.     {
  131.         memoryPercentageText.style.left = centerPercent(percent, [89,133], [3,5]);
  132.         memoryPercentageText.innerText = percent;
  133.         memoryMeterLabel.innerHTML = L_MEMORY_TEXT + " " +percent;
  134.     }        
  135. }
  136. ////////////////////////////////////////////////////////////////////////////////
  137. //
  138. // move the cpu dial
  139. //
  140. ////////////////////////////////////////////////////////////////////////////////
  141. function moveDial(cpuDial, cpuInc, memoryDial, memoryInc)
  142. {
  143.     if (cpuDial)
  144.     {
  145.         intCPUDialPos += cpuInc;
  146.         
  147.         if (cpuInc > 0)
  148.         {
  149.             intCPUDialPos = Math.min(Math.max(0, intCPUDialPos), intCPUCurrent);
  150.         }
  151.         else
  152.         {
  153.             intCPUDialPos = Math.max(Math.max(0, intCPUCurrent), intCPUDialPos);
  154.         }
  155.         
  156.         cpuMeter.Rotation = (intCPUCurrent * 2.5) + dialOffset;
  157.     }
  158.     
  159.     if (memoryDial)
  160.     {
  161.         intMEMDialPos += memoryInc;
  162.  
  163.         if (memoryInc > 0)
  164.         {
  165.             intMEMDialPos = Math.min(Math.max(0, intMEMDialPos), intMEMCurrent);
  166.         }
  167.         else
  168.         {
  169.             intMEMDialPos = Math.max(Math.max(0, intMEMCurrent), intMEMDialPos);
  170.         }
  171.         
  172.         memMeter.Rotation = (intMEMCurrent * 2.5) + dialOffset;
  173.     }
  174.     
  175. }
  176. ////////////////////////////////////////////////////////////////////////////////
  177. //
  178. //
  179. ////////////////////////////////////////////////////////////////////////////////
  180. function centerPercent(percent, leftPx, adjPx)
  181. {
  182.     var index = 0;
  183.     
  184.     if (!isDocked)
  185.     {
  186.         index = 1;
  187.     }
  188.  
  189.     var left = leftPx[index];
  190.  
  191.     if (percent.length > 3)
  192.     {
  193.         left -= adjPx[index];
  194.     }
  195.     
  196.     return left;
  197. }
  198. ////////////////////////////////////////////////////////////////////////////////
  199. //
  200. //
  201. ////////////////////////////////////////////////////////////////////////////////
  202. function numberFormat(numberIn)
  203. {
  204.     if (numberIn == null || numberIn < 0.5)
  205.     {
  206.         return "00";
  207.     }
  208.     
  209.     numberIn = Math.round(numberIn);    
  210.     
  211.     if (numberIn != null && numberIn < 10)
  212.     {
  213.         return "0" + numberIn;
  214.     }
  215.     else if (numberIn != null && numberIn > 100)
  216.     {
  217.         return 100;
  218.     }
  219.     else
  220.     {
  221.         return numberIn;
  222.     }
  223. }
  224. ////////////////////////////////////////////////////////////////////////////////
  225. //
  226. // styles for gadget when UNDOCKED
  227. //
  228. ////////////////////////////////////////////////////////////////////////////////
  229. function undockedState()
  230. {
  231.     with (document.body.style)
  232.     {
  233.         width = "198px";
  234.         height = "159px";
  235.     }
  236.     background.style.width = "198px";
  237.     background.style.height = "159px";
  238.     background.src = "url(images/back_lrg.png)";
  239.     
  240.     with (cpuMeter.style)
  241.     {
  242.         left = "63px";
  243.         top = "34px";
  244.         width = "10px";
  245.         height = "98px";
  246.     }
  247.     cpuMeter.src = "images/dial_lrg.png";
  248.     
  249.     with (memMeter.style)
  250.     {
  251.         left = "137px";
  252.         top = "16px";
  253.         width = "10px";
  254.         height = "70px";
  255.     }
  256.     memMeter.src = "images/dial_lrg_sml.png";
  257.     
  258.     with (dialDot.style)
  259.     {
  260.         width = "198px";
  261.         height = "150px";
  262.     }
  263.     dialDot.src = "images/dialdot_lrg.png";
  264.         
  265.     cpuPercentageText.style.left = 56;
  266.     cpuPercentageText.style.top = 108;
  267.     cpuPercentageText.style.fontSize = 12;
  268.   
  269.     memoryPercentageText.style.left = 133;
  270.     memoryPercentageText.style.top = 66;
  271.     memoryPercentageText.style.fontSize = 12;
  272.     
  273.     glassMap.src = "images/glass_lrg.png";
  274.     glassMap.useMap = "#back_lrg_Map";
  275.     memoryLargeMap.alt = L_MEMORY_TEXT;
  276.     processorLargeMap.alt = L_PROCESSOR_TEXT;
  277.  
  278.     isDocked = false;
  279. }
  280. ////////////////////////////////////////////////////////////////////////////////
  281. //
  282. // styles for gadget when DOCKED
  283. // 
  284. ////////////////////////////////////////////////////////////////////////////////
  285. function dockedState()
  286. {
  287.     with (document.body.style)
  288.     {
  289.         width = "130px";
  290.         height = "101px";
  291.     }
  292.     background.style.width = "130px";
  293.     background.style.height = "101px";
  294.     background.src = "url(images/back.png)";
  295.     
  296.     with (cpuMeter.style)
  297.     {
  298.         left = "38px";
  299.         top = "22px";
  300.         width = "8px";
  301.         height = "72px";
  302.     }
  303.     cpuMeter.src = "images/dial.png";
  304.     
  305.     with (memMeter.style)
  306.     {
  307.         left = "92px";
  308.         top = "8px";
  309.         width = "8px";
  310.         height = "50px";
  311.     }
  312.     memMeter.src = "images/dial_sml.png";
  313.  
  314.     with (dialDot.style)
  315.     {
  316.         width = "130px";
  317.         height = "101px";
  318.     }
  319.     dialDot.src = "images/dialdot.png";
  320.     
  321.     cpuPercentageText.style.left = 33;
  322.     cpuPercentageText.style.top = 76;
  323.     cpuPercentageText.style.fontSize = 10;
  324.  
  325.     memoryPercentageText.style.left = 89;
  326.     memoryPercentageText.style.top = 43;
  327.     memoryPercentageText.style.fontSize = 10;    
  328.     
  329.     glassMap.src = "images/glass.png";
  330.     glassMap.useMap = "#back_Map";
  331.     memoryMap.alt = L_MEMORY_TEXT;
  332.     processorMap.alt = L_PROCESSOR_TEXT;
  333.     
  334.     isDocked = true;
  335. }
  336. ////////////////////////////////////////////////////////////////////////////////
  337. //
  338. // determine if gadget is in sidebar - docked or on the desktop - undocked
  339. //
  340. ////////////////////////////////////////////////////////////////////////////////
  341. function checkState()
  342. {
  343.     if (!System.Gadget.docked)
  344.     {
  345.         undockedState();
  346.     }
  347.     else
  348.     {
  349.         dockedState();
  350.     }
  351.     
  352.     writeMeter(0, numberFormat(intCPUCurrent) + "%");
  353.     writeMeter(1, numberFormat(intMEMCurrent) + "%");
  354. }
  355. ////////////////////////////////////////////////////////////////////////////////
  356. //
  357. // determine if gadget is visible
  358. //
  359. ////////////////////////////////////////////////////////////////////////////////
  360. function checkVisibility()
  361. {
  362.     isVisible = System.Gadget.visible;
  363.     clearTimeout(gadgetTimeout);
  364.     
  365.     if (isVisible)
  366.     {
  367.         gadgetTimeout = setTimeout("updateGadgetDials()", REFRESH_INTERVAL);
  368.     }
  369. }
  370.