var gMsgFolder; var gServerTypeFolder = null; var gPreselectedFolderURI = null; var gParentMsgWindow = null; // services used var RDF; // corresponds to MSG_FOLDER_FLAG_OFFLINE const MSG_FOLDER_FLAG_OFFLINE = 0x8000000 // corresponds to MSG_FOLDER_FLAG_CHECK_NEW const MSG_FOLDER_FLAG_CHECK_NEW = 0x20000000 // corresponds to MSG_FOLDER_FLAG_INBOX const MSG_FOLDER_FLAG_INBOX = 0x1000 // The folderPropsSink is the class that gets notified of an imap folder's properties var gFolderPropsSink = { setFolderType: function(folderTypeString) { var typeLabel = document.getElementById("folderType.text"); if (typeLabel) { typeLabel.setAttribute("value",folderTypeString); } // get the element for the folder type label and set value on it. }, setFolderTypeDescription: function(folderDescription) { var folderTypeLabel = document.getElementById("folderDescription.text"); if (folderTypeLabel) folderTypeLabel.setAttribute("value", folderDescription); }, setFolderPermissions: function(folderPermissions) { var permissionsLabel = document.getElementById("folderPermissions.text"); if (permissionsLabel) permissionsLabel.setAttribute("value",folderPermissions); }, serverDoesntSupportACL : function() { var typeLabel = document.getElementById("folderTypeLabel"); if (typeLabel) typeLabel.setAttribute("hidden", "true"); var permissionsLabel = document.getElementById("permissionsDescLabel"); if (permissionsLabel) permissionsLabel.setAttribute("hidden", "true"); } }; function folderPropsOKButtonCallback() { if (gMsgFolder) { // set charset attributes var folderCharsetList = document.getElementById("folderCharsetList"); gMsgFolder.charset = folderCharsetList.getAttribute("value"); gMsgFolder.charsetOverride = document.getElementById("folderCharsetOverride").checked; if(document.getElementById("offline.selectForOfflineFolder").checked || document.getElementById("offline.selectForOfflineNewsgroup").checked) gMsgFolder.setFlag(MSG_FOLDER_FLAG_OFFLINE); else gMsgFolder.clearFlag(MSG_FOLDER_FLAG_OFFLINE); if(document.getElementById("folderCheckForNewMessages").checked) gMsgFolder.setFlag(MSG_FOLDER_FLAG_CHECK_NEW); else gMsgFolder.clearFlag(MSG_FOLDER_FLAG_CHECK_NEW); } window.close(); } function folderPropsOnLoad() { dump("folder props loaded"+'\n'); doSetOKCancel(folderPropsOKButtonCallback); moveToAlertPosition(); RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService); // look in arguments[0] for parameters if (window.arguments && window.arguments[0]) { if ( window.arguments[0].title ) { top.window.title = window.arguments[0].title; } if ( window.arguments[0].okCallback ) { top.okCallback = window.arguments[0].okCallback; } } // fill in folder name, based on what they selected in the folder pane if (window.arguments[0].preselectedURI) { try { gPreselectedFolderURI = window.arguments[0].preselectedURI; } catch (ex) { } } else { dump("passed null for preselectedURI, do nothing\n"); } if(window.arguments[0].name) { var name = document.getElementById("name"); name.value = window.arguments[0].name; // name.setSelectionRange(0,-1); // name.focusTextField(); } gServerTypeFolder = window.arguments[0].serverType; dump("preselectfolder uri = "+gPreselectedFolderURI+'\n'); dump("serverType = "+gServerTypeFolder+'\n'); if (window.arguments && window.arguments[0]) { if (window.arguments[0].msgWindow) { gParentMsgWindow = window.arguments[0].msgWindow; } } // this hex value come from nsMsgFolderFlags.h var folderResource = RDF.GetResource(gPreselectedFolderURI); if(folderResource) gMsgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder); if (!gMsgFolder) dump("no gMsgFolder preselectfolder uri = "+gPreselectedFolderURI+'\n'); if (gMsgFolder) { if (gMsgFolder.flags & MSG_FOLDER_FLAG_OFFLINE) { if(gServerTypeFolder == "imap" || gServerTypeFolder == "pop3") document.getElementById("offline.selectForOfflineFolder").checked = true; if(gServerTypeFolder == "nntp") document.getElementById("offline.selectForOfflineNewsgroup").checked = true; } else { if(gServerTypeFolder == "imap" || gServerTypeFolder == "pop3") document.getElementById("offline.selectForOfflineFolder").checked = false; if(gServerTypeFolder == "nntp") document.getElementById("offline.selectForOfflineNewsgroup").checked = false; } // select the menu item var folderCharsetList = document.getElementById("folderCharsetList"); var elements = folderCharsetList.getElementsByAttribute("value", gMsgFolder.charset); folderCharsetList.selectedItem = elements[0]; // set override checkbox document.getElementById("folderCharsetOverride").checked = gMsgFolder.charsetOverride; // set check for new mail checkbox document.getElementById("folderCheckForNewMessages").checked = gMsgFolder.flags & MSG_FOLDER_FLAG_CHECK_NEW; } if (gServerTypeFolder == "imap") { var imapFolder = gMsgFolder.QueryInterface(Components.interfaces.nsIMsgImapMailFolder); if (imapFolder) imapFolder.fillInFolderProps(gFolderPropsSink); } // select the initial tab if (window.arguments[0].tabID) { // set index for starting panel on the element var folderPropTabPanel = document.getElementById("folderPropTabPanel"); folderPropTabPanel.setAttribute("selectedIndex", window.arguments[0].tabIndex); try { var tab = document.getElementById(window.arguments[0].tabID); tab.setAttribute("selected", "true"); } catch (ex) {} } hideShowControls(gServerTypeFolder); } function hideShowControls(serverType) { var controls = document.getElementsByAttribute("hidable", "true"); var len = controls.length; for (var i=0; i