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 + -
显示快捷键?