Bug 385695 Remove nsIAddressBook::modifyAddressBook - use nsIAbDirectory functions directly. r=bienvenu,sr=mscott

git-svn-id: svn://10.0.0.236/trunk@228760 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bugzilla%standard8.demon.co.uk 2007-06-26 15:57:55 +00:00
parent f14b845b1c
commit 209eadb95c
30 changed files with 122 additions and 329 deletions

View File

@ -393,11 +393,7 @@ function AbOnCreateNewAddressBook(aName)
function AbOnRenameAddressBook(aName)
{
// When the UI code for renaming addrbooks (bug #17230) is ready, just
// change 'properties.description' setting below and it should just work.
// get select ab
var selectedABURI = GetSelectedDirectory();
//dump("In AbRenameAddressBook() selectedABURI=" + selectedABURI + "\n");
// the rdf service
var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
@ -410,17 +406,7 @@ function AbOnRenameAddressBook(aName)
// the RDF resource URI for LDAPDirectory will be like: "moz-abmdbdirectory://abook-3.mab"
var selectedABDirectory = RDF.GetResource(selectedABURI).QueryInterface(Components.interfaces.nsIAbDirectory);
// Copy existing property items so they won't get reset.
var oldProperties = selectedABDirectory.directoryProperties;
// Create and fill in properties info
var properties = Components.classes["@mozilla.org/addressbook/properties;1"].createInstance(Components.interfaces.nsIAbDirectoryProperties);
properties.URI = selectedABURI;
properties.dirType = oldProperties.dirType;
properties.description = aName;
// Now do the modification.
addressbook.modifyAddressBook(addressbookDS, parentDir, selectedABDirectory, properties);
selectedABDirectory.dirName = aName;
}
function AbPrintCardInternal(doPrintPreview, msgType)

View File

@ -278,9 +278,7 @@ function hasCharacters(number)
function onAccept()
{
var properties = Components.classes["@mozilla.org/addressbook/properties;1"].createInstance(Components.interfaces.nsIAbDirectoryProperties);
var addressbook = Components.classes["@mozilla.org/addressbook;1"].createInstance(Components.interfaces.nsIAddressBook);
properties.dirType = kLDAPDirectory;
try {
var pref_string_content = "";
@ -306,8 +304,6 @@ function onAccept()
else if (results && hasCharacters(results))
errorValue = "invalidResults";
if (!errorValue) {
properties.description = description;
ldapUrl.host = hostname;
ldapUrl.dn = document.getElementById("basedn").value;
ldapUrl.filter = document.getElementById("search").value;
@ -327,33 +323,28 @@ function onAccept()
if (secure.checked)
ldapUrl.options |= ldapUrl.OPT_SECURE;
properties.URI = ldapUrl.spec;
// check if we are modifying an existing directory or adding a new directory
if (gCurrentDirectory) {
gCurrentDirectory.dirName = description;
gCurrentDirectory.lDAPURL = ldapUrl;
window.opener.gNewServerString = gCurrentDirectory.dirPrefId;
}
else { // adding a new directory
var properties = Components.classes["@mozilla.org/addressbook/properties;1"]
.createInstance(Components.interfaces.nsIAbDirectoryProperties);
properties.dirType = kLDAPDirectory;
properties.description = description;
properties.URI = ldapUrl.spec;
addressbook.newAddressBook(properties);
window.opener.gNewServerString = properties.prefName;
}
// the rdf service
var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"]
.getService(Components.interfaces.nsIRDFService);
// check if we are modifying an existing directory or adding a new directory
if (gCurrentDirectory) {
// we are modifying an existing directory
// get the datasource for the addressdirectory
var addressbookDS = RDF.GetDataSource("rdf:addressdirectory");
// moz-abdirectory:// is the RDF root to get all types of addressbooks.
var parentDir = RDF.GetResource("moz-abdirectory://")
.QueryInterface(Components.interfaces.nsIAbDirectory);
// Now do the modification.
addressbook.modifyAddressBook(addressbookDS, parentDir,
gCurrentDirectory, properties);
window.opener.gNewServerString = gCurrentDirectory.dirPrefId;
}
else { // adding a new directory
addressbook.newAddressBook(properties);
window.opener.gNewServerString = properties.prefName;
}
// XXX This is really annoying - both new/modify Address Book don't
// give us back the new directory we just created - so go find it from
// rdf so we can set a few final things up on it.

View File

@ -69,7 +69,7 @@ interface nsIAbDirectoryProperties : nsISupports {
attribute long position;
};
[scriptable, uuid(2f8feba2-23fd-49cf-b154-41432506af8d)]
[scriptable, uuid(215e6765-58d2-4809-9d9d-41991434143e)]
interface nsIAbDirectory : nsISupports {
// Types of operation
@ -87,8 +87,12 @@ interface nsIAbDirectory : nsISupports {
// The supported operations
readonly attribute long operations;
// The description of the directory
attribute wstring dirName;
/**
* The description of the directory. If this directory is not a mailing list,
* then setting this attribute will send round a "DirName" update via
* nsIAddrBookSession.
*/
attribute AString dirName;
// XXX This should really be replaced by a QI or something better
readonly attribute long dirType;
@ -126,10 +130,6 @@ interface nsIAbDirectory : nsISupports {
*/
readonly attribute nsISimpleEnumerator childCards;
// Modifies a top level directory,
// which also updates the preferences
void modifyDirectory(in nsIAbDirectory directory, in nsIAbDirectoryProperties aProperties);
// Deletes either a mailing list or a top
// level directory, which also updates the
// preferences

View File

@ -51,7 +51,7 @@ interface nsILDAPURL;
* XXX This should really inherit from nsIAbDirectory, and some day it will.
* But for now, doing that complicates implementation.
*/
[scriptable, uuid(dbb5cd0a-d646-46e2-a640-3da0d8d4d70a)]
[scriptable, uuid(fb4adf7f-a299-49d1-ac47-9ce181e8e80d)]
interface nsIAbLDAPDirectory : nsISupports
{
/**
@ -102,6 +102,6 @@ interface nsIAbLDAPDirectory : nsISupports
* url, e.g. ldap://localhost:389/ whereas the uri will give you the
* directories rdf uri, e.g. moz-abldapdirectory://<pref base name>/.
*/
readonly attribute nsILDAPURL lDAPURL;
attribute nsILDAPURL lDAPURL;
};

View File

@ -137,7 +137,7 @@ interface nsAddrDBCommitType
const long kCompressCommit = 3;
};
[scriptable, uuid(E59ABE11-1E97-46ec-A1C4-500971BBC4B4)]
[scriptable, uuid(244d95ab-ca93-436b-9809-80ef21118bd4)]
interface nsIAddrDatabase : nsIAddrDBAnnouncer {
/**
@ -199,7 +199,6 @@ interface nsIAddrDatabase : nsIAddrDBAnnouncer {
void editMailList(in nsIAbDirectory mailList, in nsIAbCard listCard, in boolean aNotify);
boolean containsMailList(in nsIAbDirectory mailList);
void deleteCardFromMailList(in nsIAbDirectory mailList, in nsIAbCard card, in boolean aNotify);
readonly attribute wstring directoryName;
/**
* aUTF8Value needs to be in UTF-8

View File

@ -48,7 +48,6 @@ interface nsIAbCard;
interface nsIAddressBook : nsISupports
{
void newAddressBook(in nsIAbDirectoryProperties aProperties);
void modifyAddressBook(in nsIRDFDataSource aDS, in nsIAbDirectory aParentDir, in nsIAbDirectory aDirectory, in nsIAbDirectoryProperties aProperties);
void deleteAddressBooks(in nsIRDFDataSource aDS, in nsISupportsArray aParentDir, in nsISupportsArray aResourceArray);
void exportAddressBook(in nsIDOMWindow aParentWin, in nsIAbDirectory aDirectory);
nsIAddrDatabase getAbDatabaseFromURI(in string URI);

View File

@ -379,11 +379,7 @@ function AbOnCreateNewAddressBook(aName)
function AbOnRenameAddressBook(aName)
{
// When the UI code for renaming addrbooks (bug #17230) is ready, just
// change 'properties.description' setting below and it should just work.
// get select ab
var selectedABURI = GetSelectedDirectory();
//dump("In AbRenameAddressBook() selectedABURI=" + selectedABURI + "\n");
// the rdf service
var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
@ -396,17 +392,7 @@ function AbOnRenameAddressBook(aName)
// the RDF resource URI for LDAPDirectory will be like: "moz-abmdbdirectory://abook-3.mab"
var selectedABDirectory = RDF.GetResource(selectedABURI).QueryInterface(Components.interfaces.nsIAbDirectory);
// Copy existing property items so they won't get reset.
var oldProperties = selectedABDirectory.directoryProperties;
// Create and fill in properties info
var properties = Components.classes["@mozilla.org/addressbook/properties;1"].createInstance(Components.interfaces.nsIAbDirectoryProperties);
properties.URI = selectedABURI;
properties.dirType = oldProperties.dirType;
properties.description = aName;
// Now do the modification.
addressbook.modifyAddressBook(addressbookDS, parentDir, selectedABDirectory, properties);
selectedABDirectory.dirName = aName;
}
function AbPrintCardInternal(doPrintPreview, msgType)

View File

@ -440,10 +440,10 @@ nsresult nsAbAutoCompleteSession::SearchCards(nsIAbDirectory* directory, nsAbAut
pFirstNameStr.get(),
pLastNameStr.get(), pEmailStr[i].get()))
{
nsString pDirName;
nsString dirName;
if (mAutoCompleteCommentColumn == 1)
{
rv = directory->GetDirName(getter_Copies(pDirName));
rv = directory->GetDirName(dirName);
if (NS_FAILED(rv))
continue;
}
@ -451,7 +451,7 @@ nsresult nsAbAutoCompleteSession::SearchCards(nsIAbDirectory* directory, nsAbAut
AddToResult(pNickNameStr.get(), pDisplayNameStr.get(),
pFirstNameStr.get(), pLastNameStr.get(),
pEmailStr[i].get(), pNotesStr.get(),
pDirName.get(), popularityIndex, bIsMailList, PR_FALSE, results);
dirName.get(), popularityIndex, bIsMailList, PR_FALSE, results);
}
}
}

View File

@ -405,69 +405,6 @@ NS_IMETHODIMP nsAbBSDirectory::DeleteDirectory(nsIAbDirectory *directory)
return rv;
}
NS_IMETHODIMP nsAbBSDirectory::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
{
nsresult rv;
NS_ENSURE_ARG_POINTER(directory);
NS_ENSURE_ARG_POINTER(aProperties);
// if addressbook is not launched yet mSevers will not be initialized
// calling GetChildNodes will initialize mServers
if (!mInitialized) {
nsCOMPtr<nsISimpleEnumerator> subDirectories;
rv = GetChildNodes(getter_AddRefs(subDirectories));
NS_ENSURE_SUCCESS(rv, rv);
}
nsVoidKey key((void *)directory);
DIR_Server *server = (DIR_Server* )mServers.Get(&key);
if (!server)
return NS_ERROR_FAILURE;
GetDirectories getDirectories (server);
mServers.Enumerate (GetDirectories_getDirectory, (void *)&getDirectories);
nsAutoString description;
nsCString uri;
rv = aProperties->GetDescription(description);
NS_ENSURE_SUCCESS(rv, rv);
NS_ConvertUTF8toUTF16 oldValue(server->description);
NS_Free(server->description);
NS_ConvertUTF16toUTF8 utf8str(description.get());
server->description = ToNewCString(utf8str);
rv = aProperties->GetURI(getter_Copies(uri));
NS_ENSURE_SUCCESS(rv, rv);
NS_Free(server->uri);
server->uri = ToNewCString(uri);
DIR_SavePrefsForOneServer(server);
if (!oldValue.Equals(description)) {
nsCOMPtr<nsIAbDirectory> modifiedDir;
getDirectories.directories->GetElementAt (0, getter_AddRefs(modifiedDir));
// First tell the directory it's new name
rv = modifiedDir->SetDirName(description.get());
NS_ENSURE_SUCCESS(rv, rv);
// Then tell everyone else.
nsCOMPtr<nsIAddrBookSession> abSession =
do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv))
abSession->NotifyItemPropertyChanged(modifiedDir, "DirName", oldValue.get(), description.get());
}
// Save modified address book into pref file.
nsCOMPtr<nsIPrefService> prefService(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
return prefService->SavePrefFile(nsnull);
}
NS_IMETHODIMP nsAbBSDirectory::HasDirectory(nsIAbDirectory *dir, PRBool *hasDir)
{
if (!hasDir)

View File

@ -57,7 +57,6 @@ public:
NS_IMETHOD GetChildNodes(nsISimpleEnumerator* *result);
NS_IMETHOD CreateNewDirectory(nsIAbDirectoryProperties *aProperties);
NS_IMETHOD CreateDirectoryByURI(const PRUnichar *dirName, const char *uri, PRBool migrating);
NS_IMETHOD ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties);
NS_IMETHOD DeleteDirectory(nsIAbDirectory *directory);
NS_IMETHOD HasDirectory(nsIAbDirectory *dir, PRBool *hasDir);

View File

@ -47,6 +47,7 @@
#include "prmem.h"
#include "nsCRT.h"
#include "rdf.h"
#include "nsIAddrBookSession.h"
// From nsDirPrefs
#define kDefaultPosition 1
@ -89,25 +90,52 @@ NS_IMETHODIMP nsAbDirProperty::GetOperations(PRInt32 *aOperations)
return NS_OK;
}
NS_IMETHODIMP nsAbDirProperty::GetDirName(PRUnichar **aDirName)
NS_IMETHODIMP nsAbDirProperty::GetDirName(nsAString &aDirName)
{
if (aDirName)
{
*aDirName = ToNewUnicode(m_DirName);
if (!(*aDirName))
return NS_ERROR_OUT_OF_MEMORY;
else
return NS_OK;
}
else
return NS_ERROR_NULL_POINTER;
if (m_IsMailList)
{
aDirName = m_ListDirName;
return NS_OK;
}
nsCString dirName;
nsresult rv = GetLocalizedStringValue("description", EmptyCString(),
dirName);
NS_ENSURE_SUCCESS(rv, rv);
CopyUTF8toUTF16(dirName, aDirName);
return NS_OK;
}
NS_IMETHODIMP nsAbDirProperty::SetDirName(const PRUnichar * aDirName)
// XXX Although mailing lists could use the NotifyItemPropertyChanged
// mechanism here, it requires some rework on how we write/save data
// relating to mailing lists, so we're just using the old method of a
// local variable to store tha mailing list name.
NS_IMETHODIMP nsAbDirProperty::SetDirName(const nsAString &aDirName)
{
if (aDirName)
m_DirName = aDirName;
return NS_OK;
if (m_IsMailList)
{
m_ListDirName = aDirName;
return NS_OK;
}
// Store the old value.
nsString oldDirName;
nsresult rv = GetDirName(oldDirName);
NS_ENSURE_SUCCESS(rv, rv);
// Save the new value
rv = SetStringValue("description", NS_ConvertUTF16toUTF8(aDirName));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIAddrBookSession> abSession =
do_GetService(NS_ADDRBOOKSESSION_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv))
abSession->NotifyItemPropertyChanged(this, "DirName", oldDirName.get(),
nsString(aDirName).get());
return NS_OK;
}
NS_IMETHODIMP nsAbDirProperty::GetDirType(PRInt32 *aDirType)
@ -217,16 +245,16 @@ NS_IMETHODIMP nsAbDirProperty::SetAddressLists(nsISupportsArray * aAddressLists)
NS_IMETHODIMP nsAbDirProperty::CopyMailList(nsIAbDirectory* srcList)
{
SetIsMailList(PR_TRUE);
nsString str;
srcList->GetDirName(getter_Copies(str));
SetDirName(str.get());
srcList->GetDirName(str);
SetDirName(str);
srcList->GetListNickName(getter_Copies(str));
SetListNickName(str.get());
srcList->GetDescription(getter_Copies(str));
SetDescription(str.get());
SetIsMailList(PR_TRUE);
nsCOMPtr <nsISupportsArray> pAddressLists;
srcList->GetAddressLists(getter_AddRefs(pAddressLists));
SetAddressLists(pAddressLists);
@ -243,10 +271,6 @@ NS_IMETHODIMP
nsAbDirProperty::GetChildCards(nsISimpleEnumerator **childCards)
{ return NS_ERROR_NOT_IMPLEMENTED; }
NS_IMETHODIMP
nsAbDirProperty::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
{ return NS_ERROR_NOT_IMPLEMENTED; }
NS_IMETHODIMP
nsAbDirProperty::DeleteDirectory(nsIAbDirectory *directory)
{ return NS_ERROR_NOT_IMPLEMENTED; }

View File

@ -77,9 +77,9 @@ protected:
nsresult GetAttributeName(PRUnichar **aName, nsString& value);
nsresult SetAttributeName(const PRUnichar *aName, nsString& arrtibute);
nsString m_DirName;
PRUint32 m_LastModifiedDate;
nsString m_ListDirName;
nsString m_ListName;
nsString m_ListNickName;
nsString m_Description;

View File

@ -123,9 +123,6 @@ NS_IMETHODIMP nsAbLDAPDirFactory::CreateDirectory(nsIAbDirectoryProperties *aPro
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(resource, &rv));
NS_ENSURE_SUCCESS(rv, rv);
rv = directory->SetDirName(description.get());
NS_ENSURE_SUCCESS(rv,rv);
rv = directory->SetDirPrefId(prefName);
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -208,7 +208,7 @@ NS_IMETHODIMP nsAbLDAPDirectory::HasCard(nsIAbCard* card, PRBool* hasCard)
return NS_OK;
}
nsresult nsAbLDAPDirectory::GetLDAPURL(nsILDAPURL** url)
NS_IMETHODIMP nsAbLDAPDirectory::GetLDAPURL(nsILDAPURL** url)
{
NS_ENSURE_ARG_POINTER(url);
@ -255,6 +255,17 @@ nsresult nsAbLDAPDirectory::GetLDAPURL(nsILDAPURL** url)
return rv;
}
NS_IMETHODIMP nsAbLDAPDirectory::SetLDAPURL(nsILDAPURL *aUrl)
{
NS_ENSURE_ARG_POINTER(aUrl);
nsCString tempLDAPURL;
nsresult rv = aUrl->GetSpec(tempLDAPURL);
NS_ENSURE_SUCCESS(rv, rv);
return SetStringValue("uri", tempLDAPURL);
}
/*
*
* nsIAbDirectorySearch methods

View File

@ -132,9 +132,6 @@ NS_IMETHODIMP nsAbMDBDirFactory::CreateDirectory(nsIAbDirectoryProperties *aProp
nsCOMPtr<nsIAbDirectory> directory(do_QueryInterface(resource, &rv));
NS_ENSURE_SUCCESS(rv, rv);
rv = directory->SetDirName(description.get());
NS_ENSURE_SUCCESS(rv, rv);
rv = directory->SetDirPrefId(prefName);
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -217,12 +217,6 @@ nsresult nsAbMDBDirectory::RemoveCardFromAddressList(nsIAbCard* card)
return NS_OK;
}
NS_IMETHODIMP nsAbMDBDirectory::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbMDBDirectory::DeleteDirectory(nsIAbDirectory *directory)
{
nsresult rv = NS_OK;
@ -932,11 +926,11 @@ NS_IMETHODIMP nsAbMDBDirectory::OnListEntryChange
NS_ENSURE_SUCCESS(rv,rv);
if (bIsMailList) {
nsString pListName;
rv = list->GetDirName(getter_Copies(pListName));
nsString listName;
rv = list->GetDirName(listName);
NS_ENSURE_SUCCESS(rv,rv);
rv = NotifyPropertyChanged(list, "DirName", nsnull, pListName.get());
rv = NotifyPropertyChanged(list, "DirName", nsnull, listName.get());
NS_ENSURE_SUCCESS(rv,rv);
}
}

View File

@ -91,7 +91,6 @@ public:
// nsIAbDirectory methods:
NS_IMETHOD GetChildNodes(nsISimpleEnumerator* *result);
NS_IMETHOD GetChildCards(nsISimpleEnumerator* *result);
NS_IMETHOD ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties);
NS_IMETHOD DeleteDirectory(nsIAbDirectory *directory);
NS_IMETHOD DeleteCards(nsISupportsArray *cards);
NS_IMETHOD HasCard(nsIAbCard *cards, PRBool *hasCard);

View File

@ -72,14 +72,8 @@ nsAbOSXDirFactory::CreateDirectory(nsIAbDirectoryProperties *aProperties,
getter_AddRefs(resource));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIAbDirectory> directory = do_QueryInterface(resource, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = directory->SetDirName(description.get());
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIAbOSXDirectory> osxDirectory =
do_QueryInterface(directory, &rv);
do_QueryInterface(resource, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = osxDirectory->AssertChildNodes();

View File

@ -205,14 +205,15 @@ NS_IMETHODIMP nsAbOutlookDirectory::Init(const char *aUri)
else
prefix.AssignLiteral("OE ");
prefix.Append(unichars);
SetDirName(prefix.get());
if (objectType == MAPI_DISTLIST) {
SetDirName(unichars.get());
SetIsMailList(PR_TRUE);
SetDirName(unichars);
}
else
else {
SetIsMailList(PR_FALSE);
SetDirName(prefix);
}
return UpdateAddressList();
}
@ -421,12 +422,6 @@ NS_IMETHODIMP nsAbOutlookDirectory::DeleteCards(nsISupportsArray *aCardList)
return NS_OK ;
}
NS_IMETHODIMP nsAbOutlookDirectory::ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsAbOutlookDirectory::DeleteDirectory(nsIAbDirectory *aDirectory)
{
if (mIsQueryURI) { return NS_ERROR_NOT_IMPLEMENTED ; }
@ -544,7 +539,7 @@ NS_IMETHODIMP nsAbOutlookDirectory::EditMailListToDatabase(const char *aUri, nsI
nsAbWinHelperGuard mapiAddBook (mAbWinType) ;
if (!mapiAddBook->IsOK()) { return NS_ERROR_FAILURE ; }
retCode = GetDirName(getter_Copies(name)) ;
retCode = GetDirName(name);
NS_ENSURE_SUCCESS(retCode, retCode) ;
if (!mapiAddBook->SetPropertyUString(*mMapiData, PR_DISPLAY_NAME_W, name.get())) {
return NS_ERROR_FAILURE ;

View File

@ -68,7 +68,6 @@ public:
NS_IMETHOD HasCard(nsIAbCard *aCard, PRBool *aHasCard);
NS_IMETHOD HasDirectory(nsIAbDirectory *aDirectory, PRBool *aHasDirectory);
NS_IMETHOD DeleteCards(nsISupportsArray *aCardList);
NS_IMETHOD ModifyDirectory(nsIAbDirectory *directory, nsIAbDirectoryProperties *aProperties);
NS_IMETHOD DeleteDirectory(nsIAbDirectory *aDirectory);
NS_IMETHOD AddCard(nsIAbCard *aData, nsIAbCard **addedCard);
NS_IMETHOD ModifyCard(nsIAbCard *aModifiedCard);

View File

@ -1698,7 +1698,7 @@ nsresult nsAddrDatabase::AddListAttributeColumnsToRow(nsIAbDirectory *list, nsIM
{
nsString unicodeStr;
list->GetDirName(getter_Copies(unicodeStr));
list->GetDirName(unicodeStr);
if (!unicodeStr.IsEmpty())
AddUnicodeToColumn(listRow, m_ListNameColumnToken, m_LowerListNameColumnToken, unicodeStr.get());
@ -2979,7 +2979,7 @@ nsresult nsAddrDatabase::GetListFromDB(nsIAbDirectory *newList, nsIMdbRow* listR
err = GetStringColumn(listRow, m_ListNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && !tempString.IsEmpty())
{
newList->SetDirName(tempString.get());
newList->SetDirName(tempString);
}
err = GetStringColumn(listRow, m_ListNickNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && !tempString.IsEmpty())
@ -3504,9 +3504,10 @@ nsresult nsAddrDatabase::CreateABList(nsIMdbRow* listRow, nsIAbDirectory **resul
mdb_id existingID;
dbmailList->GetDbRowID(&existingID);
if (existingID != rowID) {
// Ensure IsMailList is set up first.
mailList->SetIsMailList(PR_TRUE);
GetListFromDB(mailList, listRow);
dbmailList->SetDbRowID(rowID);
mailList->SetIsMailList(PR_TRUE);
}
dbm_dbDirectory->AddMailListToDirectory(mailList);
@ -3580,16 +3581,6 @@ NS_IMETHODIMP nsAddrDatabase::GetCardFromAttribute(nsIAbDirectory *aDirectory, c
return rv;
}
NS_IMETHODIMP nsAddrDatabase::GetDirectoryName(PRUnichar **name)
{
if (m_dbDirectory && name)
{
return m_dbDirectory->GetDirName(name);
}
else
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP nsAddrDatabase::AddListDirNode(nsIMdbRow * listRow)
{
nsresult rv = NS_OK;

View File

@ -266,7 +266,6 @@ public:
NS_IMETHOD AddListDirNode(nsIMdbRow * listRow);
NS_IMETHOD GetDirectoryName(PRUnichar **name);
NS_IMETHOD FindMailListbyUnicodeName(const PRUnichar *listName, PRBool *exist);

View File

@ -194,34 +194,6 @@ NS_IMETHODIMP nsAddressBook::NewAddressBook(nsIAbDirectoryProperties *aPropertie
return rv;
}
NS_IMETHODIMP nsAddressBook::ModifyAddressBook
(nsIRDFDataSource* aDS, nsIAbDirectory *aParentDir, nsIAbDirectory *aDirectory, nsIAbDirectoryProperties *aProperties)
{
NS_ENSURE_ARG_POINTER(aDS);
NS_ENSURE_ARG_POINTER(aParentDir);
NS_ENSURE_ARG_POINTER(aDirectory);
NS_ENSURE_ARG_POINTER(aProperties);
nsresult rv;
nsCOMPtr<nsISupportsArray> parentArray (do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsISupportsArray> resourceElement (do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsISupportsArray> resourceArray (do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
parentArray->AppendElement(aParentDir);
nsCOMPtr<nsIRDFResource> dirSource(do_QueryInterface(aDirectory, &rv));
NS_ENSURE_SUCCESS(rv, rv);
resourceElement->AppendElement(dirSource);
resourceElement->AppendElement(aProperties);
resourceArray->AppendElement(resourceElement);
return DoCommand(aDS, NS_LITERAL_CSTRING(NC_RDF_MODIFY), parentArray, resourceArray);
}
NS_IMETHODIMP nsAddressBook::DeleteAddressBooks
(nsIRDFDataSource* aDS, nsISupportsArray *aParentDir, nsISupportsArray *aResourceArray)
{

View File

@ -55,7 +55,6 @@ class nsIAbDirectory;
class nsIAbLDAPAttributeMap;
#define NC_RDF_NEWABCARD NC_NAMESPACE_URI "NewCard"
#define NC_RDF_MODIFY NC_NAMESPACE_URI "Modify"
#define NC_RDF_DELETE NC_NAMESPACE_URI "Delete"
#define NC_RDF_DELETECARD NC_NAMESPACE_URI "DeleteCards"
#define NC_RDF_NEWDIRECTORY NC_NAMESPACE_URI "NewDirectory"
@ -99,7 +98,7 @@ public:
NS_DECL_NSICONTENTHANDLER
NS_DECL_NSISTREAMLOADEROBSERVER
NS_DECL_NSICOMMANDLINEHANDLER
protected:
nsresult DoCommand(nsIRDFDataSource *db, const nsACString& command,
nsISupportsArray *srcArray, nsISupportsArray *arguments);

View File

@ -159,6 +159,10 @@ NS_IMETHODIMP DirPrefObserver::Observe(nsISupports *aSubject, const char *aTopic
DIR_SetServerPosition(dir_ServerList, server, DIR_POS_DELETE);
}
}
if (id == idDescription)
// Ensure the local copy of the description is kept up to date.
server->description = DIR_GetStringPref(prefname, "description", nsnull);
}
/* If the server is not in the unified list, we may need to add it. Servers
* are only added when the position, serverName and description are valid.

View File

@ -69,7 +69,6 @@
#define NC_RDF_SUPPORTSMAILINGLISTS "http://home.netscape.com/NC-rdf#SupportsMailingLists"
//Directory Commands
#define NC_RDF_MODIFY "http://home.netscape.com/NC-rdf#Modify"
#define NC_RDF_DELETECARDS "http://home.netscape.com/NC-rdf#DeleteCards"
////////////////////////////////////////////////////////////////////////
@ -162,8 +161,6 @@ nsAbDirectoryDataSource::Init()
NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_DIRTREENAMESORT), getter_AddRefs(kNC_DirTreeNameSort));
NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_MODIFY), getter_AddRefs(kNC_Modify));
NS_ENSURE_SUCCESS(rv,rv);
rv = rdf->GetResource(NS_LITERAL_CSTRING(NC_RDF_DELETE),
getter_AddRefs(kNC_Delete));
NS_ENSURE_SUCCESS(rv,rv);
@ -357,8 +354,7 @@ nsAbDirectoryDataSource::IsCommandEnabled(nsISupportsArray/*<nsIRDFResource>*/*
directory = do_QueryElementAt(aSources, i, &rv);
if (NS_SUCCEEDED(rv)) {
// we don't care about the arguments -- directory commands are always enabled
if (!((aCommand == kNC_Delete) || (aCommand == kNC_DeleteCards)
||(aCommand == kNC_Modify))) {
if (!((aCommand == kNC_Delete) || (aCommand == kNC_DeleteCards))) {
*aResult = PR_FALSE;
return NS_OK;
}
@ -377,11 +373,6 @@ nsAbDirectoryDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSource
nsresult rv = aSources->Count(&cnt);
NS_ENSURE_SUCCESS(rv, rv);
if (aCommand == kNC_Modify) {
rv = DoModifyDirectory(aSources,aArguments);
}
else
{
if ((aCommand == kNC_Delete))
rv = DoDeleteFromDirectory(aSources, aArguments);
else {
@ -393,7 +384,6 @@ nsAbDirectoryDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSource
rv = DoDeleteCardsFromDirectory(directory, aArguments);
}
}
}
}
//for the moment return NS_OK, because failure stops entire DoCommand process.
return NS_OK;
@ -422,37 +412,6 @@ NS_IMETHODIMP nsAbDirectoryDataSource::OnItemAdded(nsISupports *parentDirectory,
return NS_OK;
}
nsresult nsAbDirectoryDataSource::DoModifyDirectory(nsISupportsArray *parentDir, nsISupportsArray *arguments)
{
PRUint32 itemCount;
// Parent dir count should be 1.
nsresult rv = parentDir->Count(&itemCount);
NS_ENSURE_SUCCESS(rv, rv);
NS_ASSERTION(itemCount == 1, "DoModifyDirectory() must have parent directory count = 1.");
if (itemCount != 1)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIAbDirectory> parent = do_QueryElementAt(parentDir, 0, &rv);
NS_ENSURE_SUCCESS(rv, rv);
// Argument count should be 2. 1st one is nsIAbDirectory and 2nd is nsIAbDirectoryProperties.
nsCOMPtr<nsISupportsArray> resourceArray = do_QueryElementAt(arguments, 0, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = resourceArray->Count(&itemCount);
NS_ENSURE_SUCCESS(rv, rv);
NS_ASSERTION(itemCount == 2, "DoModifyDirectory() must have resource argument count = 2.");
if (itemCount != 2)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIAbDirectory> modifiedDir = do_QueryElementAt(resourceArray, 0, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIAbDirectoryProperties> properties = do_QueryElementAt(resourceArray, 1, &rv);
NS_ENSURE_SUCCESS(rv, rv);
if (modifiedDir && properties)
rv = parent->ModifyDirectory(modifiedDir, properties);
return rv;
}
NS_IMETHODIMP nsAbDirectoryDataSource::OnItemRemoved(nsISupports *parentDirectory, nsISupports *item)
{
nsresult rv;
@ -524,7 +483,7 @@ nsresult nsAbDirectoryDataSource::createDirectoryNameNode(nsIAbDirectory *direct
nsIRDFNode **target)
{
nsString name;
nsresult rv = directory->GetDirName(getter_Copies(name));
nsresult rv = directory->GetDirName(name);
NS_ENSURE_SUCCESS(rv, rv);
rv = createNode(name.get(), target);
NS_ENSURE_SUCCESS(rv,rv);
@ -638,7 +597,7 @@ nsresult
nsAbDirectoryDataSource::createDirectoryTreeNameSortNode(nsIAbDirectory* directory, nsIRDFNode **target)
{
nsString name;
nsresult rv = directory->GetDirName(getter_Copies(name));
nsresult rv = directory->GetDirName(name);
NS_ENSURE_SUCCESS(rv, rv);
/* sort addressbooks in this order - Personal Addressbook, Collected Addresses, MDB, LDAP -

View File

@ -132,8 +132,6 @@ protected:
nsresult getDirectoryArcLabelsOut(nsIAbDirectory *directory,
nsISupportsArray **arcs);
nsresult DoModifyDirectory(nsISupportsArray *parentDir,
nsISupportsArray *arguments);
nsresult DoDeleteFromDirectory(nsISupportsArray *parentDirs,
nsISupportsArray *delDirs);
nsresult DoDeleteCardsFromDirectory(nsIAbDirectory *directory,
@ -161,7 +159,6 @@ protected:
nsCOMPtr<nsICollation> mCollationKeyGenerator;
// commands
nsCOMPtr<nsIRDFResource> kNC_Modify;
nsCOMPtr<nsIRDFResource> kNC_Delete;
nsCOMPtr<nsIRDFResource> kNC_DeleteCards;

View File

@ -4135,7 +4135,7 @@ nsresult nsMsgCompose::BuildMailListArray(nsIAddrDatabase* database, nsIAbDirect
nsString listName;
nsString listDescription;
directory->GetDirName(getter_Copies(listName));
directory->GetDirName(listName);
directory->GetDescription(getter_Copies(listDescription));
nsMsgMailList* mailList = new nsMsgMailList(listName,

View File

@ -1014,23 +1014,10 @@ nsresult nsAbPalmHotSync::DeleteAB(long aCategoryIndex, const char * aABUrl)
nsresult nsAbPalmHotSync::RenameAB(long aCategoryIndex, const char * aABUrl)
{
// Fill in property info and call ModifyAB().
nsresult rv;
nsCOMPtr <nsIAbDirectoryProperties> properties(do_CreateInstance(NS_ABDIRECTORYPROPERTIES_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv,rv);
// For modify to work, we only need to set description, uri and dir type.
rv = properties->SetDescription(mAbName);
NS_ENSURE_SUCCESS(rv,rv);
rv = properties->SetURI(aABUrl);
NS_ENSURE_SUCCESS(rv,rv);
rv = properties->SetDirType(kPABDirectory); // pab dir type for PalmSync
NS_ENSURE_SUCCESS(rv,rv);
PRUint32 modTimeInSec;
PRTime2Seconds(PR_Now(), &modTimeInSec);
return ModifyAB(aABUrl, properties, modTimeInSec, aCategoryIndex);
return ModifyAB(aABUrl, mAbName, modTimeInSec, aCategoryIndex);
}
nsresult nsAbPalmHotSync::NewAB(const nsString& aAbName)
@ -1049,25 +1036,11 @@ nsresult nsAbPalmHotSync::NewAB(const nsString& aAbName)
nsresult nsAbPalmHotSync::UpdateABInfo(PRUint32 aModTime, PRInt32 aCategoryIndex)
{
// Fill in property info and call ModifyAB().
nsresult rv;
nsCOMPtr <nsIAbDirectoryProperties> properties(do_CreateInstance(NS_ABDIRECTORYPROPERTIES_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv,rv);
// For modify to work, we only need to set description, uri and
// dir type. Then add mod time and category id we want to modify.
rv = properties->SetDescription(mDescription);
NS_ENSURE_SUCCESS(rv,rv);
rv = properties->SetURI(mUri.get());
NS_ENSURE_SUCCESS(rv,rv);
rv = properties->SetDirType(mDirType);
NS_ENSURE_SUCCESS(rv,rv);
return(ModifyAB(mUri.get(), properties, aModTime, aCategoryIndex));
return(ModifyAB(mUri.get(), mDescription, aModTime, aCategoryIndex));
}
nsresult nsAbPalmHotSync::ModifyAB(const char * aABUrl,
nsIAbDirectoryProperties *aProperties,
const nsString &aAbName,
const PRUint32 aModTime,
const PRInt32 aCategoryId)
{
@ -1091,20 +1064,12 @@ nsresult nsAbPalmHotSync::ModifyAB(const char * aABUrl,
nsCOMPtr <nsIAbDirectory> selectedDirectory = do_QueryInterface(childResource, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = selectedDirectory->SetDirName(aAbName);
NS_ENSURE_SUCCESS(rv, rv);
// Now set the mod time and category id directly via the selected directory.
rv = selectedDirectory->SetIntValue("PalmSyncTimeStamp", aModTime);
NS_ENSURE_SUCCESS(rv, rv);
rv = selectedDirectory->SetIntValue("PalmSyncCategoryId", aCategoryId);
NS_ENSURE_SUCCESS(rv, rv);
// RDF data source for addrbook
nsCOMPtr<nsIRDFDataSource> ds;
rv = rdfService->GetDataSource("rdf:addressdirectory", getter_AddRefs(ds));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr <nsIAddressBook> ab = do_CreateInstance(NS_ADDRESSBOOK_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
return(ab->ModifyAddressBook(ds, parentDirectory, selectedDirectory, aProperties));
return selectedDirectory->SetIntValue("PalmSyncCategoryId", aCategoryId);
}

View File

@ -143,7 +143,7 @@ protected:
void ConvertAssignPalmIDAttrib(PRUint32 id, nsIAbMDBCard * card);
nsresult GetABInterface();
nsresult UpdateABInfo(PRUint32 modTime, PRInt32 categoryId);
nsresult ModifyAB(const char * ABUrl, nsIAbDirectoryProperties *properties,
nsresult ModifyAB(const char * ABUrl, const nsString &aAbName,
const PRUint32 aModTime, const PRInt32 aCategoryId);
nsresult NewAB(const nsString& aAbName);