bug 182274 - adds ui for selecting trash folder. r=bienvenu,sr=sspitzer

This commit is contained in:
mattwillis%gmail.com 2006-06-17 13:17:39 +00:00
parent 8af800d7da
commit 3c70a81202
6 changed files with 190 additions and 22 deletions

View File

@ -24,7 +24,7 @@
biffEnd.label "minutes for new messages Check"
-->
<!ENTITY biffStart.label "Check for new messages every ">
<!ENTITY biffStart.accesskey "k">
<!ENTITY biffStart.accesskey "y">
<!ENTITY biffEnd.label "minutes">
<!ENTITY isSecure.label "Use secure connection (SSL)">
<!ENTITY isSecure.accesskey "U">
@ -55,10 +55,12 @@
<!-- LOCALIZATION NOTE (popServerTitle.label) : do not translate "POP" in below line -->
<!ENTITY popServerTitle.label "POP Server Information">
<!ENTITY deleteMessagePrefix.label "When I delete a message:">
<!ENTITY deleteMessagePrefix.accesskey "W">
<!ENTITY modelMoveToTrash.label "Move it to the Trash folder">
<!ENTITY modelMarkDeleted.label "Mark it as deleted">
<!ENTITY modelMoveToTrash.label "Move it to this folder:">
<!ENTITY modelMoveToTrash.accesskey "o">
<!ENTITY modelMarkDeleted.label "Just mark it as deleted">
<!ENTITY modelMarkDeleted.accesskey "k">
<!ENTITY modelDeleteImmediately.label "Remove it immediately">
<!ENTITY modelDeleteImmediately.accesskey "d">
<!-- LOCALIZATION NOTE (expungeOnExit.label) : do not translate two of "&quot;" in below line -->
<!ENTITY expungeOnExit.label "Clean up (&quot;Expunge&quot;) Inbox on Exit">
<!ENTITY expungeOnExit.accesskey "E">

View File

@ -26,6 +26,7 @@
* racham@netscape.com
* hwaara@chello.se
* bienvenu@nventure.com
* Matthew Willis <mattwillis@gmail.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
@ -53,6 +54,7 @@ function onInit()
setupMailOnServerUI();
setupFixedUI();
setupNotifyUI();
setupImapDeleteUI();
}
function onPreInit(account, accountValues)
@ -312,3 +314,72 @@ function BrowseForNewsrc()
if (fp.show() != nsIFilePicker.returnCancel)
newsrcTextBox.value = fp.file.path;
}
function setupImapDeleteUI()
{
// read delete_model preference
var deleteModel = document.getElementById("imap.deleteModel").getAttribute("value");
selectImapDeleteModel(deleteModel)
// read trash_folder_name preference
var trashFolderName = getTrashFolderName();
var serverId = GetCurrentServerId();
// set folderPicker menulist
document.getElementById("msgTrashFolderPicker").setAttribute("ref", serverId);
var trashFolderUri = serverId+"/"+trashFolderName;
SetFolderPicker(trashFolderUri,"msgTrashFolderPicker");
}
function selectImapDeleteModel(choice)
{
// set deleteModel to selected mode
document.getElementById("imap.deleteModel").setAttribute("value", choice);
switch (choice)
{
case "0" : // markDeleted
// disable folderPicker
document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
break;
case "1" : // moveToTrashFolder
// enable folderPicker
document.getElementById("msgTrashFolderPicker").removeAttribute("disabled");
break;
case "2" : // deleteImmediately
// disable folderPicker
document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
break;
default :
dump("Error in enabling/disabling server.TrashFolderPicker\n");
break;
}
}
// Capture any menulist changes from folderPicker
function folderPickerChange(radioItemId)
{
var trashFolderPickerUri = document.getElementById(radioItemId).getAttribute("uri");
var trashFolderName = GetMsgFolderFromUri(trashFolderPickerUri, true);
document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName.name);
}
// Get trash_folder_name from prefs
function getTrashFolderName()
{
var trashFolderName = document.getElementById("imap.trashFolderName").getAttribute("value");
// if the preference hasn't been set, set it to a sane default
if (!trashFolderName) {
trashFolderName = "Trash";
document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName);
}
return trashFolderName;
}
// Get Current Server ID selected in the account tree
function GetCurrentServerId()
{
var tree = window.parent.accounttree;
var result = getServerIdAndPageIdFromTree(tree);
return result.serverId;
}

View File

@ -26,6 +26,7 @@
Contributor(s):
Håkan Waara <hwaara@chello.se>
bienvenu@nventure.com
Matthew Willis <mattwillis@gmail.com>
Alternatively, the contents of this file may be used under the terms of
either of the GNU General Public License Version 2 or later (the "GPL"),
@ -43,6 +44,8 @@
<?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
<?xul-overlay href="chrome://messenger/content/msgFolderPickerOverlay.xul"?>
<!DOCTYPE page SYSTEM "chrome://messenger/locale/am-server-top.dtd" >
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
@ -52,6 +55,7 @@
<script type="application/x-javascript" src="chrome://messenger/content/am-server.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/am-prefs.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/amUtils.js"/>
<script type="application/x-javascript" src="chrome://messenger/content/widgetglue.js"/>
<stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
<broadcaster id="broadcaster_doBiff"/>
@ -215,20 +219,49 @@
</hbox>
</vbox>
<!-- IMAP -->
<label hidden="true" wsm_persist="true" id="imap.trashFolderName"
prefattribute="value"
prefstring="mail.server.%serverkey%.trash_folder_name"/>
<hbox align="center" hidefor="pop3,nntp,movemail">
<label value="&deleteMessagePrefix.label;" align="left"
control="imap.deleteModel.box"/>
</hbox>
<hbox align="center" id="imap.deleteModel.box" hidefor="pop3,nntp,movemail">
<label value="&deleteMessagePrefix.label;"
accesskey="&deleteMessagePrefix.accesskey;"
control="imap.deleteModel"/>/>
<menulist wsm_persist="true" id="imap.deleteModel" prefstring="mail.server.%serverkey%.delete_model">
<menupopup>
<menuitem value="1" label="&modelMoveToTrash.label;"/>
<menuitem value="0" label="&modelMarkDeleted.label;"/>
<menuitem value="2" label="&modelDeleteImmediately.label;"/>
</menupopup>
</menulist>
<spacer flex="1"/>
<radiogroup wsm_persist="true" id="imap.deleteModel"
prefstring="mail.server.%serverkey%.delete_model">
<grid class="specialFolderPickerGrid">
<columns>
<column/>
<column flex="1"/>
</columns>
<rows>
<row align="center">
<radio id="modelMoveToTrash"
value="1" label="&modelMoveToTrash.label;"
oncommand="selectImapDeleteModel(value)"
accesskey="&modelMoveToTrash.accesskey;"/>
<menulist id="msgTrashFolderPicker"
oncommand="folderPickerChange('msgTrashFolderPicker')"/>
</row>
<row align="center">
<radio id="modelMarkDeleted"
value="0" label="&modelMarkDeleted.label;"
oncommand="selectImapDeleteModel(value)"
accesskey="&modelMarkDeleted.accesskey;"/>
</row>
<row align="center">
<radio id="modelDeleteImmediately"
value="2" label="&modelDeleteImmediately.label;"
oncommand="selectImapDeleteModel(value)"
accesskey="&modelDeleteImmediately.accesskey;"/>
</row>
</rows>
</grid>
</radiogroup>
</hbox>
<!-- Advanced IMAP settings -->
<hbox flex="1" hidefor="pop3,nntp,movemail" hidden="true">
<checkbox hidden="true" wsm_persist="true" id="imap.dualUseFolders"
prefattribute="value"

View File

@ -24,7 +24,7 @@
biffEnd.label "minutes for new messages Check"
-->
<!ENTITY biffStart.label "Check for new messages every ">
<!ENTITY biffStart.accesskey "k">
<!ENTITY biffStart.accesskey "y">
<!ENTITY biffEnd.label "minutes">
<!ENTITY isSecure.label "Use secure connection (SSL)">
<!ENTITY isSecure.accesskey "U">
@ -55,10 +55,12 @@
<!-- LOCALIZATION NOTE (popServerTitle.label) : do not translate "POP" in below line -->
<!ENTITY popServerTitle.label "POP Server Information">
<!ENTITY deleteMessagePrefix.label "When I delete a message:">
<!ENTITY deleteMessagePrefix.accesskey "W">
<!ENTITY modelMoveToTrash.label "Move it to the Trash folder">
<!ENTITY modelMarkDeleted.label "Mark it as deleted">
<!ENTITY modelMoveToTrash.label "Move it to this folder:">
<!ENTITY modelMoveToTrash.accesskey "o">
<!ENTITY modelMarkDeleted.label "Just mark it as deleted">
<!ENTITY modelMarkDeleted.accesskey "k">
<!ENTITY modelDeleteImmediately.label "Remove it immediately">
<!ENTITY modelDeleteImmediately.accesskey "d">
<!-- LOCALIZATION NOTE (expungeOnExit.label) : do not translate two of "&quot;" in below line -->
<!ENTITY expungeOnExit.label "Clean up (&quot;Expunge&quot;) Inbox on Exit">
<!ENTITY expungeOnExit.accesskey "E">

View File

@ -104,14 +104,20 @@ function SetFolderPickerElement(uri, picker)
dump("Can't find server for " + uri + "\n");
serverName = "???";
}
if (picker.id == "runFiltersFolder")
switch (picker) {
case "runFiltersFolder":
selectedValue = msgfolder.name;
else {
break;
case "msgTrashFolderPicker":
selectedValue = msgfolder.name;
break;
default:
if (!gMessengerBundle)
gMessengerBundle = document.getElementById("bundle_messenger");
selectedValue = gMessengerBundle.getFormattedString("verboseFolderFormat",
[msgfolder.name, serverName]);
break;
}
}

View File

@ -634,4 +634,58 @@
</template>
<menupopup />
</menulist>
<menulist id="msgTrashFolderPicker"
containment="http://home.netscape.com/NC-rdf#child"
sortResource="http://home.netscape.com/NC-rdf#FolderTreeName"
sortDirection="ascending"
datasources="rdf:msgaccountmanager rdf:mailnewsfolders">
<template>
<rule nc:NoSelect="false" iscontainer="true" isempty="false">
<menupopup>
<menu uri="..." class="folderMenuItem menu-iconic"
label="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup class="menulist-menupopup">
<menuitem label="&filemessageschoosethis.label;"
oncommand="PickedMsgFolder(event.target.parentNode.parentNode,'msgTrashFolderPicker')"/>
<menuseparator/>
</menupopup>
</menu>
</menupopup>
</rule>
<rule nc:NoSelect="true" iscontainer="true" isempty="false" >
<menupopup>
<menu uri="..." class="folderMenuItem menu-iconic"
label="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<menupopup class="menulist-menupopup"/>
</menu>
</menupopup>
</rule>
<rule nc:NoSelect="false">
<menupopup>
<menuitem uri="..." class="folderMenuItem menuitem-iconic"
label="rdf:http://home.netscape.com/NC-rdf#Name"
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
</menupopup>
</rule>
</template>
<menupopup />
</menulist>
</overlay>