home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 July & August / PCWorld_2005-07-08_cd.bin / komunikace / netscape / nsb-install-8-0.exe / chrome / aim.jar / content / aim / AimTaskMenu.xul < prev    next >
Extensible Markup Language  |  2005-02-26  |  12KB  |  315 lines

  1. <?xml version="1.0"?>
  2.  
  3. <?xml-stylesheet href="chrome://aim/skin/aimTasksOverlay.css" type="text/css"?>
  4.  
  5. <!DOCTYPE overlay SYSTEM "chrome://aim/locale/AimTaskMenu.dtd" >
  6.  
  7. <overlay id="aimTaskMenuID"
  8.          xmlns:html="http://www.w3.org/1999/xhtml"
  9.          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  10.   
  11.   <script language="JavaScript" src="chrome://aim/content/aimHelpers.js" />
  12.   <script language="JavaScript" src="chrome://aim/content/AimSession.js" />
  13.   <script language="JavaScript" src="chrome://aim/content/Aim.js" /> 
  14.  
  15.  
  16.   <keyset id="tasksKeys">
  17.     <key id="key_im"  key="&IMCmd.commandkey;" command="Tasks:IM" modifiers="accel"/>
  18.   </keyset>
  19.  
  20.  
  21.   <commandset id="tasksCommands">
  22.     <command id="Tasks:IM" oncommand="toOpenWindowByType('Aim:AimApp', 'chrome://aim/content/App.xul');"/>
  23.   </commandset>
  24.   
  25.   
  26.   <menupopup id="taskPopup">
  27.     <menuseparator id="sep_switchprofile" hidden="true"/>
  28.     <menuitem id="cmd_switchprofile" hidden="true"/>
  29.   </menupopup>
  30.   
  31.   <!--  MERC: SL Feb 26 - disable IM menu option in window
  32.   <menupopup id="windowPopup">
  33.     <menuitem id="IMMenuItem" insertafter="tasksMenuMail, tasksMenuNavigator" label="&IMCmd.label;" accesskey="&IMCmd.accesskey;" key="key_im" command="Tasks:IM" class="menuitem-iconic icon-aim16"/>
  34.   </menupopup>
  35.   -->
  36.   <statusbarpanel  id="component-bar">
  37.     <toolbarbutton class="taskbutton" id="mini-aim" insertbefore="mini-comp"
  38.             tooltip="aTooltip" tooltiptext="&IMCmd.tooltip;"
  39.             oncommand="toOpenWindowByType('Aim:AimApp', 'chrome://aim/content/App.xul');"/>
  40.   </statusbarpanel >
  41.  
  42. <script type="application/x-javascript">
  43.   <![CDATA[
  44.  
  45. /*
  46.   * Name: checkAimAutoLogin()
  47.   * Arguments: none
  48.   * Description:
  49.   * This function is called everytime a component window( like nav, mail etc.) who can invoke an IM window
  50.   * from their New menu is loaded. The purpose of this function is to autologin to aim if autologin preference is set.
  51.   * There is a global pref - appfirstlogin which is true if the user is launching the app and
  52.   * user has not signed to aim yet. If it is true, then the DoLogin function is called. The timeout is to take care
  53.   * of the delay in loading sidebar buddylist panel.
  54. */
  55.  
  56. function checkAimAutoLogin()
  57. {
  58.   var first= aimPrefsManager().GetBoolPref("aim.session.appfirstlogin", null,true);
  59.   /* If user had already chosen to signoff in some sidebar after the app is launched */
  60.   if (first == false )
  61.       return;
  62.   setTimeout("DoLogin()", 1000);
  63. }
  64.  
  65. /*
  66.   * Name: DoLogin()
  67.   * Arguments: none
  68.   * Description:
  69.   * This function checks to see if aim sidebar panel is clicked or  loaded on top in which case, 
  70.   * this just returns (since sidebar aim panel can take care of this scenario) 
  71.   * It checks to see if all the necessary data for autologin is present,
  72.   * If and only if all data is present, then the user is signed onto aim service. 
  73.   * (This scenario happens when the aim sidebar panel is collapsed but the user had used aim before and set up
  74.   * the autologin pref to be true and has never login to aim this time of launch.)
  75.   * Return Value: none
  76. */
  77.  
  78. function DoLogin()
  79. {
  80.   dump ("---+ AimTaskMenu.xul - DoLogin() document is " + document + "\n");
  81.  
  82.   // var panelset=document.getElementById("sidebar-box"); //was sidebar-panels but works with sidebar-box?
  83.    var panelset=document.getElementById("sidebar-box"); // id = numberchatting
  84.   
  85.    //dump ("---+ panelset is " + panelset + "\n");
  86.    
  87.   // dump ("---+ document is " + top.parent.document.getAttribute('id') + "\n");
  88.   // dump ("---+ document is " + top.document.nodeName + "\n");  // = #document
  89.   // dump ("---+ " + parent.document.firstChild.nodeName + "\n"); // = window
  90.    
  91.   for (var i=0; i<panelset.childNodes.length-1; i+=2) {
  92.     var panel=panelset.childNodes.item(i);
  93.       dump ("---+ item is " + panel.getAttribute('id') + "\n");
  94.     if (panel.getAttribute('id') == "urn:sidebar:panel:im-panel"){
  95.       if (panel.getAttribute('selected')) {
  96.          dump ("---+ panel is selected-- HOORAY!!\n");
  97.         //already as top selected panel in sidebar - sidebar window load will do the rest-just return
  98.         return;
  99.       }
  100.     }
  101.   }
  102.   var pIAimManager=Components.classes['@netscape.com/aim/IMManager;1'].getService(Components.interfaces.nsIIMManager);
  103.   var pIAimSession = pIAimManager.QueryInterface(Components.interfaces.nsIAimSession);
  104.   
  105.   //user already logged in - just return
  106.   var isOnline = pIAimSession.IsOnline();
  107.   if ( isOnline == true )
  108.     return;
  109.   
  110.   var autoLogin = aimPrefsManager().GetBoolPref("aim.session.autologin", null, false);
  111.   if (!autoLogin)
  112.    return;
  113.   
  114.   var screenName = aimPrefsManager().GetCharPref("aim.session.screenname", null, true);
  115.   if (!screenName || screenName == '')
  116.     return;
  117.    
  118.   var connectionName = aimPrefsManager().GetCharPref("aim.session.connectionname", null, false);
  119.   if (!connectionName || connectionName == '')
  120.     return;
  121.  
  122. dump("DoLogin connectionName=" + connectionName);
  123.    
  124.   if (!IsServiceCorrect(screenName, connectionName)) {
  125.     return;  
  126.   }
  127.  
  128.   if(pIAimSession)
  129.   {
  130.     var password = pIAimSession.GetSavedPassword(screenName);
  131.     if (!password || password == '')
  132.       return;
  133.     
  134.     setConnectionInfo (connectionName, "im");
  135.     
  136.     pIAimSession.Login(screenName, password, getsidebarframe());
  137.     
  138.       return;
  139.     }
  140. }
  141.  
  142. var instaimTaskObserver = null;
  143.  
  144. function aimTaskObserver()
  145. {
  146. }
  147.  
  148. aimTaskObserver.prototype.observe = function(subject, message, data) {
  149.     if (message == 'sessionState-changed')  {
  150.         UpdateTaskImage(data);
  151.      }
  152.     if (message == 'sessionMode-changed') {
  153.         ChangeTaskImage(data);
  154.      }
  155.     if (message == 'quit-application') {
  156.       aimPrefsManager().SetBoolPref("aim.session.appfirstlogin",true,null, true);
  157.     }
  158. }
  159.  
  160. /*
  161.  * Name: UpdateTaskImage(stateMsg)
  162.  * Arguments: stateMsg - obtained passed from the observe code above. This contains the state information
  163.  * Description: This function will change the task bar aim icon online-state attribute based on the input stateMsg. The css rules
  164.  * will then take into effect and up[date the icon appropriately.
  165.  * Author: Prassanna prass@netscape.com
  166. */
  167. function UpdateTaskImage(stateMsg)
  168. {
  169.    var taskIcon= window.document.getElementById("mini-aim");  
  170.    switch (stateMsg) {
  171.     case "Offline": taskIcon.setAttribute("online-state", "offline"); break;
  172.     case "Online": taskIcon.setAttribute("online-state", "online"); break;
  173.     case "OnlineAway":  taskIcon.setAttribute("online-state", "away"); break;
  174.     default:  taskIcon.setAttribute("online-state", "offline");
  175.    }
  176. }
  177.  
  178.  
  179.  
  180. function ChangeTaskImage(Msg)
  181. {
  182.    var taskIcon= window.document.getElementById("mini-aim");  
  183.    var windowIcon = window.document.getElementById("IMMenuItem");  
  184.    var ptIcon= window.document.getElementById("AimPT-button");
  185.    if (taskIcon && windowIcon)
  186.    {
  187.    switch (Msg) {
  188.     case "Aim": taskIcon.setAttribute("sessionMode", "Aim");
  189.                 windowIcon.setAttribute("class","menuitem-iconic icon-aim16");
  190.                 if (ptIcon) {
  191.                   ptIcon.setAttribute("sessionMode","Aim");
  192.                   ptIcon.setAttribute("label","AIM");
  193.                   }
  194.                 break;
  195.     case "Icq": taskIcon.setAttribute("sessionMode", "Icq");
  196.                 windowIcon.setAttribute("class","menuitem-iconic icon-icq16");
  197.                 if (ptIcon) {
  198.                   ptIcon.setAttribute("sessionMode","Icq");
  199.                   ptIcon.setAttribute("label","ICQ");
  200.                   }
  201.                 break;
  202.     default:    var SessionType= getCurrentSessionType();
  203.                 if (SessionType == "ICQ")
  204.                 {
  205.                   taskIcon.setAttribute("sessionMode", "Icq");
  206.                   windowIcon.setAttribute("class","menuitem-iconic icon-icq16");
  207.                   if (ptIcon) {
  208.                     ptIcon.setAttribute("sessionMode","Icq");
  209.                     ptIcon.setAttribute("label","ICQ");
  210.                     }
  211.                 }
  212.                 else
  213.                 {
  214.                   taskIcon.setAttribute("sessionMode", "Aim");
  215.                   windowIcon.setAttribute("class","menuitem-iconic icon-aim16");
  216.                   if (ptIcon) {
  217.                     ptIcon.setAttribute("sessionMode","Aim");
  218.                     ptIcon.setAttribute("label","AIM");
  219.                     }
  220.                 }
  221.                 break;
  222.     }
  223.   }
  224. }
  225. /*
  226.   * Name: initializeTaskIcon()
  227.   * Arguments: none
  228.   * This function is called a new window is loaded. This will initialize the aim task bar icon with the aimsession's current State
  229.   * when the current window is loading.
  230.   * Author: Prassanna prass@netscape.com
  231. */
  232. function initializeTaskIcon()
  233. {
  234.   var pIAimManager=Components.classes['@netscape.com/aim/IMManager;1'].getService(Components.interfaces.nsIIMManager);
  235.   var pIAimSession = pIAimManager.QueryInterface(Components.interfaces.nsIAimSession);
  236.   var pState = eval(pIAimSession.CurrentState);
  237.   var taskIcon = window.document.getElementById("mini-aim");  
  238.   var windowIcon = window.document.getElementById("IMMenuItem");  
  239.   var ptIcon= window.document.getElementById("AimPT-button");
  240.   if (taskIcon && windowIcon) {
  241.       var SessionType= getCurrentSessionType();
  242.       if (SessionType == "ICQ")
  243.       {
  244.         taskIcon.setAttribute("sessionMode", "Icq");
  245.         windowIcon.setAttribute("class","menuitem-iconic icon-icq16");
  246.         if (ptIcon) {
  247.           ptIcon.setAttribute("sessionMode","Icq");
  248.           ptIcon.setAttribute("label","ICQ");
  249.         }
  250.       }
  251.       else
  252.       {
  253.         taskIcon.setAttribute("sessionMode", "Aim");
  254.         windowIcon.setAttribute("class","menuitem-iconic icon-aim16");
  255.         if (ptIcon) {
  256.           ptIcon.setAttribute("sessionMode","Aim");
  257.           ptIcon.setAttribute("label","AIM");
  258.           }
  259.       }
  260.     switch (pState) {
  261.       case 1: taskIcon.setAttribute("online-state", "offline"); break;
  262.       case 8: taskIcon.setAttribute("online-state", "online"); break;
  263.       case 9: taskIcon.setAttribute("online-state", "away"); break;
  264.       default: taskIcon.setAttribute("online-state", "offline");
  265.     }
  266.   }
  267. }
  268.  
  269. function Init()
  270. {
  271.    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService();
  272.    observerService = observerService.QueryInterface(Components.interfaces.nsIObserverService);
  273.     if (observerService) {
  274.       instaimTaskObserver = new aimTaskObserver();
  275.     }
  276.     if (observerService && instaimTaskObserver) {
  277.       observerService.addObserver(instaimTaskObserver, "quit-application", false);
  278.       observerService.addObserver(instaimTaskObserver,"sessionState-changed", false);
  279.       observerService.addObserver(instaimTaskObserver,"sessionMode-changed", false);
  280.      } else {
  281.       instaimTaskObserver=null;
  282.       dump("failed to get observer service\n");
  283.     }
  284.     // if there is a sidebar, check for aim auto login
  285.    if (document.getElementById('sidebar-box'))
  286.      checkAimAutoLogin();
  287.  
  288.   // initialize the aim task icon to the current icon state
  289.   initializeTaskIcon();
  290.  
  291.   // Remove the observers during unload
  292.   window.addEventListener("unload", Uninit, false); 
  293. }
  294.  
  295.  
  296. function Uninit()
  297. {
  298.    var observerService = Components.classes["@mozilla.org/observer-service;1"].getService();
  299.    observerService = observerService.QueryInterface(Components.interfaces.nsIObserverService);
  300.   if (observerService  && instaimTaskObserver)
  301.      {
  302.  
  303.       observerService.removeObserver(instaimTaskObserver, "quit-application");
  304.       observerService.removeObserver(instaimTaskObserver,"sessionState-changed");
  305.       observerService.removeObserver(instaimTaskObserver,"sessionMode-changed");
  306.       //instaimTaskObserver=null;
  307.      }
  308.  }
  309.   
  310.   window.addEventListener("load", Init, false); 
  311. ]]>
  312. </script>         
  313.  
  314. </overlay>
  315.