home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 35 Internet / 35-Internet.zip / mozil06.zip / bin / chrome / messenger.jar / content / messenger / addressbook / addressbook.js < prev    next >
Text File  |  2001-02-14  |  8KB  |  321 lines

  1. var cvPrefs = 0;
  2. var addressbook = 0;
  3. var gUpdateCardView = 0;
  4.  
  5. function OnLoadAddressBook()
  6. {
  7.     verifyAccounts();     // this will do migration, if we need to.
  8.  
  9.     top.addressbook = Components.classes["@mozilla.org/addressbook;1"].createInstance();
  10.     top.addressbook = top.addressbook.QueryInterface(Components.interfaces.nsIAddressBook);
  11.     top.gUpdateCardView = UpdateCardView;
  12.  
  13.     InitCommonJS();
  14.     GetCurrentPrefs();
  15.  
  16.     // FIX ME - later we will be able to use onload from the overlay
  17.     OnLoadCardView();
  18.     
  19.     try {
  20.         top.addressbook.setWebShellWindow(window)
  21.     }
  22.     catch (ex) {
  23.         dump("failed to set webshell window\n");
  24.     }
  25.  
  26.     SetupCommandUpdateHandlers();
  27.  
  28.     //workaround - add setTimeout to make sure dynamic overlays get loaded first
  29.     setTimeout('SelectFirstAddressBook()',0);
  30. }
  31.  
  32.  
  33. function GetCurrentPrefs()
  34. {
  35.     // prefs
  36.     if ( cvPrefs == 0 )
  37.         cvPrefs = new Object;
  38.  
  39.     var prefs = Components.classes["@mozilla.org/preferences;1"];
  40.     if ( prefs )
  41.     {
  42.         prefs = prefs.getService();
  43.         if ( prefs )
  44.             prefs = prefs.QueryInterface(Components.interfaces.nsIPref);
  45.     }
  46.             
  47.     if ( prefs )
  48.     {
  49.         try {
  50.             cvPrefs.prefs = prefs;
  51.             cvPrefs.displayLastNameFirst = prefs.GetBoolPref("mail.addr_book.displayName.lastnamefirst");
  52.             cvPrefs.nameColumn = prefs.GetIntPref("mail.addr_book.lastnamefirst");
  53.             cvPrefs.lastFirstSeparator = ", ";
  54.             cvPrefs.firstLastSeparator = " ";
  55.         }
  56.         catch (ex) {
  57.             dump("failed to get the mail.addr_book.displayName.lastnamefirst pref\n");
  58.         }
  59.     }
  60.     
  61.     // check "Show Name As" menu item based on pref
  62.     var menuitemID;
  63.     switch ( cvPrefs.nameColumn )
  64.     {
  65.         case 2:
  66.             menuitemID = 'firstLastCmd';
  67.             break;
  68.         case 1:
  69.             menuitemID = 'lastFirstCmd';
  70.             break;
  71.         case 0:
  72.         default:
  73.             menuitemID = 'displayNameCmd';
  74.             break;
  75.     }
  76.     menuitem = top.document.getElementById(menuitemID);
  77.     if ( menuitem )
  78.         menuitem.setAttribute('checked', 'true');
  79. }
  80.  
  81.  
  82. function SetNameColumn(cmd)
  83. {
  84.     var prefValue;
  85.     
  86.     switch ( cmd )
  87.     {
  88.         case 'firstLastCmd':
  89.             prefValue = 2;
  90.             break;
  91.         case 'lastFirstCmd':
  92.             prefValue = 1;
  93.             break;
  94.         case 'displayNameCmd':
  95.             prefValue = 0;
  96.             break;
  97.     }
  98.     
  99.     // set pref in file and locally
  100.     cvPrefs.prefs.SetIntPref("mail.addr_book.lastnamefirst", prefValue);
  101.     cvPrefs.nameColumn = prefValue;
  102.     
  103.     var selectionArray = RememberResultsTreeSelection();
  104.     ClearResultsTreeSelection()    ;
  105.     
  106.     RedrawResultsTree();
  107.     
  108.     WaitUntilDocumentIsLoaded();
  109.     SortToPreviousSettings();
  110.     RestoreResultsTreeSelection(selectionArray);
  111. }
  112.  
  113.  
  114. function CommandUpdate_AddressBook()
  115. {
  116.     goUpdateCommand('button_delete');
  117.     
  118.     // get selection info from dir pane
  119.     var oneAddressBookSelected = false;
  120.     if ( dirTree && dirTree.selectedItems && (dirTree.selectedItems.length == 1) )
  121.         oneAddressBookSelected = true;
  122.         
  123.     // get selection info from results pane
  124.     var selectedCards = GetSelectedAddresses();
  125.     var oneOrMoreCardsSelected = false;
  126.     if ( selectedCards )
  127.         oneOrMoreCardsSelected = true;
  128.     
  129.     // set commands to enabled / disabled
  130.     //goSetCommandEnabled('cmd_PrintCard', oneAddressBookSelected);
  131.     goSetCommandEnabled('cmd_SortByName', oneAddressBookSelected);
  132.     goSetCommandEnabled('cmd_SortByEmail', oneAddressBookSelected);
  133.     goSetCommandEnabled('cmd_SortByWorkPhone', oneAddressBookSelected);
  134.     goSetCommandEnabled('cmd_SortByOrganization', oneAddressBookSelected);
  135. }
  136.  
  137.  
  138. function UpdateCardView()
  139. {
  140.     if ( resultsTree && resultsTree.selectedItems && (resultsTree.selectedItems.length == 1) )
  141.         DisplayCardViewPane(resultsTree.selectedItems[0]);
  142.     else
  143.         ClearCardViewPane();
  144. }
  145.  
  146.  
  147. function AbClose()
  148. {
  149.     top.close();
  150. }
  151.  
  152. function AbNewAddressBook()
  153. {
  154.     var dialog = window.openDialog("chrome://messenger/content/addressbook/abAddressBookNameDialog.xul",
  155.                                    "",
  156.                                    "chrome,titlebar",
  157.                                    {okCallback:AbCreateNewAddressBook});
  158. }
  159.  
  160. function AbCreateNewAddressBook(name)
  161. {
  162.     top.addressbook.newAddressBook(dirTree.database, resultsTree, name);
  163. }
  164.  
  165. function AbPrintCard()
  166. {
  167.     dump("print card\n");
  168.  
  169.     var selectedItems = resultsTree.selectedItems;
  170.     var numSelected = selectedItems.length;
  171.  
  172.     if (numSelected == 0)
  173.     {
  174.         dump("AbPrintCard(): No card selected.\n");
  175.         return false;
  176.     }  
  177.     var statusFeedback;
  178.     statusFeedback = Components.classes["@mozilla.org/messenger/statusfeedback;1"].createInstance();
  179.     statusFeedback = statusFeedback.QueryInterface(Components.interfaces.nsIMsgStatusFeedback);
  180.  
  181.     var selectionArray = new Array(numSelected);
  182.  
  183.     var totalCard = 0;
  184.     for(var i = 0; i < numSelected; i++)
  185.     {
  186.         var uri = selectedItems[i].getAttribute("id");
  187.         var cardResource = top.rdf.GetResource(uri);
  188.         var card = cardResource.QueryInterface(Components.interfaces.nsIAbCard);
  189.         if (card.printCardUrl.length)
  190.         {
  191.             selectionArray[totalCard++] = card.printCardUrl;
  192.             dump("printCardUrl = " + card.printCardUrl + "\n");
  193.         }
  194.     }
  195.  
  196.     printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
  197.                                         "",
  198.                                         "chrome,dialog=no,all",
  199.                                         totalCard, selectionArray, statusFeedback);
  200.  
  201.     return true;
  202. }
  203.  
  204. function AbPrintAddressBook()
  205. {
  206.         dump("print address book \n");
  207.         try {
  208.                 addressbook.PrintAddressbook();
  209.         }
  210.         catch (ex) {
  211.                 dump("failed to print address book\n");
  212.         }
  213. }
  214.  
  215. function AbImport()
  216. {
  217.     try {
  218.         addressbook.importAddressBook();
  219.     }
  220.     catch (ex) {
  221.         alert("failed to import the addressbook.\n");
  222.         dump("import failed:  " + ex + "\n");
  223.     }
  224. }
  225.  
  226. /*
  227. function AbDelete()
  228. {
  229. //    dump("\AbDelete from XUL\n");
  230.     var tree = document.getElementById('resultsTree');
  231.     if ( tree )
  232.     {
  233.         //get the selected elements
  234.         var cardList = tree.selectedItems;
  235.         //get the current folder
  236.         var srcDirectory = document.getElementById('resultsTree');
  237.         dump("srcDirectory = " + srcDirectory + "\n");
  238.         top.addressbook.deleteCards(tree, srcDirectory, cardList);
  239.     }
  240. }
  241. */
  242.  
  243.  
  244. function AbDeleteDirectory()
  245. {
  246.     dump("\AbDeleteDirectory from XUL\n");
  247.  
  248.     var commonDialogsService 
  249.         = Components.classes["@mozilla.org/appshell/commonDialogs;1"].getService();
  250.     commonDialogsService 
  251.         = commonDialogsService.QueryInterface(Components.interfaces.nsICommonDialogs);
  252.  
  253.     var selArray = dirTree.selectedItems;
  254.     var count = selArray.length;
  255.     debugDump("selArray.length = " + count + "\n");
  256.     if (count == 0)
  257.         return;
  258.  
  259.     var isPersonalOrCollectedAbsSelectedForDeletion = false;
  260.     var parentArray = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
  261.     if ( !parentArray ) return (false); 
  262.  
  263.     for ( var i = 0; i < count; ++i )
  264.     {
  265.         debugDump("    nodeId #" + i + " = " + selArray[i].getAttribute("id") + "\n");
  266.         
  267.         // check to see if personal or collected address books is selected for deletion.
  268.         // if yes, prompt the user an appropriate message saying these cannot be deleted
  269.         // if no, mark the selected items for deletion
  270.         if ((selArray[i].getAttribute("id") != "abdirectory://history.mab") &&
  271.              (selArray[i].getAttribute("id") != "abdirectory://abook.mab"))
  272.         {
  273.             var parent = selArray[i].parentNode.parentNode;
  274.             if (parent)
  275.             {
  276.                 if (parent == dirTree)
  277.                     var parentId = "abdirectory://";
  278.                 else    
  279.                     var parentId = parent.getAttribute("id");
  280.  
  281.                 debugDump("    parentId #" + i + " = " + parentId + "\n");
  282.                 var dirResource = rdf.GetResource(parentId);
  283.                 var parentDir = dirResource.QueryInterface(Components.interfaces.nsIAbDirectory);
  284.                 parentArray.AppendElement(parentDir);
  285.             }
  286.         }
  287.         else 
  288.         {
  289.             if (commonDialogsService)
  290.             {
  291.                 commonDialogsService.Alert(window,
  292.                     Bundle.GetStringFromName("cannotDeleteTitle"), 
  293.                     Bundle.GetStringFromName("cannotDeleteMessage"));
  294.             }
  295.  
  296.             isPersonalOrCollectedAbsSelectedForDeletion = true;
  297.             break;
  298.         }
  299.     }
  300.  
  301.     if (!isPersonalOrCollectedAbsSelectedForDeletion) {
  302.         var confirmDeleteAddressbook =
  303.             Bundle.GetStringFromName("confirmDeleteAddressbook");
  304.  
  305.         if(!window.confirm(confirmDeleteAddressbook))
  306.             return;
  307.  
  308.         top.addressbook.deleteAddressBooks(dirTree.database, parentArray, dirTree.selectedItems);
  309.     }
  310. }
  311.  
  312. function clickResultsTree(event)
  313. {
  314.     if (event.target.localName != "treecell" &&
  315.         event.target.localName != "treeitem")
  316.         return;
  317.  
  318.     if ( event.detail == 2 ) top.AbEditCard();
  319. }
  320.  
  321.