home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Theme / 8GadgetPack / 8GadgetPackSetup.msi / Gadgets.7z / Gadgets / RDSafely.gadget / scripts.js < prev    next >
Text File  |  2012-11-01  |  6KB  |  241 lines

  1. var shell, drives, interval;
  2. var userDir = System.Environment.getEnvironmentVariable('USERPROFILE');
  3.  
  4. function initDrives(gd)
  5. {
  6.     if(interval){
  7.         clearTimeout(interval);    
  8.     }
  9.     
  10.     drives          = new Array();
  11.     var Obj     = new ActiveXObject("Scripting.FileSystemObject");
  12.     var oDrive     = new Enumerator(Obj.Drives);
  13.     
  14.     for (; !oDrive.atEnd(); oDrive.moveNext())
  15.     {
  16.         var dinfo = System.Shell.drive(oDrive.item().DriveLetter);
  17.         
  18.         if(dinfo.driveType == 2 || dinfo.driveType == 3) // Removable or  Fixed Drives
  19.         {
  20.             var drive         = new Object();
  21.             drive.type         = dinfo.driveType;
  22.             drive.letter     = oDrive.item().DriveLetter;
  23.             drive.volume    = (dinfo.isReady ? (dinfo.volumeLabel ? dinfo.volumeLabel : (drive.type == 2 ? 'USB' : 'HDD')) : 'Not Ready');
  24.             drive.ready     = dinfo.isReady;
  25.             drive.total        = (dinfo.isReady ? dinfo.totalSize : 0);
  26.             drive.free        = (dinfo.isReady ? dinfo.freeSpace : 0);            
  27.             drives.push(drive);
  28.         }
  29.     }
  30.     
  31.     if(!gd){
  32.         showDrives();
  33.     }
  34. }
  35.  
  36. function inArray(str, arr)
  37. {
  38.     for(var i=0; i<arr.length; i++){
  39.         if(str == arr[i]){
  40.             return true;    
  41.         }
  42.     }
  43.     return false;
  44. }
  45.  
  46. function variable(varName, def)
  47. {
  48.     var value = System.Gadget.Settings.read(varName);
  49.     if (typeof(value) == "undefined" || value == ''){
  50.         value = def;
  51.     }
  52.     return value;
  53. }
  54.  
  55. function SettingsClosing(event)
  56. {
  57.     if (event.closeAction == event.Action.commit){
  58.         initDrives();
  59.         shell.popup('ok');
  60.     }
  61.     event.cancel = false;
  62. }
  63.  
  64. function showDrives()
  65. {
  66.     var hideNotReady     = variable("rds_hideNotReady", "yes");
  67.     var hideDrives         = variable("rds_hideDrives", "").split(",");
  68.  
  69.     var y = 0;
  70.     
  71.     canvas.removeObjects();
  72.     targets.innerHtml = '';
  73.     
  74.     // Default
  75.     var count = 0;
  76.     
  77.     for(var i = 0; i < drives.length; i++)
  78.     {
  79.         var d = drives[i];
  80.         
  81.         // Populate
  82.         if(!inArray(d.letter, hideDrives))
  83.         {
  84.             if(hideNotReady == 'yes')
  85.             {
  86.                 if(d.ready)
  87.                 {
  88.                     canvas.addImageObject('images/bg.png', 0, y);                      
  89.                     canvas.addImageObject('images/drive'+d.type+'.png', 0, y);
  90.                     canvas.addImageObject('images/eject.png', 110, y+5);
  91.                     canvas.addTextObject(d.volume+' ('+d.letter+':)', 'Segoe UI', 11, 'white', 32, y+6);
  92.  
  93.                     // Bar
  94.                     var f     = Math.round(d.free / d.total * 100);
  95.                     var u     = (100 - f);
  96.                     if(u > 0){
  97.                         var m     = canvas.addImageObject('images/m' + (u < 90 ? 'b': (u < 95 ? 'o': 'r')) + '.png', 0, y + 23);     
  98.                         m.width = Math.floor((u*116) / 100);
  99.                         m.left  = 8 - Math.floor(((116 - m.width) / 2));
  100.                     }
  101.                     
  102.                     // Explore
  103.                     var o = document.createElement('DIV');
  104.                     o.className = 'target';
  105.                     o.style.posTop = y;
  106.                     o.style.width    = '30px';
  107.                     o.style.height    = '20px';
  108.                     o.setAttribute('drive', d.letter);
  109.                     o.ondblclick = (d.ready ? openDrive : null);
  110.                     targets.appendChild(o);
  111.                     
  112.                     // Eject
  113.                     var e = document.createElement('DIV');
  114.                     e.className = 'target';
  115.                     e.style.posLeft = 109;
  116.                     e.style.posTop     = y+5;
  117.                     e.style.width    = '15px';
  118.                     e.style.height    = '15px';
  119.                     e.setAttribute('drive', d.letter);
  120.                     e.onclick = removeDrive;
  121.                     targets.appendChild(e);
  122.                     
  123.                     
  124.                     y += 28;
  125.                     count++;
  126.                 }
  127.             }
  128.             else{
  129.                 canvas.addImageObject('images/bg.png', 0, y);  
  130.                 if(d.ready){
  131.                     canvas.addImageObject('images/drive'+d.type+'.png', 0, y);
  132.                                     
  133.                     // Bar
  134.                     var f     = Math.round(d.free / d.total * 100);
  135.                     var u     = (100 - f);
  136.                     if(u > 0){
  137.                         var m     = canvas.addImageObject('images/m' + (u < 90 ? 'b': (u < 95 ? 'o': 'r')) + '.png', 0, y + 23);     
  138.                         m.width = Math.floor((u*116) / 100);
  139.                         m.left  = 8 - Math.floor(((116 - m.width) / 2));
  140.                     }
  141.                     
  142.                     // Explore
  143.                     var o = document.createElement('DIV');
  144.                     o.className = 'target';
  145.                     o.style.posTop = y;
  146.                     o.style.width    = '30px';
  147.                     o.style.height    = '20px';
  148.                     o.setAttribute('drive', d.letter);
  149.                     o.ondblclick = (d.ready ? openDrive : null);
  150.                     targets.appendChild(o);
  151.                 }
  152.                 else{
  153.                     canvas.addImageObject('images/notready.png', 0, y);    
  154.                 }
  155.                 canvas.addImageObject('images/eject.png', 110, y+5);
  156.                 canvas.addTextObject(d.volume+' ('+d.letter+':)', 'Segoe UI', 11, 'white', 32, y+6);
  157.                 
  158.                 // Eject
  159.                 var e = document.createElement('DIV');
  160.                 e.className = 'target';
  161.                 e.style.posLeft = 109;
  162.                 e.style.posTop     = y+5;
  163.                 e.style.width    = '15px';
  164.                 e.style.height    = '15px';
  165.                 e.setAttribute('drive', d.letter);
  166.                 e.onclick = removeDrive;
  167.                 targets.appendChild(e);
  168.  
  169.                 y += 28;
  170.                 count++;
  171.             }
  172.         }        
  173.     }
  174.     
  175.     if(count > 0){
  176.         if (y < 57) y = 57;
  177.     }
  178.     else{
  179.         canvas.addImageObject('drag.png', 20, 0); 
  180.         y = 96;
  181.     }
  182.     canvas.style.height = y;
  183.     document.body.style.posHeight = y;            
  184.     
  185.     var autoDiscovery = variable("rds_autoDiscovery", 1);
  186.     
  187.     if(autoDiscovery == 1){
  188.         interval = setTimeout(initDrives, 5000);
  189.     }
  190.     else{
  191.         if(interval){
  192.             clearInterval(interval);
  193.         }
  194.     }
  195. }
  196.  
  197. function openDrive()
  198. {
  199.     var d = window.event.srcElement.getAttribute('drive');
  200.     System.Shell.execute(d + ':\\');
  201. }
  202.  
  203. function removeDrive()
  204. {
  205.     var askConfirm = variable("rds_askConfirm", "yes");
  206.  
  207.     var d = window.event.srcElement.getAttribute('drive');
  208.     
  209.     if(askConfirm == 'yes'){
  210.         var conf = shell.Popup('Please confirm removal of drive ('+d+':)', 0, 'Remove Drive ('+d+':)', 4+32);
  211.         if(conf == 6){
  212.             var exec = shell.Run('cmd /C "'+System.Gadget.path+'\\rd.exe" '+d+': -b',0 , true);
  213.         }
  214.         else{
  215.             return;    
  216.         }
  217.     }
  218.     else{
  219.         var exec = shell.Run('cmd /C "'+System.Gadget.path+'\\rd.exe" '+d+': -b',0 , true);
  220.     }
  221.     
  222.     // Result
  223.     switch(exec)
  224.     {
  225.         case 0:
  226.             initDrives();
  227.             break;
  228.         
  229.         case 1:
  230.             shell.Popup("Operation failed.\nDevice is in use.");
  231.             break;
  232.         
  233.         case 2:
  234.             shell.Popup("Operation failed.\nDevice not found.");
  235.             break;
  236.  
  237.         default:
  238.             shell.Popup("Operation failed.\nUnknown Error.");
  239.             break;
  240.     }
  241. }