mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-10 21:28:04 +02:00
Fixing bug 103689. Make sure that the right set of addresses are pre-populated in the compose window based on the items selected in the AdderssBook window. Also fixes the new card created from the AddressBook window's file new menu should reflect the right parent addressbook. r=ssu, sr=sspitzer
This commit is contained in:
parent
0b7a3e29e4
commit
1205923e1b
2 changed files with 65 additions and 21 deletions
|
|
@ -325,6 +325,9 @@ function AbNewMessage()
|
||||||
var composeFields = Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);
|
var composeFields = Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);
|
||||||
if (composeFields)
|
if (composeFields)
|
||||||
{
|
{
|
||||||
|
if (DirPaneHasFocus())
|
||||||
|
composeFields.to = GetSelectedAddressesFromDirTree();
|
||||||
|
else
|
||||||
composeFields.to = GetSelectedAddresses();
|
composeFields.to = GetSelectedAddresses();
|
||||||
params.composeFields = composeFields;
|
params.composeFields = composeFields;
|
||||||
msgComposeService.OpenComposeWindowWithParams(null, params);
|
msgComposeService.OpenComposeWindowWithParams(null, params);
|
||||||
|
|
@ -367,26 +370,58 @@ function goToggleSplitter( id, elementID )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generate a list of cards from the selected mailing list
|
||||||
|
// and get a comma separated list of card addresses. If the
|
||||||
|
// item selected in the directory pane is not a mailing list,
|
||||||
|
// an empty string is returned.
|
||||||
|
function GetSelectedAddressesFromDirTree()
|
||||||
|
{
|
||||||
|
var addresses = "";
|
||||||
|
|
||||||
|
var selectedItems = dirTree.selectedItems;
|
||||||
|
if (selectedItems.length == 1) {
|
||||||
|
var mailingListUri = selectedItems[0].getAttribute('id');
|
||||||
|
var directory = GetDirectoryFromURI(mailingListUri);
|
||||||
|
if (directory.isMailList) {
|
||||||
|
var listCardsCount = directory.addressLists.Count();
|
||||||
|
var cards = new Array(listCardsCount);
|
||||||
|
for ( var i = 0; i < listCardsCount; i++ ) {
|
||||||
|
var card = directory.addressLists.GetElementAt(i);
|
||||||
|
card = card.QueryInterface(Components.interfaces.nsIAbCard);
|
||||||
|
cards[i] = card;
|
||||||
|
}
|
||||||
|
addresses = GetAddressesForCards(cards);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return addresses;
|
||||||
|
}
|
||||||
|
|
||||||
function GetSelectedAddresses()
|
function GetSelectedAddresses()
|
||||||
{
|
{
|
||||||
var selectedAddresses = "";
|
var selectedCards = GetSelectedAbCards();
|
||||||
|
return GetAddressesForCards(selectedCards);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate a comma seperate list of addresses from a given
|
||||||
|
// set of cards.
|
||||||
|
function GetAddressesForCards(cards)
|
||||||
|
{
|
||||||
|
var addresses = "";
|
||||||
|
|
||||||
var cards = GetSelectedAbCards();
|
|
||||||
if (!cards)
|
if (!cards)
|
||||||
return selectedAddresses;
|
return addresses;
|
||||||
|
|
||||||
var count = cards.length;
|
var count = cards.length;
|
||||||
if (count > 0)
|
if (count > 0)
|
||||||
selectedAddresses += GenerateAddressFromCard(cards[0]);
|
addresses += GenerateAddressFromCard(cards[0]);
|
||||||
|
|
||||||
for (var i = 1; i < count; i++) {
|
for (var i = 1; i < count; i++) {
|
||||||
var generatedAddress = GenerateAddressFromCard(cards[i]);
|
var generatedAddress = GenerateAddressFromCard(cards[i]);
|
||||||
|
|
||||||
if (generatedAddress)
|
if (generatedAddress)
|
||||||
selectedAddresses += "," + generatedAddress;
|
addresses += "," + generatedAddress;
|
||||||
}
|
}
|
||||||
|
return addresses;
|
||||||
return selectedAddresses;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function GetNumSelectedCards()
|
function GetNumSelectedCards()
|
||||||
|
|
@ -450,11 +485,9 @@ function GetSelectedAbCards()
|
||||||
current++;
|
current++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return cards;
|
return cards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function SelectFirstAddressBook()
|
function SelectFirstAddressBook()
|
||||||
{
|
{
|
||||||
var children = dirTree.childNodes;
|
var children = dirTree.childNodes;
|
||||||
|
|
@ -812,3 +845,9 @@ function GetParentDirectoryFromMailingListURI(abURI)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function DirPaneHasFocus()
|
||||||
|
{
|
||||||
|
// returns true if diectory pane has the focus. Returns false, otherwise.
|
||||||
|
return (top.document.commandDispatcher.focusedElement == dirTree)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,21 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
<!-- retrieve generic commands -->
|
<!DOCTYPE window SYSTEM "chrome://messenger/locale/mailOverlay.dtd">
|
||||||
<?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
|
|
||||||
|
|
||||||
<overlay id="mailABOverlay"
|
<overlay id="mailABOverlay"
|
||||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
|
|
||||||
<!-- addressbook specific UI items -->
|
<commandset id="tasksCommands">
|
||||||
|
<command id="cmd_newMessage" oncommand="AbNewMessage();"/>
|
||||||
|
<command id="cmd_newCard" oncommand="AbNewCard('dirTree');"/>
|
||||||
|
</commandset>
|
||||||
<menupopup id="menu_NewPopup">
|
<menupopup id="menu_NewPopup">
|
||||||
<menuitem id="menu_newMessage" position="5"/>
|
<menuitem id="menu_newMessage" position="5" label="&newMessageCmd.label;" key="key_newMessage" accesskey="&newMessageCmd.accesskey;" command="cmd_newMessage"/>
|
||||||
<menuitem id="menu_newCard" position="6"/>
|
<menuitem id="menu_newCard" position="6" label="&newCardCmd.label;" accesskey="&newCardCmd.accesskey;" command="cmd_newCard"/>
|
||||||
</menupopup>
|
</menupopup>
|
||||||
|
<keyset id="tasksKeys">
|
||||||
|
<key id="key_newMessage" key="&newMessageCmd.key;" command="cmd_newMessage" modifiers="accel"/>
|
||||||
|
</keyset>
|
||||||
|
|
||||||
</overlay>
|
</overlay>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue