From 81f54403b500c8c2559575e6118c0496496de8aa Mon Sep 17 00:00:00 2001 From: "sspitzer%netscape.com" Date: Thu, 15 Nov 2001 00:28:12 +0000 Subject: [PATCH] more work on #73868. converting ab from tree to outliner. NOT PART OF THE BUILD. --- .../content/abResultsPaneOverlay.xul | 6 +- .../locale/en-US/abResultsPaneOverlay.dtd | 4 +- mailnews/addrbook/src/nsAbView.cpp | 70 +++++++++++++------ mailnews/addrbook/src/nsAbView.h | 2 + .../addressbook/mac/abResultsPane.css | 4 +- .../addressbook/win/abResultsPane.css | 4 +- .../messenger/addressbook/abResultsPane.css | 4 +- 7 files changed, 62 insertions(+), 32 deletions(-) diff --git a/mailnews/addrbook/resources/content/abResultsPaneOverlay.xul b/mailnews/addrbook/resources/content/abResultsPaneOverlay.xul index 191060a26329..fd0cb4e9adaa 100644 --- a/mailnews/addrbook/resources/content/abResultsPaneOverlay.xul +++ b/mailnews/addrbook/resources/content/abResultsPaneOverlay.xul @@ -36,9 +36,9 @@ Original Author: - - + + diff --git a/mailnews/addrbook/resources/locale/en-US/abResultsPaneOverlay.dtd b/mailnews/addrbook/resources/locale/en-US/abResultsPaneOverlay.dtd index 5bdd4cf042c9..592de98f7480 100644 --- a/mailnews/addrbook/resources/locale/en-US/abResultsPaneOverlay.dtd +++ b/mailnews/addrbook/resources/locale/en-US/abResultsPaneOverlay.dtd @@ -21,8 +21,8 @@ Original Author: Seth Spitzer --> - - + + diff --git a/mailnews/addrbook/src/nsAbView.cpp b/mailnews/addrbook/src/nsAbView.cpp index 33f7131fe5c7..ec42f785de99 100644 --- a/mailnews/addrbook/src/nsAbView.cpp +++ b/mailnews/addrbook/src/nsAbView.cpp @@ -53,14 +53,13 @@ #include "nsIPrefBranch.h" #include "nsIPrefBranchInternal.h" - #define CARD_NOT_FOUND -1 #define ALL_ROWS -1 #define PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST "mail.addr_book.lastnamefirst" // also, our default primary sort -#define DISPLAY_NAME_COLUMN_ID "DisplayName" +#define GENERATED_NAME_COLUMN_ID "GeneratedName" // also, our default secondary sort #define PRIMARY_EMAIL_COLUMN_ID "PrimaryEmail" @@ -84,6 +83,7 @@ nsAbView::nsAbView() mMailListAtom = getter_AddRefs(NS_NewAtom("MailList")); mSuppressSelectionChange = PR_FALSE; mSuppressCountChange = PR_FALSE; + mGeneratedNameFormat = 0; } nsAbView::~nsAbView() @@ -142,6 +142,21 @@ NS_IMETHODIMP nsAbView::GetURI(char **aURI) return NS_OK; } +nsresult nsAbView::SetGeneratedNameFormatFromPrefs() +{ + nsresult rv; + nsCOMPtr prefs = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv,rv); + + nsCOMPtr prefBranch; + rv = prefs->GetBranch(nsnull, getter_AddRefs(prefBranch)); + NS_ENSURE_SUCCESS(rv,rv); + + rv = prefBranch->GetIntPref(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST, &mGeneratedNameFormat); + NS_ENSURE_SUCCESS(rv, rv); + return rv; +} + nsresult nsAbView::AddPrefObservers() { nsresult rv; @@ -158,8 +173,7 @@ nsresult nsAbView::AddPrefObservers() rv = pbi->AddObserver(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST, this, PR_FALSE); NS_ENSURE_SUCCESS(rv,rv); - - return NS_OK; + return rv; } nsresult nsAbView::RemovePrefObservers() @@ -178,8 +192,7 @@ nsresult nsAbView::RemovePrefObservers() rv = pbi->RemoveObserver(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST, this); NS_ENSURE_SUCCESS(rv,rv); - - return NS_OK; + return rv; } NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener, @@ -193,6 +206,9 @@ NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener rv = AddPrefObservers(); NS_ENSURE_SUCCESS(rv,rv); + rv = SetGeneratedNameFormatFromPrefs(); + NS_ENSURE_SUCCESS(rv,rv); + nsCOMPtr rdfService = do_GetService("@mozilla.org/rdf/rdf-service;1",&rv); NS_ENSURE_SUCCESS(rv, rv); @@ -214,7 +230,7 @@ NS_IMETHODIMP nsAbView::Init(const char *aURI, nsIAbViewListener *abViewListener rv = abSession->AddAddressBookListener(this); NS_ENSURE_SUCCESS(rv,rv); - + if (mAbViewListener && !mSuppressCountChange) { rv = mAbViewListener->OnCountChanged(mCards.Count()); NS_ENSURE_SUCCESS(rv,rv); @@ -297,8 +313,8 @@ NS_IMETHODIMP nsAbView::GetCellProperties(PRInt32 row, const PRUnichar *colID, n if (mCards.Count() <= row) return NS_OK; - // "Di" to distinguish "DisplayName" from "Department" - if (colID[0] != 'D' || colID[1] != 'i') + // "G" == "GeneratedName" + if (colID[0] != 'G') return NS_OK; nsIAbCard *card = ((AbCard *)(mCards.ElementAt(row)))->card; @@ -381,9 +397,15 @@ NS_IMETHODIMP nsAbView::GetCellText(PRInt32 row, const PRUnichar *colID, PRUnich { nsIAbCard *card = ((AbCard *)(mCards.ElementAt(row)))->card; - nsresult rv = card->GetCardUnicharValue(colID, _retval); - NS_ENSURE_SUCCESS(rv,rv); + nsresult rv; + // "G" == "GeneratedName" + if (colID[0] == 'G') + rv = card->GetGeneratedName(mGeneratedNameFormat, _retval); + else + rv = card->GetCardUnicharValue(colID, _retval); + + NS_ENSURE_SUCCESS(rv,rv); return rv; } @@ -515,7 +537,7 @@ NS_IMETHODIMP nsAbView::SortBy(const PRUnichar *colID, const PRUnichar *sortDir) nsAutoString sortColumn; if (!colID) - sortColumn = NS_LITERAL_STRING(DISPLAY_NAME_COLUMN_ID); // default sort + sortColumn = NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID); // default sort else sortColumn = colID; @@ -578,10 +600,13 @@ nsresult nsAbView::GenerateCollationKeysForCard(const PRUnichar *colID, AbCard * nsresult rv; nsXPIDLString value; // XXX fix me, do this with const to avoid the strcpy - rv = abcard->card->GetCardUnicharValue(colID, getter_Copies(value)); + if (colID[0] == 'G') // "G" == "GeneratedName" + rv = abcard->card->GetGeneratedName(mGeneratedNameFormat, getter_Copies(value)); + else + rv = abcard->card->GetCardUnicharValue(colID, getter_Copies(value)); NS_ENSURE_SUCCESS(rv,rv); - // XXX be smarter about the key, from an arena + // XXX be smarter about the allocation PR_FREEIF(abcard->primaryCollationKey); rv = CreateCollationKey(value, &(abcard->primaryCollationKey)); NS_ENSURE_SUCCESS(rv,rv); @@ -590,7 +615,7 @@ nsresult nsAbView::GenerateCollationKeysForCard(const PRUnichar *colID, AbCard * rv = abcard->card->GetCardUnicharValue(NS_LITERAL_STRING(PRIMARY_EMAIL_COLUMN_ID).get(), getter_Copies(value)); NS_ENSURE_SUCCESS(rv,rv); - // XXX be smarter about the key, from an arena + // XXX be smarter about the allocation PR_FREEIF(abcard->secondaryCollationKey); rv = CreateCollationKey(value, &(abcard->secondaryCollationKey)); NS_ENSURE_SUCCESS(rv,rv); @@ -679,21 +704,24 @@ NS_IMETHODIMP nsAbView::Observe(nsISupports *aSubject, const char *aTopic, const nsDependentString prefName(someData); if (prefName.Equals(NS_LITERAL_STRING(PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST))) { - // the PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST pref affects how the DisplayName column looks. - // so if the DisplayName is our primary or secondary sort, + rv = SetGeneratedNameFormatFromPrefs(); + NS_ENSURE_SUCCESS(rv,rv); + + // the PREF_MAIL_ADDR_BOOK_LASTNAMEFIRST pref affects how the GeneratedName column looks. + // so if the GeneratedName is our primary or secondary sort, // we need to resort. // // XXX optimize me // PrimaryEmail is always the secondary sort, unless it is currently the // primary sort. So, if PrimaryEmail is the primary sort, - // DisplayName might be the secondary sort. + // GeneratedName might be the secondary sort. // // one day, we can get fancy and remember what the secondary sort is. // we we do that, we can fix this code. at best, it will turn a sort into a invalidate. // - // if neither the primary nor the secondary sorts are DisplayName, all we have to do is - // invalidate (to show the new DisplayNames), but the sort will not change. - if (!nsCRT::strcmp(mSortColumn.get(), NS_LITERAL_STRING(DISPLAY_NAME_COLUMN_ID).get()) || + // if neither the primary nor the secondary sorts are GeneratedName, all we have to do is + // invalidate (to show the new GeneratedNames), but the sort will not change. + if (!nsCRT::strcmp(mSortColumn.get(), NS_LITERAL_STRING(GENERATED_NAME_COLUMN_ID).get()) || !nsCRT::strcmp(mSortColumn.get(), NS_LITERAL_STRING(PRIMARY_EMAIL_COLUMN_ID).get())) { rv = SortBy(mSortColumn.get(), mSortDirection.get()); } diff --git a/mailnews/addrbook/src/nsAbView.h b/mailnews/addrbook/src/nsAbView.h index f15668f0ab40..c0df39cd640b 100644 --- a/mailnews/addrbook/src/nsAbView.h +++ b/mailnews/addrbook/src/nsAbView.h @@ -86,6 +86,7 @@ private: nsresult EnumerateCards(); nsresult AddPrefObservers(); nsresult RemovePrefObservers(); + nsresult SetGeneratedNameFormatFromPrefs(); nsCString mURI; nsCOMPtr mDirectory; @@ -98,6 +99,7 @@ private: PRPackedBool mSuppressSelectionChange; PRPackedBool mSuppressCountChange; + PRInt32 mGeneratedNameFormat; }; #endif /* _nsAbView_H_ */ diff --git a/themes/classic/messenger/addressbook/mac/abResultsPane.css b/themes/classic/messenger/addressbook/mac/abResultsPane.css index d33943f72278..f350dd525347 100644 --- a/themes/classic/messenger/addressbook/mac/abResultsPane.css +++ b/themes/classic/messenger/addressbook/mac/abResultsPane.css @@ -23,12 +23,12 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -outlinerbody:-moz-outliner-image(DisplayName) { +outlinerbody:-moz-outliner-image(GeneratedName) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/abcard.gif"); } -outlinerbody:-moz-outliner-image(DisplayName, MailList) { +outlinerbody:-moz-outliner-image(GeneratedName, MailList) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/addressbook/list.gif"); } diff --git a/themes/classic/messenger/addressbook/win/abResultsPane.css b/themes/classic/messenger/addressbook/win/abResultsPane.css index d33943f72278..f350dd525347 100644 --- a/themes/classic/messenger/addressbook/win/abResultsPane.css +++ b/themes/classic/messenger/addressbook/win/abResultsPane.css @@ -23,12 +23,12 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -outlinerbody:-moz-outliner-image(DisplayName) { +outlinerbody:-moz-outliner-image(GeneratedName) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/abcard.gif"); } -outlinerbody:-moz-outliner-image(DisplayName, MailList) { +outlinerbody:-moz-outliner-image(GeneratedName, MailList) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/addressbook/list.gif"); } diff --git a/themes/modern/messenger/addressbook/abResultsPane.css b/themes/modern/messenger/addressbook/abResultsPane.css index e05163b8063f..3c77e89c5d26 100644 --- a/themes/modern/messenger/addressbook/abResultsPane.css +++ b/themes/modern/messenger/addressbook/abResultsPane.css @@ -23,12 +23,12 @@ @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); -outlinerbody:-moz-outliner-image(DisplayName) { +outlinerbody:-moz-outliner-image(GeneratedName) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/addressbook/icons/person.gif"); } -outlinerbody:-moz-outliner-image(DisplayName, MailList) { +outlinerbody:-moz-outliner-image(GeneratedName, MailList) { padding-right: 2px; list-style-image: url("chrome://messenger/skin/addressbook/icons/list.gif"); }