mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
more work on #73868. converting ab from tree to outliner.
get sort indicators to work, make it so even if we persist some old or illegal value for "sortedColumn", we do the right thing. NOT PART OF THE BUILD.
This commit is contained in:
parent
b1f34ef0e7
commit
2420d3f3fb
@ -51,7 +51,11 @@ interface nsIAbViewListener : nsISupports
|
||||
[scriptable, uuid(e35c015c-1dd1-11b2-9494-f88326252aae)]
|
||||
interface nsIAbView : nsISupports
|
||||
{
|
||||
void init(in string URI, in nsIAbViewListener abViewListener, in wstring sortColumn, in wstring sortDirection);
|
||||
/**
|
||||
* returns the actual sortColumn. migration, switching from mozilla to netscape 6.x, etc, could cause
|
||||
* the "persisted" sortColumn to be bogus.
|
||||
*/
|
||||
wstring init(in string URI, in nsIAbViewListener abViewListener, in wstring sortColumn, in wstring sortDirection);
|
||||
void close();
|
||||
|
||||
void sortBy(in wstring sortColumn, in wstring sortDirection);
|
||||
|
@ -198,10 +198,12 @@ nsresult nsAbView::RemovePrefObservers()
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener,
|
||||
const PRUnichar *colID, const PRUnichar *sortDirection)
|
||||
const PRUnichar *colID, const PRUnichar *sortDirection, PRUnichar **result)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
NS_ENSURE_ARG_POINTER(result);
|
||||
|
||||
mURI = aURI;
|
||||
mAbViewListener = abViewListener;
|
||||
|
||||
@ -224,7 +226,20 @@ NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener
|
||||
rv = EnumerateCards();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = SortBy(colID, sortDirection);
|
||||
// see if the persisted sortColumn is valid.
|
||||
// it may not be, if you migrated from older versions, or switched between
|
||||
// a mozilla build and a commercial build, which have different columns.
|
||||
nsAutoString actualSortColumn;
|
||||
actualSortColumn = colID;
|
||||
if (nsCRT::strcmp(colID, NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID).get()) && mCards.Count()) {
|
||||
nsIAbCard *card = ((AbCard *)(mCards.ElementAt(0)))->card;
|
||||
nsXPIDLString value;
|
||||
rv = card->GetCardUnicharValue(colID, getter_Copies(value));
|
||||
if (NS_FAILED(rv))
|
||||
actualSortColumn = NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID).get();
|
||||
}
|
||||
|
||||
rv = SortBy(actualSortColumn.get(), sortDirection);
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
|
||||
nsCOMPtr<nsIAddrBookSession> abSession = do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
|
||||
@ -237,7 +252,9 @@ NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener
|
||||
rv = mAbViewListener->OnCountChanged(mCards.Count());
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
}
|
||||
return rv;
|
||||
|
||||
*result = nsCRT::strdup(actualSortColumn.get());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbView::GetDirectory(nsIAbDirectory **aDirectory)
|
||||
@ -424,15 +441,7 @@ NS_IMETHODIMP nsAbView::ToggleOpenState(PRInt32 index)
|
||||
|
||||
NS_IMETHODIMP nsAbView::CycleHeader(const PRUnichar *colID, nsIDOMElement *elt)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
// reverse the sort
|
||||
if (nsCRT::strcmp(mSortDirection.get(), NS_LITERAL_STRING("ascending").get()))
|
||||
rv = SortBy(colID, NS_LITERAL_STRING("ascending").get());
|
||||
else
|
||||
rv = SortBy(colID, NS_LITERAL_STRING("descending").get());
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
return rv;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsAbView::InvalidateOutliner(PRInt32 row)
|
||||
@ -554,13 +563,14 @@ NS_IMETHODIMP nsAbView::SortBy(const PRUnichar *colID, const PRUnichar *sortDir)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
PRInt32 count = mCards.Count();
|
||||
|
||||
nsAutoString sortColumn;
|
||||
if (!colID)
|
||||
sortColumn = NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID); // default sort
|
||||
else
|
||||
sortColumn = NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID).get(); // default sort
|
||||
else
|
||||
sortColumn = colID;
|
||||
|
||||
PRInt32 count = mCards.Count();
|
||||
PRInt32 i;
|
||||
|
||||
// if we are sorting by how we are already sorted,
|
||||
|
Loading…
Reference in New Issue
Block a user