home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 December / PCWorld_2006-12_cd.bin / komunikace / netscape / nsb-install-8-1-2.exe / chrome / aim.jar / content / aim / IMBuddyIconKnockKnock.js < prev    next >
Text File  |  2006-01-06  |  5KB  |  153 lines

  1. //globals
  2. var IMServiceClass = Components.classes['@netscape.com/aim/IMManager;1'];
  3. var pIIMManager  = IMServiceClass.getService(Components.interfaces.nsIIMManager);
  4. var nimSession = pIIMManager.QueryInterface(Components.interfaces.nsIAimSession);
  5. var nimIM = pIIMManager.QueryInterface(Components.interfaces.nsIAimIM);
  6. var nimBuddy = pIIMManager.QueryInterface(Components.interfaces.nsIAimBuddy);
  7. inviteArgsObj = window.arguments[0];
  8. var buddyName    = inviteArgsObj.inviteProposalScreenName;
  9. //this is used to check how we call the onunload handler. Either by butten clicks or by close.
  10. var buttonClose = 0;
  11.  
  12. function fillImageFunction()
  13. {
  14.   var biimage = document.getElementById("bIcon");
  15.   var sn = document.getElementById("ScreenName");
  16.   var desc2 = document.getElementById("desc2");
  17.   var pDir = nimSession.profileDir;
  18.   var pictureDir = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  19.   pictureDir.initWithPath(pDir.path);
  20.   pictureDir.append("picture");
  21.   if (pictureDir.exists()) {
  22.     pictureDir.append("temp"+buddyName+".gif");
  23.     if (pictureDir.exists()) {
  24.       var fileHandler = GetFileHandler();
  25.       var tfileurl = fileHandler.getURLSpecFromFile(pictureDir);
  26.       //this is just to avoid from loading from the cache.
  27.       var currentTime = new Date().getTime();
  28.       biimage.setAttribute("src", tfileurl+"?foobar="+currentTime);
  29.       var desc = aimString("bi.kktext").replace(/%ScreenName%/, buddyName);
  30.       var textNode = document.createTextNode(desc);
  31.       sn.appendChild(textNode);
  32.       var desc2Value = aimString("bi.kktext2");
  33.       var textNode1 = document.createTextNode(desc2Value);
  34.       desc2.appendChild(textNode1);
  35.     }
  36.   }
  37.  
  38.   document.getElementById("acceptButton").focus();
  39.  
  40.  
  41. }
  42.  
  43. function buddyIconKKOnUnload()
  44. {
  45.   // if this unload is called coz of the button close, just return.
  46.   if (buttonClose)
  47.     return;
  48.  
  49.   //if the user clicks the x on right top, => reject BI. This is how AIM works.
  50.   cmdBIIncomingReject();
  51. }
  52.  
  53. function cmdBIIncomingAccept()
  54. {
  55.   buttonClose = 1;
  56.   var pDir = nimSession.profileDir;
  57.  
  58.   var picturedir = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  59.   picturedir.initWithPath(pDir.path);
  60.   picturedir.append("picture");
  61.  
  62.   var temppicturefile = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  63.   temppicturefile.initWithPath(pDir.path);
  64.   temppicturefile.append("picture");
  65.  
  66.   var pictureDir = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
  67.   pictureDir.initWithPath(pDir.path);
  68.   pictureDir.append("picture");
  69.   if (pictureDir.exists()) {
  70.     pictureDir.append(buddyName+".gif");
  71.     if (pictureDir.exists()) {
  72.       //delete any existing <SN>.gif file from the dir.
  73.       pictureDir.remove(false);
  74.     }
  75.  
  76.     if(picturedir.exists()) {
  77.       //these tests shd ideally pass all the time.
  78.       var newname = buddyName+".gif";
  79.       temppicturefile.append("temp"+buddyName+".gif");
  80.       if (temppicturefile.exists()) {
  81.         //copy the tempSN.gif to SN.gif and remove tempSN.gif
  82.         temppicturefile.copyTo(picturedir, newname);
  83.         temppicturefile.remove(false);
  84.  
  85.         //IM window update
  86.         picturedir.append(newname);
  87.         var fileHandler = GetFileHandler();
  88.         picturedir = fileHandler.getURLSpecFromFile(picturedir);
  89.         var currentTime = new Date().getTime();
  90.         var pIAimIM = aimIM();
  91.           if(pIAimIM) {
  92.               var pWindow = pIAimIM.GetExistingIM(buddyName);
  93.               if(pWindow) {
  94.             var doc = pWindow.document;
  95.             var imageElement = doc.getElementById("BuddyIcon");
  96.             if (imageElement) {
  97.               imageElement.setAttribute("src", picturedir+"?foobar="+currentTime);
  98.             }
  99.               
  100.  
  101.           }
  102.         }
  103.       }
  104.     }
  105.   }
  106.  
  107.   nimIM.SetHasBIBuddyIconFlag(buddyName, true);
  108.  
  109.   var nimBuddy = aimBuddyManager();
  110.   nimBuddy.SetHasBuddyIconFlag(buddyName, true);
  111.   window.close();
  112.  
  113. }
  114.  
  115. function cmdBIIncomingReject()
  116. {
  117.   buttonClose = 1;
  118.   var rdf = aimRDF();
  119.   var rejres = rdf.GetResource("http://home.netscape.com/NC-rdf#Reject");
  120.   var trueliteral = rdf.GetLiteral("true");
  121.   nimIM.SetBuddyIconFlag(buddyName, rejres, trueliteral);
  122.   nimBuddy.SetBuddyIconRejectFlag(buddyName, true);
  123.   window.close();
  124. }
  125.  
  126. function cmdBIIncomingWarn()
  127. {
  128.   buttonClose = 1;
  129.   var warnUserArgs = new Object();
  130.   warnUserArgs.screenName = buddyName;
  131.   //two modal dialogs are bad in mozilla (until the control completes here, another modal dialog will not pop up).
  132.   window.close();  
  133.   window.openDialog("chrome://aim/content/WarnUser.xul","_blank", "chrome,dialog=no",warnUserArgs);
  134.   
  135. }
  136.  
  137. function GetFileHandler()
  138. {
  139.   var IOService = Components.classes["@mozilla.org/network/io-service;1"]
  140.           .getService(Components.interfaces.nsIIOService);
  141.  
  142.   return IOService.getProtocolHandler("file")
  143.                   .QueryInterface(Components.interfaces.nsIFileProtocolHandler);
  144. }
  145.  
  146. function stopShowingKK()
  147. {
  148.   if (document.getElementById("dontdisplay").checked)
  149.     aimPrefsManager().SetBoolPref("aim.buddyicon.showknockknock", false, null, false);
  150.   else
  151.     aimPrefsManager().SetBoolPref("aim.buddyicon.showknockknock", true, null, false);
  152. }
  153.