abcardviewoverlay.js

来自「现在很火的邮件客户端软件thunderbird的源码」· JavaScript 代码 · 共 540 行 · 第 1/2 页

JS
540
字号
  visible = HandleLink(data.cvHomeWebPage, "", card.webPage2, data.cvHomeWebPageBox, card.webPage2) || visible;	cvSetVisible(data.cvhHome, visible);	cvSetVisible(data.cvbHome, visible);  if (card.isMailList) {    // Description section	  visible = cvSetNode(data.cvDescription, card.notes)  	cvSetVisible(data.cvbDescription, visible);    // Addresses section	  visible = cvAddAddressNodes(data.cvAddresses, card.mailListURI);  	cvSetVisible(data.cvbAddresses, visible);     // Other section, not shown for mailing lists.    cvSetVisible(data.cvbOther, false);  }  else {	  // Other section	  visible = cvSetNodeWithLabel(data.cvCustom1, zCustom1, card.custom1);	  visible = cvSetNodeWithLabel(data.cvCustom2, zCustom2, card.custom2) || visible;	  visible = cvSetNodeWithLabel(data.cvCustom3, zCustom3, card.custom3) || visible;	  visible = cvSetNodeWithLabel(data.cvCustom4, zCustom4, card.custom4) || visible;	  visible = cvSetNode(data.cvNotes, card.notes) || visible;    visible = setBuddyIcon(card, data.cvBuddyIcon) || visible;    cvSetVisible(data.cvhOther, visible);    cvSetVisible(data.cvbOther, visible);    // hide description section, not show for non-mailing lists    cvSetVisible(data.cvbDescription, false);    // hide addresses section, not show for non-mailing lists    cvSetVisible(data.cvbAddresses, false);  }	// Phone section	visible = cvSetNodeWithLabel(data.cvPhWork, zWork, card.workPhone);	visible = cvSetNodeWithLabel(data.cvPhHome, zHome, card.homePhone) || visible;	visible = cvSetNodeWithLabel(data.cvPhFax, zFax, card.faxNumber) || visible;	visible = cvSetNodeWithLabel(data.cvPhCellular, zCellular, card.cellularNumber) || visible;	visible = cvSetNodeWithLabel(data.cvPhPager, zPager, card.pagerNumber) || visible;	cvSetVisible(data.cvhPhone, visible);	cvSetVisible(data.cvbPhone, visible);	// Work section	visible = cvSetNode(data.cvJobTitle, card.jobTitle);	visible = cvSetNode(data.cvDepartment, card.department) || visible;	visible = cvSetNode(data.cvCompany, card.company) || visible;                var addressVisible = cvSetNode(data.cvWorkAddress, card.workAddress);	addressVisible = cvSetNode(data.cvWorkAddress2, card.workAddress2) || addressVisible;	addressVisible = cvSetCityStateZip(data.cvWorkCityStZip, card.workCity, card.workState, card.workZipCode) || addressVisible;	addressVisible = cvSetNode(data.cvWorkCountry, card.workCountry) || addressVisible;        if (addressVisible) {          var workMapItUrl = CreateMapItURL(card.workAddress, card.workAddress2, card.workCity, card.workState, card.workZipCode, card.workCountry);          data.cvWorkMapIt.setAttribute('url', workMapItUrl);          if (workMapItUrl) {	    cvSetVisible(data.cvbWorkMapItBox, true);            data.cvWorkMapIt.setAttribute('url', workMapItUrl);          }          else {	    cvSetVisible(data.cvbWorkMapItBox, false);          }        }        else {	  cvSetVisible(data.cvbWorkMapItBox, false);        }        visible = HandleLink(data.cvWorkWebPage, "", card.webPage1, data.cvWorkWebPageBox, card.webPage1) || addressVisible || visible;	cvSetVisible(data.cvhWork, visible);	cvSetVisible(data.cvbWork, visible);	// make the card view box visible	cvSetVisible(top.cvData.CardViewBox, true);}function setBuddyIcon(card, buddyIcon){  try {    var myScreenName = gPrefs.getCharPref("aim.session.screenname");    if (myScreenName && card.primaryEmail) {      if (!gProfileDirURL) {        // lazily create these file urls, and keep them around        var dirService = Components.classes["@mozilla.org/file/directory_service;1"]            .getService(Components.interfaces.nsIProperties);        var profileDir = dirService.get("ProfD", Components.interfaces.nsIFile);        gProfileDirURL = gIOService.newFileURI(profileDir);      }      // if we did have a buddy icon on disk for this screenname, this would be the file url spec for it      var iconURLStr = gProfileDirURL.spec + "/NIM/" + myScreenName + "/picture/" + card.aimScreenName + ".gif";      // check if the file exists      var file = gFileHandler.getFileFromURLSpec(iconURLStr);                  // check if the file exists      // is this a perf hit?  (how expensive is stat()?)      if (file.exists()) {        buddyIcon.setAttribute("src", iconURLStr);        return true;      }    }  }  catch (ex) {    // can get here if no screenname  }    buddyIcon.setAttribute("src", "");  return false;}function ClearCardViewPane(){	cvSetVisible(top.cvData.CardViewBox, false);}function cvSetNodeWithLabel(node, label, text){  if (text) {    if (label)      return cvSetNode(node, label + ": " + text);    else      return cvSetNode(node, text);  }  else    return cvSetNode(node, "");}function cvSetCityStateZip(node, city, state, zip){	var text = "";		if ( city )	{		text = city;		if ( state || zip )			text += ", ";	}	if ( state )		text += state + " ";	if ( zip )		text += zip;		return cvSetNode(node, text);}function cvSetNode(node, text){	if ( node )	{		if ( !node.hasChildNodes() )		{			var textNode = document.createTextNode(text);			node.appendChild(textNode);                   					}		else if ( node.childNodes.length == 1 )			node.childNodes[0].nodeValue = text;		var visible;				if ( text )			visible = true;		else			visible = false;				cvSetVisible(node, visible);	}	return visible;}function cvAddAddressNodes(node, uri){  var visible = false;	if ( node )	{    var displayName = "";     var address = "";    var editList = GetDirectoryFromURI(uri);    var addressList = editList.addressLists;          if (addressList) {      var total = addressList.Count();      if (total > 0) {        while (node.hasChildNodes()) {          node.removeChild(node.lastChild);        }        for (i = 0;  i < total; i++ ) {      		var descNode = document.createElement("description");             address = addressList.GetElementAt(i).QueryInterface(Components.interfaces.nsIAbCard).primaryEmail;              displayName = addressList.GetElementAt(i).QueryInterface(Components.interfaces.nsIAbCard).displayName;            descNode.setAttribute("class", "CardViewLink");          node.appendChild(descNode);                             var linkNode = document.createElementNS("http://www.w3.org/1999/xhtml", "a");          linkNode.setAttribute("id", "addr#" + i);          linkNode.setAttribute("href", "mailto:" + address);          descNode.appendChild(linkNode);                    var textNode = document.createTextNode(displayName + " <" + address + ">");          linkNode.appendChild(textNode);        }			  visible = true;      }		}    		cvSetVisible(node, visible);	}	return visible;}function cvSetVisible(node, visible){	if ( visible )		node.removeAttribute("collapsed");	else		node.setAttribute("collapsed", "true");}function HandleLink(node, label, value, box, link){  var visible = cvSetNodeWithLabel(node, label, value);  if (visible)    node.setAttribute('href', link);  cvSetVisible(box, visible);  return visible;}function MapIt(id){  var button = document.getElementById(id);  try {    var messenger = Components.classes["@mozilla.org/messenger;1"].createInstance();    messenger = messenger.QueryInterface(Components.interfaces.nsIMessenger);    messenger.launchExternalURL(button.getAttribute('url'));    } catch (ex) {}}function CreateMapItURL(address1, address2, city, state, zip, country){  if (!gMapItURLFormat)    return null;  var urlFormat = gMapItURLFormat.replace("@A1", encodeURIComponent(address1));  urlFormat = urlFormat.replace("@A2", encodeURIComponent(address2));  urlFormat = urlFormat.replace("@CO", encodeURIComponent(country));  urlFormat = urlFormat.replace("@CI", encodeURIComponent(city));  urlFormat = urlFormat.replace("@ST", encodeURIComponent(state));  urlFormat = urlFormat.replace("@ZI", encodeURIComponent(zip));    return urlFormat;}// XXX merge with the code in Map Itfunction openLink(id){  try {    var messenger = Components.classes["@mozilla.org/messenger;1"].createInstance();    messenger = messenger.QueryInterface(Components.interfaces.nsIMessenger);    messenger.launchExternalURL(document.getElementById(id).getAttribute("href"));    } catch (ex) {}  // return false, so we don't load the href in the addressbook window  return false;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?