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:
bugzilla%standard8.plus.com
2008-06-24 17:28:30 +00:00
parent 699a0dfc30
commit 3ff2473711
5 changed files with 37 additions and 103 deletions

View File

@@ -313,7 +313,7 @@ function onSearch()
}
searchUri += ")";
SetAbView(searchUri, null, null);
SetAbView(searchUri, true);
}
// used to toggle functionality for Search/Stop button.

View File

@@ -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()

View File

@@ -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);
}

View File

@@ -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,

View File

@@ -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">