?? msgmail3panewindow.js
字號:
var folderSizeCol = document.getElementById("folderSizeCol"); folderUnreadCol.setAttribute("hidden", "true"); folderTotalCol.setAttribute("hidden", "true"); folderSizeCol.setAttribute("hidden", "true"); folderNameCol.removeAttribute("label"); } else { folderNameCol.setAttribute("label", folderColumnLabel.value); } folderNameCol.setAttribute("hideheader", showColumns ? "false" : "true"); var folderTree = document.getElementById("folderTree"); folderTree.setAttribute("hidecolumnpicker", showColumns ? "false" : "true"); var hidden = folderUnreadCol.getAttribute("hidden"); if (hidden != "true") { var folderNameCell = document.getElementById("folderNameCell"); folderNameCell.setAttribute("label", "?folderTreeSimpleName"); }} // loadFolderViewForTree -- a helper routine split away from// loadFolderView.// returns a localized string corresponding to the name of the new viewfunction loadFolderViewForTree(aNewFolderView, aFolderTree){ var folderPaneHeader = document.getElementById('folderpane-title'); var database = aFolderTree.database; var nsIRDFDataSource = Components.interfaces.nsIRDFDataSource; // Each folder pane view has the following properties: // ref-> the ref attribute for the folderTree // label -> the UI label associated with the folder view // datasources -> array of the data sources associated with the view var folderViews = [ {ref:"msgaccounts:/", label:"folderPaneHeader", dataSources: [accountManagerDataSource.QueryInterface(nsIRDFDataSource), folderDataSource.QueryInterface(nsIRDFDataSource)] }, {ref:"mailnewsunreadfolders:/", label:"folderPaneHeader_unread", dataSources: [unreadFolderDataSource.QueryInterface(nsIRDFDataSource)]}, {ref:"mailnewsfavefolders:/", label:"folderPaneHeader_favorites", dataSources: [favoriteFoldersDataSource.QueryInterface(nsIRDFDataSource)]}, {ref:"mailnewsrecentfolders:/", label:"folderPaneHeader_recent", dataSources: [recentFoldersDataSource.QueryInterface(nsIRDFDataSource)]}, ]; // unload the current data sources if (gCurrentFolderView != undefined) { var dataSourcesToUnload = folderViews[gCurrentFolderView].dataSources; for (index in dataSourcesToUnload) database.RemoveDataSource(dataSourcesToUnload[index]); } // add the new data sources var dataSourcesToAdd = folderViews[aNewFolderView].dataSources; for (index in dataSourcesToAdd) { database.AddDataSource(dataSourcesToAdd[index]); var msgDS = dataSourcesToAdd[index].QueryInterface(Components.interfaces.nsIMsgRDFDataSource); msgDS.window = msgWindow; } aFolderTree.setAttribute('ref', folderViews[aNewFolderView].ref); return gMessengerBundle.getString(folderViews[aNewFolderView].label);}function loadFolderView(aNewFolderView){ if (gCurrentFolderView && (gCurrentFolderView == aNewFolderView)) return; var folderTree = GetFolderTree(); var folderPaneHeader = document.getElementById('folderpane-title'); var folderTree = GetFolderTree(); var database = GetFolderDatasource(); // load the folder view into the folder pane folderPaneHeader.value = loadFolderViewForTree(aNewFolderView, GetFolderTree()); // if the folder location picker is visible, load the folder view into the location // picker as well. var folderLocationPicker = document.getElementById('folder-location-container'); if (folderLocationPicker) loadFolderViewForTree(aNewFolderView, document.getElementById('folderLocationPopup').tree); // now reflect the new value back into prefs pref.setIntPref('mail.ui.folderpane.view', gCurrentFolderView = aNewFolderView);}// we can cycle the folder view forward or backwardsfunction CycleFolderView(aCycleForward){ // pass the call onto loadFolderView... var offset = aCycleForward ? 1 : kNumFolderViews - 1; loadFolderView((gCurrentFolderView + offset) % kNumFolderViews);}function OnLoadFolderPane(){ UpdateFolderColumnVisibility(); var folderUnreadCol = document.getElementById("folderUnreadCol"); folderUnreadCol.addEventListener("DOMAttrModified", OnFolderUnreadColAttrModified, false); loadFolderView(pref.getIntPref('mail.ui.folderpane.view')); var folderTree = GetFolderTree(); var folderTreeBuilder = folderTree.builder.QueryInterface(Components.interfaces.nsIXULTreeBuilder); folderTreeBuilder.addObserver(folderObserver); folderTree.addEventListener("click",FolderPaneOnClick,true); folderTree.addEventListener("mousedown",TreeOnMouseDown,true);}function OnUnloadFolderPane(){ var folderTreeBuilder = GetFolderTree().builder.QueryInterface(Components.interfaces.nsIXULTreeBuilder); folderTreeBuilder.removeObserver(folderObserver);}// builds prior to 12-08-2001 did not have the labels column// in the thread pane. so if a user ran an old build, and then// upgraded, they get the new column, and this causes problems.// We're trying to avoid a similar problem to bug #96979.// to work around this, we hide the column once, using the // "mailnews.ui.threadpane.version" pref.function UpgradeThreadPaneUI(){ var threadPaneUIVersion; try { threadPaneUIVersion = pref.getIntPref("mailnews.ui.threadpane.version"); if (threadPaneUIVersion < 5) { var threadTree = document.getElementById("threadTree"); var junkCol = document.getElementById("junkStatusCol"); var beforeCol; if (threadPaneUIVersion < 4) { if (threadPaneUIVersion < 3) { // in thunderbird, we are inserting the junk column just before the // date column. var dateCol = document.getElementById("dateCol"); threadTree._reorderColumn(junkCol, dateCol, true); } var senderCol = document.getElementById("senderCol"); var recipientCol = document.getElementById("recipientCol"); threadTree._reorderColumn(recipientCol, junkCol, true); threadTree._reorderColumn(senderCol, recipientCol, true); } // version 4 upgrades // version 5 adds a new column called attachments var attachmentCol = document.getElementById("attachmentCol"); var subjectCol = document.getElementById("subjectCol"); threadTree._reorderColumn(attachmentCol, subjectCol, true); pref.setIntPref("mailnews.ui.threadpane.version", 5); } // version 5 upgrades } catch (ex) { dump("UpgradeThreadPane: ex = " + ex + "\n"); }}function OnLoadThreadPane(){ UpgradeThreadPaneUI();}// folderLocationPickerOnLoad can be called multiple times// and it can be called when the location picker isn't in the toolbarfunction folderLocationPickerOnLoad(){ var folderLocationPicker = document.getElementById('folder-location-container'); if (!folderLocationPicker) return; var locationTree = document.getElementById('folderLocationPopup').tree; locationTree.database.AddDataSource(accountManagerDataSource); locationTree.database.AddDataSource(folderDataSource); locationTree.setAttribute("ref", "msgaccounts:/");}function OnLocationTreeSelect(menulist){ SelectFolder(menulist.getAttribute('uri'));}function UpdateFolderLocationPicker(resource){ var folderLocationPicker = document.getElementById('folder-location-container'); if (!folderLocationPicker) return; var tree = GetFolderTree(); var folders = document.getElementById('locationFolders'); var properties = ['BiffState', 'NewMessages', 'HasUnreadMessages', 'SpecialFolder', 'IsServer', 'IsSecure', 'ServerType', 'NoSelect']; var label = GetFolderAttribute(tree, resource, 'FolderTreeName'); folders.setAttribute("label", label); for (var i in properties) { var property = properties[i]; var value = GetFolderAttribute(tree, resource, property); folders.setAttribute(property, value); } folders.setAttribute('uri', resource.Value);}function GetFolderDatasource(){ var folderTree = GetFolderTree(); return folderTree.database;}/* Functions for accessing particular parts of the window*/function GetFolderTree(){ if (! gFolderTree) gFolderTree = document.getElementById("folderTree"); return gFolderTree;}function GetSearchInput(){ if (!gSearchInput) gSearchInput = document.getElementById("searchInput"); return gSearchInput;}function GetMessagePane(){ if (!gMessagePane) gMessagePane = document.getElementById("messagepanebox"); return gMessagePane;}function GetMessagePaneFrame(){ return window.content;}function FindInSidebar(currentWindow, id){ var item = currentWindow.document.getElementById(id); if(item) return item; for(var i = 0; i < currentWindow.frames.length; i++) { var frameItem = FindInSidebar(currentWindow.frames[i], id); if(frameItem) return frameItem; } return null;}function GetThreadAndMessagePaneSplitter(){ if(gThreadAndMessagePaneSplitter) return gThreadAndMessagePaneSplitter; var splitter = document.getElementById('threadpane-splitter'); gThreadAndMessagePaneSplitter = splitter; return splitter;}function GetUnreadCountElement(){ if(gUnreadCount) return gUnreadCount; var unreadCount = document.getElementById('unreadMessageCount'); gUnreadCount = unreadCount; return unreadCount;}function GetTotalCountElement(){ if(gTotalCount) return gTotalCount; var totalCount = document.getElementById('totalMessageCount'); gTotalCount = totalCount; return totalCount;}function IsMessagePaneCollapsed(){ return GetMessagePane().collapsed;}function IsFolderPaneCollapsed(){ return GetFolderTree().parentNode.collapsed;}function FindMessenger(){ return messenger;}function ClearThreadPaneSelection(){ try { if (gDBView) { var treeView = gDBView.QueryInterface(Components.interfaces.nsITreeView); var treeSelection = treeView.selection; if (treeSelection) treeSelection.clearSelection(); } } catch (ex) { dump("ClearThreadPaneSelection: ex = " + ex + "\n"); }}function ClearMessagePane(){ if(gHaveLoadedMessage) { gHaveLoadedMessage = false; if (GetMessagePaneFrame().location.href != "about:blank") GetMessagePaneFrame().location.href = "about:blank"; // hide the message header view AND the message pane... HideMessageHeaderPane(); gMessageNotificationBar.clearMsgNotifications(); ClearPendingReadTimer(); }}function GetSelectedFolderIndex(){ var folderTree = GetFolderTree(); var startIndex = {}; var endIndex = {}; folderTree.view.selection.getRangeAt(0, startIndex, endIndex); return startIndex.value;}// Function to change the highlighted row to where the mouse was clicked// without loading the contents of the selected row.// It will also keep the outline/dotted line in the original row.function ChangeSelectionWithoutContentLoad(event, tree){ var treeBoxObj = tree.treeBoxObject; var treeSelection = treeBoxObj.view.selection; var row = treeBoxObj.getRowAt(event.clientX, event.clientY); // make sure that row.value is valid so that it doesn't mess up // the call to ensureRowIsVisible(). if((row >= 0) && !treeSelection.isSelected(row)) { var saveCurrentIndex = treeSelection.currentIndex; treeSelection.selectEventsSuppressed = true; treeSelection.select(row); treeSelection.currentIndex = saveCurrentIndex; treeBoxObj.ensureRowIsVisible(row); treeSelection.selectEventsSuppressed = false; // Keep track of which row in the thread pane is currently selected. if(tree.id == "threadTree") gThreadPaneCurrentSelectedIndex = row; } event.stopPropagation();}function TreeOnMouseDown(event){ // Detect right mouse click and change the highlight to the row // where the click happened without loading the message headers in
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -