Part of Bug 437619 Synchronise some Thunderbird address book results pane code with SeaMonkey, fixes retaining sort order across different address book searches.
git-svn-id: svn://10.0.0.236/trunk@252540 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -313,7 +313,7 @@ function onSearch()
|
||||
}
|
||||
|
||||
searchUri += ")";
|
||||
SetAbView(searchUri, null, null);
|
||||
SetAbView(searchUri, true);
|
||||
}
|
||||
|
||||
// used to toggle functionality for Search/Stop button.
|
||||
|
||||
@@ -74,8 +74,6 @@ var ResultsPaneController =
|
||||
case "cmd_delete":
|
||||
case "button_delete":
|
||||
case "button_edit":
|
||||
case "cmd_printcard":
|
||||
case "cmd_printcardpreview":
|
||||
case "cmd_newlist":
|
||||
return true;
|
||||
default:
|
||||
@@ -109,8 +107,6 @@ var ResultsPaneController =
|
||||
goSetMenuValue(command, "valueCards");
|
||||
}
|
||||
return (enabled && (numSelected > 0));
|
||||
case "cmd_printcard":
|
||||
case "cmd_printcardpreview":
|
||||
case "button_edit":
|
||||
return (GetSelectedCardIndex() != -1);
|
||||
case "cmd_newlist":
|
||||
@@ -141,12 +137,6 @@ var ResultsPaneController =
|
||||
case "button_edit":
|
||||
AbEditSelectedCard();
|
||||
break;
|
||||
case "cmd_printcard":
|
||||
AbPrintCard();
|
||||
break;
|
||||
case "cmd_printcardpreview":
|
||||
AbPrintPreviewCard();
|
||||
break;
|
||||
case "cmd_newlist":
|
||||
AbNewList();
|
||||
break;
|
||||
@@ -653,8 +643,6 @@ function GetSelectedRows()
|
||||
|
||||
var i,j;
|
||||
var rangeCount = gAbView.selection.getRangeCount();
|
||||
var current = 0;
|
||||
|
||||
for (i=0; i < rangeCount; i++) {
|
||||
var start = new Object;
|
||||
var end = new Object;
|
||||
@@ -765,43 +753,41 @@ function CloseAbView()
|
||||
}
|
||||
}
|
||||
|
||||
function SetAbView(uri, searchView, sortColumn, sortDirection)
|
||||
function SetAbView(uri, searchView)
|
||||
{
|
||||
var actualSortColumn;
|
||||
if (gAbView && gAbView.URI == uri)
|
||||
return;
|
||||
|
||||
// make sure sortColumn and sortDirection have non null values before calling gAbView.init
|
||||
if (!sortColumn)
|
||||
sortColumn = kDefaultSortColumn;
|
||||
var sortColumn = kDefaultSortColumn;
|
||||
var sortDirection = kDefaultAscending;
|
||||
|
||||
if (!sortDirection)
|
||||
sortDirection = kDefaultAscending;
|
||||
if (!gAbResultsTree)
|
||||
gAbResultsTree = document.getElementById("abResultsTree");
|
||||
|
||||
if (gAbView && gCurDirectory == GetSelectedDirectory())
|
||||
{
|
||||
// re-init the view
|
||||
actualSortColumn = gAbView.init(uri, searchView, GetAbViewListener(), sortColumn, sortDirection);
|
||||
if (gAbView) {
|
||||
sortColumn = gAbView.sortColumn;
|
||||
sortDirection = gAbView.sortDirection;
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
if (gAbResultsTree.hasAttribute("sortCol"))
|
||||
sortColumn = gAbResultsTree.getAttribute("sortCol");
|
||||
if (gAbResultsTree.hasAttribute("sortDirection"))
|
||||
sortDirection = gAbResultsTree.getAttribute("sortDirection");
|
||||
}
|
||||
|
||||
if (!gAbView || (gCurDirectory != GetSelectedDirectory())) {
|
||||
CloseAbView();
|
||||
|
||||
gCurDirectory = GetSelectedDirectory();
|
||||
gAbView = Components.classes["@mozilla.org/addressbook/abview;1"].createInstance(Components.interfaces.nsIAbView);
|
||||
|
||||
actualSortColumn = gAbView.init(uri, searchView, GetAbViewListener(), sortColumn, sortDirection);
|
||||
gAbView = Components.classes["@mozilla.org/addressbook/abview;1"]
|
||||
.createInstance(Components.interfaces.nsIAbView);
|
||||
}
|
||||
|
||||
var boxObject = GetAbResultsBoxObject();
|
||||
boxObject.view = gAbView.QueryInterface(Components.interfaces.nsITreeView);
|
||||
var actualSortColumn = gAbView.init(uri, searchView, GetAbViewListener(),
|
||||
sortColumn, sortDirection);
|
||||
GetAbResultsBoxObject().view =
|
||||
gAbView.QueryInterface(Components.interfaces.nsITreeView);
|
||||
|
||||
UpdateSortIndicators(sortColumn, sortDirection);
|
||||
|
||||
return actualSortColumn;
|
||||
}
|
||||
|
||||
function GetAbView()
|
||||
{
|
||||
return gAbView;
|
||||
}
|
||||
|
||||
function ChangeDirectoryByURI(uri)
|
||||
@@ -809,25 +795,14 @@ function ChangeDirectoryByURI(uri)
|
||||
if (!uri)
|
||||
uri = kPersonalAddressbookURI;
|
||||
|
||||
if (gAbView && gAbView.URI == uri)
|
||||
return;
|
||||
|
||||
var sortColumn = gAbResultsTree.getAttribute("sortCol");
|
||||
var sortDirection = document.getElementById(sortColumn).getAttribute("sortDirection");
|
||||
|
||||
var actualSortColumn = SetAbView(uri, false, sortColumn, sortDirection);
|
||||
|
||||
UpdateSortIndicators(actualSortColumn, sortDirection);
|
||||
SetAbView(uri, false);
|
||||
|
||||
// only select the first card if there is a first card
|
||||
if (gAbView && gAbView.getCardFromRow(0)) {
|
||||
if (gAbView && gAbView.getCardFromRow(0))
|
||||
SelectFirstCard();
|
||||
}
|
||||
else {
|
||||
else
|
||||
// the selection changes if we were switching directories.
|
||||
ResultsPaneSelectionChanged()
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
function AbSortAscending()
|
||||
@@ -1022,7 +997,7 @@ function GetSelectedDirectory()
|
||||
function onAbClearSearch()
|
||||
{
|
||||
gSearchInput.value = "";
|
||||
onEnterInSearchBar(true);
|
||||
onEnterInSearchBar();
|
||||
}
|
||||
|
||||
function AbSwapFirstNameLastName()
|
||||
|
||||
@@ -214,12 +214,10 @@ function onEnterInSearchBar()
|
||||
gQueryURIFormat = gPrefs.getComplexValue("mail.addr_book.quicksearchquery.format",
|
||||
Components.interfaces.nsIPrefLocalizedString).data;
|
||||
|
||||
var sortColumn = gAbResultsTree.getAttribute("sortCol");
|
||||
var sortDirection = document.getElementById(sortColumn).getAttribute("sortDirection");
|
||||
var searchURI = GetSelectedDirectory();
|
||||
|
||||
if (gSearchInput.value != "")
|
||||
searchURI += gQueryURIFormat.replace(/@V/g, encodeURIComponent(gSearchInput.value));
|
||||
|
||||
SetAbView(searchURI, true, sortColumn, sortDirection);
|
||||
SetAbView(searchURI, true);
|
||||
}
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
const nsIAbListener = Components.interfaces.nsIAbListener;
|
||||
const kPrefMailAddrBookLastNameFirst = "mail.addr_book.lastnamefirst";
|
||||
|
||||
var cvPrefs = 0;
|
||||
var gSearchTimer = null;
|
||||
@@ -122,7 +123,6 @@ function OnUnloadAddressBook()
|
||||
.getService(Components.interfaces.nsIAbManager)
|
||||
.removeAddressBookListener(gAddressBookAbListener);
|
||||
|
||||
RemovePrefObservers();
|
||||
CloseAbView();
|
||||
}
|
||||
|
||||
@@ -140,32 +140,6 @@ function GetAbViewListener()
|
||||
return gAddressBookAbViewListener;
|
||||
}
|
||||
|
||||
const kPrefMailAddrBookLastNameFirst = "mail.addr_book.lastnamefirst";
|
||||
|
||||
var gMailAddrBookLastNameFirstObserver = {
|
||||
observe: function(subject, topic, value) {
|
||||
if (topic == "nsPref:changed" && value == kPrefMailAddrBookLastNameFirst) {
|
||||
UpdateCardView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function AddPrefObservers()
|
||||
{
|
||||
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
var prefBranch = prefService.getBranch(null).QueryInterface(Components.interfaces.nsIPrefBranch2);
|
||||
prefBranch.addObserver(kPrefMailAddrBookLastNameFirst, gMailAddrBookLastNameFirstObserver, false);
|
||||
}
|
||||
|
||||
function RemovePrefObservers()
|
||||
{
|
||||
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefService);
|
||||
var prefBranch = prefService.getBranch(null).QueryInterface(Components.interfaces.nsIPrefBranch2);
|
||||
prefBranch.removeObserver(kPrefMailAddrBookLastNameFirst, gMailAddrBookLastNameFirstObserver);
|
||||
}
|
||||
|
||||
// we won't show the window until the onload() handler is finished
|
||||
// so we do this trick (suggested by hyatt / blaker)
|
||||
function OnLoadAddressBook()
|
||||
@@ -183,8 +157,6 @@ function delayedOnLoadAddressBook()
|
||||
|
||||
GetCurrentPrefs();
|
||||
|
||||
AddPrefObservers();
|
||||
|
||||
// FIX ME - later we will be able to use onload from the overlay
|
||||
OnLoadCardView();
|
||||
|
||||
@@ -242,7 +214,7 @@ function GetCurrentPrefs()
|
||||
|
||||
// check "Show Name As" menu item based on pref
|
||||
var menuitemID;
|
||||
switch (gPrefs.getIntPref("mail.addr_book.lastnamefirst"))
|
||||
switch (gPrefs.getIntPref(kPrefMailAddrBookLastNameFirst))
|
||||
{
|
||||
case kFirstNameFirst:
|
||||
menuitemID = 'firstLastCmd';
|
||||
@@ -289,19 +261,11 @@ function SetNameColumn(cmd)
|
||||
break;
|
||||
}
|
||||
|
||||
cvPrefs.prefs.setIntPref("mail.addr_book.lastnamefirst", prefValue);
|
||||
}
|
||||
|
||||
function onFileMenuInit()
|
||||
{
|
||||
goUpdateCommand('cmd_printcard');
|
||||
goUpdateCommand('cmd_printcardpreview');
|
||||
cvPrefs.prefs.setIntPref(kPrefMailAddrBookLastNameFirst, prefValue);
|
||||
}
|
||||
|
||||
function onOSXFileMenuInit()
|
||||
{
|
||||
onFileMenuInit();
|
||||
|
||||
document.getElementById('menu_osxAddressBook')
|
||||
.setAttribute("checked", AbOSXAddressBookExists());
|
||||
}
|
||||
@@ -536,9 +500,6 @@ function onEnterInSearchBar()
|
||||
var searchURI = GetSelectedDirectory();
|
||||
if (!searchURI) return;
|
||||
|
||||
var sortColumn = gAbView.sortColumn;
|
||||
var sortDirection = gAbView.sortDirection;
|
||||
|
||||
/*
|
||||
XXX todo, handle the case where the LDAP url
|
||||
already has a query, like
|
||||
@@ -550,7 +511,7 @@ function onEnterInSearchBar()
|
||||
searchURI += gQueryURIFormat.replace(/@V/g, encodeURIComponent(gSearchInput.value));
|
||||
}
|
||||
|
||||
SetAbView(searchURI, gSearchInput.value != "", sortColumn, sortDirection);
|
||||
SetAbView(searchURI, gSearchInput.value != "");
|
||||
|
||||
// XXX todo
|
||||
// this works for synchronous searches of local addressbooks,
|
||||
|
||||
@@ -111,8 +111,8 @@
|
||||
events="focus"
|
||||
oncommandupdate="goUpdateGlobalEditMenuItems()"/>
|
||||
<command id="cmd_newlist" oncommand="goDoCommand('cmd_newlist');"/>
|
||||
<command id="cmd_printcardpreview" oncommand="goDoCommand('cmd_printcardpreview');"/>
|
||||
<command id="cmd_printcard" oncommand="goDoCommand('cmd_printcard');"/>
|
||||
<command id="cmd_printcardpreview" oncommand="AbPrintCardPreview();"/>
|
||||
<command id="cmd_printcard" oncommand="AbPrintCard();"/>
|
||||
<command id="cmd_properties" oncommand="goDoCommand('button_edit');"/>
|
||||
<command id="cmd_undo" oncommand="goDoCommand('cmd_undo')" disabled="true"/>
|
||||
<command id="cmd_redo" oncommand="goDoCommand('cmd_redo')" disabled="true"/>
|
||||
@@ -259,7 +259,7 @@
|
||||
#ifdef XP_MACOSX
|
||||
<menupopup id="menu_FilePopup" onpopupshowing="onOSXFileMenuInit();">
|
||||
#else
|
||||
<menupopup id="menu_FilePopup" onpopupshowing="onFileMenuInit();">
|
||||
<menupopup id="menu_FilePopup">
|
||||
#endif
|
||||
<menu id="menu_New" label="&newMenu.label;" accesskey="&newMenu.accesskey;">
|
||||
<menupopup id="menu_NewPopup">
|
||||
|
||||
Reference in New Issue
Block a user