This commit is contained in:
chuang%netscape.com 1999-08-25 21:19:37 +00:00
Родитель 945d691e5c
Коммит 01cfaff029
13 изменённых файлов: 1288 добавлений и 163 удалений

Просмотреть файл

@ -45,6 +45,6 @@ interface nsIAbDirectory : nsISupports {
void HasCard(in nsIAbCard cards, out boolean hasCard);
void HasDirectory(in nsIAbDirectory dir, out boolean hasDir);
void GetMailingList(out nsIEnumerator mailingList);
void CreateNewDirectory(in string dirName);
void CreateNewDirectory(in string dirName, in string fileName);
};

Просмотреть файл

@ -23,6 +23,8 @@
[ptr] native nsIMdbTableRowCursor(nsIMdbTableRowCursor);
[ptr] native nsIMdbEnv(nsIMdbEnv);
[ptr] native nsIMdbRow(nsIMdbRow);
[ptr] native nsString(nsString);
%{C++
#include "mdb.h"
@ -66,5 +68,43 @@ interface nsIAddrDatabase : nsIAddrDBAnnouncer {
void AddAnonymousAttributesFromCard(in nsIAbCard card);
void RemoveAnonymousAttributesFromCard(in nsIAbCard card);
void EditAnonymousAttributesFromCard(in nsIAbCard card);
[noscript] void GetNewRow(out nsIMdbRow newRow);
[noscript] void AddCardRowToDB(in nsIMdbRow newRow);
[noscript] void AddFirstName(in nsIMdbRow row, in nsString value);
[noscript] void AddLastName(in nsIMdbRow row, in nsString value);
[noscript] void AddDisplayName(in nsIMdbRow row, in nsString value);
[noscript] void AddNickName(in nsIMdbRow row, in nsString value);
[noscript] void AddPrimaryEmail(in nsIMdbRow row, in nsString value);
[noscript] void Add2ndEmail(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkPhone(in nsIMdbRow row, in nsString value);
[noscript] void AddHomePhone(in nsIMdbRow row, in nsString value);
[noscript] void AddFaxNumber(in nsIMdbRow row, in nsString value);
[noscript] void AddPagerNumber(in nsIMdbRow row, in nsString value);
[noscript] void AddCellularNumber(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeAddress(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeAddress2(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeCity(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeState(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeZipCode(in nsIMdbRow row, in nsString value);
[noscript] void AddHomeCountry(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkAddress(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkAddress2(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkCity(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkState(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkZipCode(in nsIMdbRow row, in nsString value);
[noscript] void AddWorkCountry(in nsIMdbRow row, in nsString value);
[noscript] void AddJobTitle(in nsIMdbRow row, in nsString value);
[noscript] void AddDepartment(in nsIMdbRow row, in nsString value);
[noscript] void AddCompany(in nsIMdbRow row, in nsString value);
[noscript] void AddWebPage1(in nsIMdbRow row, in nsString value);
[noscript] void AddWebPage2(in nsIMdbRow row, in nsString value);
[noscript] void AddBirthYear(in nsIMdbRow row, in nsString value);
[noscript] void AddBirthMonth(in nsIMdbRow row, in nsString value);
[noscript] void AddBirthDay(in nsIMdbRow row, in nsString value);
[noscript] void AddCustom1(in nsIMdbRow row, in nsString value);
[noscript] void AddCustom2(in nsIMdbRow row, in nsString value);
[noscript] void AddCustom3(in nsIMdbRow row, in nsString value);
[noscript] void AddCustom4(in nsIMdbRow row, in nsString value);
[noscript] void AddNotes(in nsIMdbRow row, in nsString value);
};

Просмотреть файл

@ -38,5 +38,6 @@ interface nsIAddressBook : nsISupports {
void PrintCard();
void PrintAddressbook();
void SetWebShellWindow(in nsIDOMWindow win);
void ImportAddressBook();
};

Просмотреть файл

@ -62,7 +62,7 @@ public:
NS_IMETHOD HasCard(nsIAbCard *cards, PRBool *hasCard) { return NS_OK; }
NS_IMETHOD HasDirectory(nsIAbDirectory *dir, PRBool *hasDir) { return NS_OK; }
NS_IMETHOD GetMailingList(nsIEnumerator **mailingList) { return NS_OK; }
NS_IMETHOD CreateNewDirectory(const char *dirName) { return NS_OK; }
NS_IMETHOD CreateNewDirectory(const char *dirName, const char *fileName) { return NS_OK; }
protected:

Просмотреть файл

@ -217,13 +217,13 @@ NS_IMETHODIMP nsAbDirectory::GetMailingList(nsIEnumerator **mailingList)
return rv;
}
NS_IMETHODIMP nsAbDirectory::CreateNewDirectory(const char *dirName)
NS_IMETHODIMP nsAbDirectory::CreateNewDirectory(const char *dirName, const char *fileName)
{
if (!dirName)
return NS_ERROR_NULL_POINTER;
DIR_Server * server = nsnull;
nsresult rv = DIR_AddNewAddressBook(dirName, &server);
nsresult rv = DIR_AddNewAddressBook(dirName, fileName, &server);
nsCOMPtr<nsIAbDirectory> newDir;
char *uri = PR_smprintf("%s%s", kDirectoryDataSourceRoot, server->fileName);
@ -236,9 +236,9 @@ NS_IMETHODIMP nsAbDirectory::CreateNewDirectory(const char *dirName)
newDir->SetDirName(server->description);
newDir->SetServer(server);
nsCOMPtr<nsISupports> dirSupports(do_QueryInterface(newDir, &rv));
// nsCOMPtr<nsISupports> dirSupports(do_QueryInterface(newDir, &rv));
if (NS_SUCCEEDED(rv))
// if (NS_SUCCEEDED(rv))
NotifyItemAdded(newDir);
return rv;
}
@ -317,6 +317,76 @@ NS_IMETHODIMP nsAbDirectory::DeleteCards(nsISupportsArray *cards)
return rv;
}
nsresult nsAbDirectory::DeleteDirectoryCards(nsIAbDirectory* directory, DIR_Server *server)
{
nsresult rv = NS_OK;
nsFileSpec* dbPath = nsnull;
nsCOMPtr<nsIAddrDatabase> database;
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
if(NS_SUCCEEDED(rv))
abSession->GetUserProfileDirectory(&dbPath);
if (dbPath)
{
(*dbPath) += server->fileName;
// close file before delete it
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
if (NS_SUCCEEDED(rv) && addrDBFactory)
rv = addrDBFactory->Open(dbPath, PR_FALSE, getter_AddRefs(database), PR_TRUE);
}
/* delete cards */
nsCOMPtr<nsISupportsArray> cardArray;
nsCOMPtr<nsIEnumerator> cardChild;
NS_NewISupportsArray(getter_AddRefs(cardArray));
rv = directory->GetChildCards(getter_AddRefs(cardChild));
if (NS_SUCCEEDED(rv) && cardChild)
{
nsCOMPtr<nsISupports> item;
rv = cardChild->First();
if (NS_SUCCEEDED(rv))
{
do
{
cardChild->CurrentItem(getter_AddRefs(item));
if (item)
{
nsCOMPtr<nsIAbCard> card;
card = do_QueryInterface(item, &rv);
if (card)
{
cardArray->AppendElement(card);
}
}
rv = cardChild->Next();
} while (NS_SUCCEEDED(rv));
if (database)
{
PRUint32 cardCount;
rv = cardArray->Count(&cardCount);
if (NS_FAILED(rv)) return rv;
for(PRUint32 i = 0; i < cardCount; i++)
{
nsISupports* cardSupports = cardArray->ElementAt(i);
nsIAbCard* card = (nsIAbCard*)cardSupports;
if (card)
{
database->DeleteCard(card, PR_TRUE);
}
}
}
}
}
return rv;
}
NS_IMETHODIMP nsAbDirectory::DeleteDirectories(nsISupportsArray *dierctories)
{
nsresult rv = NS_ERROR_FAILURE;
@ -336,6 +406,8 @@ NS_IMETHODIMP nsAbDirectory::DeleteDirectories(nsISupportsArray *dierctories)
rv = directory->GetServer(&server);
if (server)
{
DeleteDirectoryCards(directory, server);
DIR_DeleteServerFromList(server);
rv = mSubDirectories->RemoveElement(directory);

Просмотреть файл

@ -54,7 +54,7 @@ public:
NS_IMETHOD HasCard(nsIAbCard *cards, PRBool *hasCard);
NS_IMETHOD HasDirectory(nsIAbDirectory *dir, PRBool *hasDir);
NS_IMETHOD GetMailingList(nsIEnumerator **mailingList);
NS_IMETHOD CreateNewDirectory(const char *dirName);
NS_IMETHOD CreateNewDirectory(const char *dirName, const char *fileName);
// nsIAddrDBListener methods:
NS_IMETHOD OnCardAttribChange(PRUint32 abCode, nsIAddrDBListener *instigator);
@ -65,6 +65,7 @@ protected:
nsresult NotifyItemAdded(nsISupports *item);
nsresult NotifyItemDeleted(nsISupports *item);
nsresult AddChildCards(nsAutoString name, nsIAbCard **childDir);
nsresult DeleteDirectoryCards(nsIAbDirectory* directory, DIR_Server *server);
nsVoidArray* GetDirList(){ return DIR_GetDirectories(); }

Просмотреть файл

@ -926,182 +926,290 @@ nsresult nsAddrDatabase::AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *ca
char* pStr = nsnull;
card->GetFirstName(&pStr);
if (pStr)
AddStringColumn(cardRow, m_FirstNameColumnToken, pStr);
{
nsString nameStr(pStr);
AddFirstName(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetLastName(&pStr);
if (pStr)
AddStringColumn(cardRow, m_LastNameColumnToken, pStr);
{
nsString nameStr(pStr);
AddLastName(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetDisplayName(&pStr);
if (pStr)
AddStringColumn(cardRow, m_DisplayNameColumnToken, pStr);
{
nsString nameStr(pStr);
AddDisplayName(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetNickName(&pStr);
if (pStr)
AddStringColumn(cardRow, m_NickNameColumnToken, pStr);
{
nsString nameStr(pStr);
AddNickName(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetPrimaryEmail(&pStr);
if (pStr)
AddStringColumn(cardRow, m_PriEmailColumnToken, pStr);
{
nsString nameStr(pStr);
AddPrimaryEmail(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetSecondEmail(&pStr);
if (pStr)
AddStringColumn(cardRow, m_2ndEmailColumnToken, pStr);
{
nsString nameStr(pStr);
Add2ndEmail(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkPhone(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkPhoneColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkPhone(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomePhone(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomePhoneColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomePhone(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetFaxNumber(&pStr);
if (pStr)
AddStringColumn(cardRow, m_FaxColumnToken, pStr);
{
nsString nameStr(pStr);
AddFaxNumber(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetPagerNumber(&pStr);
if (pStr)
AddStringColumn(cardRow, m_PagerColumnToken, pStr);
{
nsString nameStr(pStr);
AddPagerNumber(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCellularNumber(&pStr);
if (pStr)
AddStringColumn(cardRow, m_CellularColumnToken, pStr);
{
nsString nameStr(pStr);
AddCellularNumber(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeAddress(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeAddressColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeAddress(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeAddress2(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeAddress2ColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeAddress2(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeCity(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeCityColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeCity(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeState(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeStateColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeState(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeZipCode(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeZipCodeColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeZipCode(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetHomeCountry(&pStr);
if (pStr)
AddStringColumn(cardRow, m_HomeCountryColumnToken, pStr);
{
nsString nameStr(pStr);
AddHomeCountry(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkAddress(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkAddressColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkAddress(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkAddress2(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkAddress2ColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkAddress2(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkCity(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkCityColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkCity(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkState(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkStateColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkState(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkZipCode(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkZipCodeColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkZipCode(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWorkCountry(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WorkCountryColumnToken, pStr);
{
nsString nameStr(pStr);
AddWorkCountry(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetJobTitle(&pStr);
if (pStr)
AddStringColumn(cardRow, m_JobTitleColumnToken, pStr);
{
nsString nameStr(pStr);
AddJobTitle(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetDepartment(&pStr);
if (pStr)
AddStringColumn(cardRow, m_DepartmentColumnToken, pStr);
{
nsString nameStr(pStr);
AddDepartment(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCompany(&pStr);
if (pStr)
AddStringColumn(cardRow, m_CompanyColumnToken, pStr);
{
nsString nameStr(pStr);
AddCompany(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWebPage1(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WebPage1ColumnToken, pStr);
{
nsString nameStr(pStr);
AddWebPage1(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetWebPage2(&pStr);
if (pStr)
AddStringColumn(cardRow, m_WebPage2ColumnToken, pStr);
{
nsString nameStr(pStr);
AddWebPage2(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetBirthYear(&pStr);
if (pStr)
AddStringColumn(cardRow, m_BirthYearColumnToken, pStr);
{
nsString nameStr(pStr);
AddBirthYear(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetBirthMonth(&pStr);
if (pStr)
AddStringColumn(cardRow, m_BirthMonthColumnToken, pStr);
{
nsString nameStr(pStr);
AddBirthMonth(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetBirthDay(&pStr);
if (pStr)
AddStringColumn(cardRow, m_BirthDayColumnToken, pStr);
{
nsString nameStr(pStr);
AddBirthDay(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCustom1(&pStr);
if (pStr)
AddStringColumn(cardRow, m_Custom1ColumnToken, pStr);
{
nsString nameStr(pStr);
AddCustom1(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCustom2(&pStr);
if (pStr)
AddStringColumn(cardRow, m_Custom2ColumnToken, pStr);
{
nsString nameStr(pStr);
AddCustom2(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCustom3(&pStr);
if (pStr)
AddStringColumn(cardRow, m_Custom3ColumnToken, pStr);
{
nsString nameStr(pStr);
AddCustom3(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetCustom4(&pStr);
if (pStr)
AddStringColumn(cardRow, m_Custom4ColumnToken, pStr);
{
nsString nameStr(pStr);
AddCustom4(cardRow, &nameStr);
}
PR_FREEIF(pStr);
card->GetNotes(&pStr);
if (pStr)
AddStringColumn(cardRow, m_NotesColumnToken, pStr);
{
nsString nameStr(pStr);
AddNotes(cardRow, &nameStr);
}
PR_FREEIF(pStr);
}
return NS_OK;
@ -1115,7 +1223,7 @@ NS_IMETHODIMP nsAddrDatabase::CreateNewCardAndAddToDB(nsIAbCard *newCard, PRBool
if (!newCard || !m_mdbPabTable)
return NS_ERROR_NULL_POINTER;
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &cardRow);
err = GetNewRow(&cardRow);
if (NS_SUCCEEDED(err) && cardRow)
{
@ -1180,10 +1288,10 @@ nsresult nsAddrDatabase::DoStringAnonymousTransaction
nsIMdbRow *anonymousRow = nsnull;
if (code == AB_NotifyInserted)
{
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
err = GetNewRow(&anonymousRow);
if (NS_SUCCEEDED(err) && anonymousRow)
{
AddStringColumn(anonymousRow, anonymousColumnToken, pValueStr);
AddCharStringColumn(anonymousRow, anonymousColumnToken, pValueStr);
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
}
}
@ -1192,7 +1300,7 @@ nsresult nsAddrDatabase::DoStringAnonymousTransaction
struct mdbYarn yarn;
mdbOid rowOid;
GetStringYarn(pValueStr, &yarn);
GetCharStringYarn(pValueStr, &yarn);
err = GetStore()->FindRow(GetEnv(), m_CardRowScopeToken, anonymousColumnToken,
&yarn, &rowOid, &anonymousRow);
if (NS_SUCCEEDED(err) && anonymousRow)
@ -1203,7 +1311,7 @@ nsresult nsAddrDatabase::DoStringAnonymousTransaction
err = FindAttributeRow(m_mdbAnonymousTable, anonymousColumnToken, &anonymousRow);
if (NS_SUCCEEDED(err) && anonymousRow)
{
AddStringColumn(anonymousRow, anonymousColumnToken, pValueStr);
AddCharStringColumn(anonymousRow, anonymousColumnToken, pValueStr);
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
return NS_OK;
}
@ -1233,7 +1341,7 @@ nsresult nsAddrDatabase::DoIntAnonymousTransaction
nsIMdbRow *anonymousRow = nsnull;
if (code == AB_NotifyInserted)
{
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
err = GetNewRow(&anonymousRow);
if (NS_SUCCEEDED(err) && anonymousRow)
{
AddIntColumn(anonymousRow, anonymousColumnToken, value);
@ -1293,7 +1401,7 @@ nsresult nsAddrDatabase::DoBoolAnonymousTransaction
nsIMdbRow *anonymousRow = nsnull;
if (code == AB_NotifyInserted)
{
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
err = GetNewRow(&anonymousRow);
if (NS_SUCCEEDED(err) && anonymousRow)
{
AddIntColumn(anonymousRow, anonymousColumnToken, nBoolValue);
@ -1469,7 +1577,24 @@ NS_IMETHODIMP nsAddrDatabase::ContainsCard(nsIAbCard *card, PRBool *hasCard)
return err;
}
void nsAddrDatabase::GetStringYarn(char* str, struct mdbYarn* strYarn)
NS_IMETHODIMP nsAddrDatabase::GetNewRow(nsIMdbRow * *newRow)
{
nsresult err = NS_OK;
nsIMdbRow *row = nsnull;
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &row);
*newRow = row;
return err;
}
NS_IMETHODIMP nsAddrDatabase::AddCardRowToDB(nsIMdbRow *newRow)
{
if (m_mdbPabTable)
return m_mdbPabTable->AddRow(GetEnv(), newRow);
else
return NS_ERROR_FAILURE;
}
void nsAddrDatabase::GetCharStringYarn(char* str, struct mdbYarn* strYarn)
{
strYarn->mYarn_Grow = NULL;
strYarn->mYarn_Buf = str;
@ -1478,6 +1603,14 @@ void nsAddrDatabase::GetStringYarn(char* str, struct mdbYarn* strYarn)
strYarn->mYarn_Form = 0;
}
void nsAddrDatabase::GetStringYarn(nsString* str, struct mdbYarn* strYarn)
{
strYarn->mYarn_Buf = str->ToNewCString();
strYarn->mYarn_Size = PL_strlen((const char *) strYarn->mYarn_Buf) + 1;
strYarn->mYarn_Fill = strYarn->mYarn_Size - 1;
strYarn->mYarn_Form = 0;
}
void nsAddrDatabase::GetIntYarn(PRUint32 nValue, struct mdbYarn* intYarn)
{
intYarn->mYarn_Size = sizeof(intYarn->mYarn_Buf);
@ -1489,7 +1622,17 @@ void nsAddrDatabase::GetIntYarn(PRUint32 nValue, struct mdbYarn* intYarn)
intYarn->mYarn_Fill = PL_strlen((const char *) intYarn->mYarn_Buf);
}
mdb_err nsAddrDatabase::AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str)
mdb_err nsAddrDatabase::AddCharStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str)
{
struct mdbYarn yarn;
GetCharStringYarn(str, &yarn);
mdb_err err = cardRow->AddColumn(GetEnv(), inColumn, &yarn);
return err;
}
mdb_err nsAddrDatabase::AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, nsString* str)
{
struct mdbYarn yarn;
@ -1726,8 +1869,8 @@ NS_IMETHODIMP nsAddrDatabase::GetAnonymousStringAttribute(const char *attrname,
if (NS_SUCCEEDED(err) && cardRow)
{
GetStringColumn(cardRow, anonymousColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, anonymousColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
*value = PL_strdup(tempCString);
@ -1816,288 +1959,288 @@ nsresult nsAddrDatabase::GetCardFromDB(nsIAbCard *newCard, nsIMdbRow* cardRow)
nsAutoString tempString;
char *tempCString = nsnull;
GetStringColumn(cardRow, m_FirstNameColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_FirstNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetFirstName(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_LastNameColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_LastNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetLastName(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_DisplayNameColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_DisplayNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetDisplayName(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_NickNameColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_NickNameColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetNickName(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_PriEmailColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_PriEmailColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetPrimaryEmail(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_2ndEmailColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_2ndEmailColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetSecondEmail(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkPhoneColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkPhoneColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkPhone(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomePhoneColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomePhoneColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomePhone(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_FaxColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_FaxColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetFaxNumber(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_PagerColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_PagerColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetPagerNumber(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_CellularColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_CellularColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCellularNumber(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeAddressColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeAddressColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeAddress(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeAddress2ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeAddress2ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeAddress2(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeCityColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeCityColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeCity(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeStateColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeStateColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeState(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeZipCodeColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeZipCodeColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeZipCode(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_HomeCountryColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_HomeCountryColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetHomeCountry(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkAddressColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkAddressColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkAddress(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkAddress2ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkAddress2ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkAddress2(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkCityColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkCityColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkCity(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkStateColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkStateColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkState(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkZipCodeColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkZipCodeColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkZipCode(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WorkCountryColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WorkCountryColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWorkCountry(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_JobTitleColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_JobTitleColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetJobTitle(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_DepartmentColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_DepartmentColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetDepartment(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_CompanyColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_CompanyColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCompany(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WebPage1ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WebPage1ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWebPage1(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_WebPage2ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_WebPage2ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetWebPage2(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_BirthYearColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_BirthYearColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetBirthYear(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_BirthMonthColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_BirthMonthColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetBirthMonth(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_BirthDayColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_BirthDayColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetBirthDay(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_Custom1ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_Custom1ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCustom1(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_Custom2ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_Custom2ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCustom2(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_Custom3ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_Custom3ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCustom3(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_Custom4ColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_Custom4ColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetCustom4(tempCString);
delete [] tempCString;
}
GetStringColumn(cardRow, m_NotesColumnToken, tempString);
if (tempString.Length())
err = GetStringColumn(cardRow, m_NotesColumnToken, tempString);
if (NS_SUCCEEDED(err) && tempString.Length())
{
tempCString = tempString.ToNewCString();
newCard->SetNotes(tempCString);

Просмотреть файл

@ -103,6 +103,117 @@ public:
NS_IMETHOD RemoveAnonymousAttributesFromCard(nsIAbCard *card);
NS_IMETHOD EditAnonymousAttributesFromCard(nsIAbCard *card);
NS_IMETHOD GetNewRow(nsIMdbRow * *newRow);
NS_IMETHOD AddCardRowToDB(nsIMdbRow *newRow);
NS_IMETHOD AddFirstName(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_FirstNameColumnToken, value); }
NS_IMETHOD AddLastName(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_LastNameColumnToken, value); }
NS_IMETHOD AddDisplayName(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_DisplayNameColumnToken, value); }
NS_IMETHOD AddNickName(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_NickNameColumnToken, value); }
NS_IMETHOD AddPrimaryEmail(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_PriEmailColumnToken, value); }
NS_IMETHOD Add2ndEmail(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_2ndEmailColumnToken, value); }
NS_IMETHOD AddWorkPhone(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkPhoneColumnToken, value); }
NS_IMETHOD AddHomePhone(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomePhoneColumnToken, value); }
NS_IMETHOD AddFaxNumber(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_FaxColumnToken, value); }
NS_IMETHOD AddPagerNumber(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_PagerColumnToken, value); }
NS_IMETHOD AddCellularNumber(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_CellularColumnToken, value); }
NS_IMETHOD AddHomeAddress(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeAddressColumnToken, value); }
NS_IMETHOD AddHomeAddress2(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeAddress2ColumnToken, value); }
NS_IMETHOD AddHomeCity(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeCityColumnToken, value); }
NS_IMETHOD AddHomeState(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeStateColumnToken, value); }
NS_IMETHOD AddHomeZipCode(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeZipCodeColumnToken, value); }
NS_IMETHOD AddHomeCountry(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_HomeCountryColumnToken, value); }
NS_IMETHOD AddWorkAddress(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkAddressColumnToken, value); }
NS_IMETHOD AddWorkAddress2(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkAddress2ColumnToken, value); }
NS_IMETHOD AddWorkCity(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkCityColumnToken, value); }
NS_IMETHOD AddWorkState(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkStateColumnToken, value); }
NS_IMETHOD AddWorkZipCode(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkZipCodeColumnToken, value); }
NS_IMETHOD AddWorkCountry(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WorkCountryColumnToken, value); }
NS_IMETHOD AddJobTitle(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_JobTitleColumnToken, value); }
NS_IMETHOD AddDepartment(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_DepartmentColumnToken, value); }
NS_IMETHOD AddCompany(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_CompanyColumnToken, value); }
NS_IMETHOD AddWebPage1(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WebPage1ColumnToken, value); }
NS_IMETHOD AddWebPage2(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_WebPage2ColumnToken, value); }
NS_IMETHOD AddBirthYear(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_BirthYearColumnToken, value); }
NS_IMETHOD AddBirthMonth(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_BirthMonthColumnToken, value); }
NS_IMETHOD AddBirthDay(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_BirthDayColumnToken, value); }
NS_IMETHOD AddCustom1(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_Custom1ColumnToken, value); }
NS_IMETHOD AddCustom2(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_Custom2ColumnToken, value); }
NS_IMETHOD AddCustom3(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_Custom3ColumnToken, value); }
NS_IMETHOD AddCustom4(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_Custom4ColumnToken, value); }
NS_IMETHOD AddNotes(nsIMdbRow * row, nsString * value)
{ return AddStringColumn(row, m_NotesColumnToken, value); }
//////////////////////////////////////////////////////////////////////////////
// nsAddrDatabase methods:
@ -140,9 +251,11 @@ protected:
void YarnToUInt32(struct mdbYarn *yarn, PRUint32 *pResult);
void GetStringYarn(char* str, struct mdbYarn* strYarn);
void GetCharStringYarn(char* str, struct mdbYarn* strYarn);
void GetStringYarn(nsString* str, struct mdbYarn* strYarn);
void GetIntYarn(PRUint32 nValue, struct mdbYarn* intYarn);
mdb_err AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str);
mdb_err AddCharStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str);
mdb_err AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, nsString* str);
mdb_err AddIntColumn(nsIMdbRow* cardRow, mdb_column inColumn, PRUint32 nValue);
nsresult GetStringColumn(nsIMdbRow *cardRow, mdb_token outToken, nsString& str);
nsresult GetIntColumn(nsIMdbRow *cardRow, mdb_token outToken,

Просмотреть файл

@ -22,6 +22,7 @@
#include "nsDirPrefs.h"
#include "nsIAddrBookSession.h"
#include "nsAbRDFResource.h"
#include "nsIAddrDatabase.h"
#include "prmem.h"
#include "prprf.h"
@ -40,11 +41,14 @@
#include "nsIDOMWindow.h"
#include "nsIContentViewer.h"
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
static NS_DEFINE_CID(kAddressBookDBCID, NS_ADDRESSBOOKDB_CID);
static NS_DEFINE_CID(kFileLocatorCID, NS_FILELOCATOR_CID);
static NS_DEFINE_CID(kAddrBookSessionCID, NS_ADDRBOOKSESSION_CID);
static NS_DEFINE_CID(kAbDirectoryCID, NS_ABDIRECTORYRESOURCE_CID);
static NS_DEFINE_CID(kAbCardPropertyCID, NS_ABCARDPROPERTY_CID);
const char *kDirectoryDataSourceRoot = "abdirectory://";
@ -164,6 +168,7 @@ NS_IMETHODIMP nsAddressBook::NewAddressBook
rv = NS_NewISupportsArray(getter_AddRefs(dirArray));
if(NS_FAILED(rv))
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsIRDFResource> parentResource;
char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot);
rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource));
@ -172,7 +177,6 @@ NS_IMETHODIMP nsAddressBook::NewAddressBook
return NS_ERROR_NULL_POINTER;
if (parentUri)
PR_smprintf_free(parentUri);
dirArray->AppendElement(parentResource);
rv = NS_NewISupportsArray(getter_AddRefs(nameArray));
@ -204,6 +208,7 @@ NS_IMETHODIMP nsAddressBook::DeleteAddressBooks
rv = NS_NewISupportsArray(getter_AddRefs(dirArray));
if(NS_FAILED(rv))
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsIRDFResource> parentResource;
char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot);
rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource));
@ -247,7 +252,7 @@ nsresult nsAddressBook::DoCommand(nsIRDFCompositeDataSource* db, char *command,
}
nsresult nsAddressBook::PrintCard()
NS_IMETHODIMP nsAddressBook::PrintCard()
{
#ifdef DEBUG_seth
printf("nsAddressBook::PrintCard()\n");
@ -277,7 +282,7 @@ nsresult nsAddressBook::PrintCard()
return rv;
}
nsresult nsAddressBook::PrintAddressbook()
NS_IMETHODIMP nsAddressBook::PrintAddressbook()
{
#ifdef DEBUG_seth
printf("nsAddressBook::PrintAddressbook()\n");
@ -285,7 +290,7 @@ nsresult nsAddressBook::PrintAddressbook()
return NS_ERROR_NOT_IMPLEMENTED;
}
nsresult nsAddressBook::SetWebShellWindow(nsIDOMWindow *aWin)
NS_IMETHODIMP nsAddressBook::SetWebShellWindow(nsIDOMWindow *aWin)
{
NS_PRECONDITION(aWin != nsnull, "null ptr");
if (!aWin)
@ -305,3 +310,756 @@ nsresult nsAddressBook::SetWebShellWindow(nsIDOMWindow *aWin)
return NS_OK;
}
typedef enum
{
TABFile,
LDIFFile,
UnknownFile
} ImportFileType;
class AddressBookParser
{
protected:
nsAutoString mLine;
nsIFileSpecWithUI* mFileSpec;
char* mDbUri;
nsCOMPtr<nsIAddrDatabase> mDatabase;
PRInt32 mFileType;
nsresult ParseTabFile(PRFileDesc* file);
nsresult ParseLdifFile(PRFileDesc* file);
void AddTabRowToDatabase();
void AddLdifColToDatabase(nsIMdbRow* newRow);
public:
AddressBookParser(nsIFileSpecWithUI* fileSpec);
~AddressBookParser();
nsresult ParseFile(PRFileDesc* file);
};
AddressBookParser::AddressBookParser(nsIFileSpecWithUI* fileSpec)
:mLine(eOneByte)
{
mFileSpec = fileSpec;
mDbUri = nsnull;
mFileType = UnknownFile;
}
AddressBookParser::~AddressBookParser(void)
{
if(mDbUri)
PR_smprintf_free(mDbUri);
if (mDatabase)
{
mDatabase->Close(PR_TRUE);
mDatabase = null_nsCOMPtr();
}
}
const char *kTabExtension = ".txt";
const char *kLdifExtension = ".ldi";
nsresult AddressBookParser::ParseFile(PRFileDesc* file)
{
if (! file)
return NS_ERROR_NULL_POINTER;
char *leafName = nsnull;
if (mFileSpec)
{
mFileSpec->GetLeafName(&leafName);
nsString fileString(leafName);
if (-1 != fileString.Find(kTabExtension))
mFileType = TABFile;
else if (-1 != fileString.Find(kLdifExtension))
mFileType = LDIFFile;
else
return NS_ERROR_FAILURE;
PRInt32 i = 0;
while (leafName[i] != '\0')
{
if (leafName[i] == '.')
{
leafName[i] = '\0';
break;
}
else
i++;
}
if (leafName)
mDbUri = PR_smprintf("%s%s.mab", kDirectoryDataSourceRoot, leafName);
}
nsresult rv = NS_OK;
nsFileSpec* dbPath = nsnull;
char* fileName = PR_smprintf("%s.mab", leafName);
NS_WITH_SERVICE(nsIAddrBookSession, abSession, kAddrBookSessionCID, &rv);
if(NS_SUCCEEDED(rv))
abSession->GetUserProfileDirectory(&dbPath);
if (dbPath)
{
(*dbPath) += fileName;
NS_WITH_SERVICE(nsIAddrDatabase, addrDBFactory, kAddressBookDBCID, &rv);
if (NS_SUCCEEDED(rv) && addrDBFactory)
rv = addrDBFactory->Open(dbPath, PR_TRUE, getter_AddRefs(mDatabase), PR_TRUE);
}
if (NS_FAILED(rv))
return NS_ERROR_FAILURE;
// Initialize the parser for a run...
mLine.Truncate();
if (mFileType == TABFile)
ParseTabFile(file);
if (mFileType == LDIFFile)
ParseLdifFile(file);
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
if(NS_FAILED(rv))
return rv;
nsCOMPtr<nsIRDFResource> parentResource;
char *parentUri = PR_smprintf("%s", kDirectoryDataSourceRoot);
rv = rdfService->GetResource(parentUri, getter_AddRefs(parentResource));
nsCOMPtr<nsIAbDirectory> parentDir = do_QueryInterface(parentResource);
if (!parentDir)
return NS_ERROR_NULL_POINTER;
if (parentUri)
PR_smprintf_free(parentUri);
parentDir->CreateNewDirectory(leafName, fileName);
if (leafName)
nsCRT::free(leafName);
if (fileName)
PR_smprintf_free(fileName);
return NS_OK;
}
nsresult AddressBookParser::ParseTabFile(PRFileDesc* file)
{
if (! file)
return NS_ERROR_NULL_POINTER;
char buf[1024];
PRInt32 len;
while ((len = PR_Read(file, buf, sizeof(buf))) > 0)
{
for (PRInt32 i = 0; i < len; i++)
{
char c = buf[i];
if (c != '\r' && c != '\n')
{
mLine.Append(c);
}
else
{
if (mLine.Length())
{
if (mDatabase)
{
AddTabRowToDatabase();
}
}
}
}
}
return NS_OK;
}
#define POS_DISPLAY_NAME 1
#define POS_LAST_NAME 2
#define POS_FIRST_NAME 3
#define POS_NOTE 4
#define POS_CITY 5
#define POS_STATE 6
#define POS_EMAIL 7
#define POS_TITLE 8
#define POS_UNKNOWN 9
#define POS_ADDRESS 10
#define POS_ZIP 11
#define POS_COUNTRY 12
#define POS_WORK_NUMBER 13
#define POS_FAX_NUMBER 14
#define POS_HOME_NUMBER 15
#define POS_ORGANIZATION 16
#define POS_NICK_NAME 17
#define POS_CELLULAR_NUMBER 18
#define POS_PAGE_NUMBER 19
void AddressBookParser::AddTabRowToDatabase()
{
nsAutoString column(eOneByte);
nsIMdbRow* newRow;
mDatabase->GetNewRow(&newRow);
if (!newRow)
return;
// const PRUnichar *str = nsnull;
// const char *str = nsnull;
int nCol = 0;
int nSize = mLine.Length();
for (int i = 0; i < nSize; i++)
{
// PRUnichar c = mLine[i];
char c = mLine[i];
while (c != '\t')
{
column.Append(c);
c = mLine[++i];
}
nCol += 1;
switch (nCol)
{
case POS_FIRST_NAME:
if (column.Length() > 0)
mDatabase->AddFirstName(newRow, &column);
break;
case POS_LAST_NAME:
if (column.Length() > 0)
mDatabase->AddLastName(newRow, &column);
break;
case POS_DISPLAY_NAME:
if (column.Length() > 0)
mDatabase ->AddDisplayName(newRow, &column);
break;
case POS_NICK_NAME:
if (column.Length() > 0)
mDatabase->AddNickName(newRow, &column);
break;
case POS_EMAIL:
if (column.Length() > 0)
mDatabase->AddPrimaryEmail(newRow, &column);
break;
case POS_WORK_NUMBER:
if (column.Length() > 0)
mDatabase->AddWorkPhone(newRow, &column);
break;
case POS_HOME_NUMBER:
if (column.Length() > 0)
mDatabase->AddHomePhone(newRow, &column);
break;
case POS_PAGE_NUMBER:
if (column.Length() > 0)
mDatabase->AddPagerNumber(newRow, &column);
break;
case POS_CELLULAR_NUMBER:
if (column.Length() > 0)
mDatabase->AddCellularNumber(newRow, &column);
break;
case POS_FAX_NUMBER:
if (column.Length() > 0)
mDatabase->AddFaxNumber(newRow, &column);
break;
case POS_ADDRESS:
if (column.Length() > 0)
mDatabase->AddWorkAddress(newRow, &column);
break;
case POS_CITY:
if (column.Length() > 0)
mDatabase->AddWorkCity(newRow, &column);
break;
case POS_STATE:
if (column.Length() > 0)
mDatabase->AddWorkState(newRow, &column);
break;
case POS_ZIP:
if (column.Length() > 0)
mDatabase->AddWorkZipCode(newRow, &column);
break;
case POS_COUNTRY:
if (column.Length() > 0)
mDatabase->AddWorkCountry(newRow, &column);
break;
case POS_TITLE:
if (column.Length() > 0)
mDatabase->AddJobTitle(newRow, &column);
break;
case POS_ORGANIZATION:
if (column.Length() > 0)
mDatabase->AddDepartment(newRow, &column);
break;
case POS_NOTE:
if (column.Length() > 0)
mDatabase->AddNotes(newRow, &column);
break;
case POS_UNKNOWN:
default:
break;
}
if (column.Length() > 0)
column.Truncate();
}
if (mLine.Length() > 0)
mLine.Truncate();
if (nSize)
mDatabase->AddCardRowToDB(newRow);
}
nsresult AddressBookParser::ParseLdifFile(PRFileDesc* file)
{
if (! file)
return NS_ERROR_NULL_POINTER;
char buf[1024];
PRInt32 len = 0;
PRInt32 LFCount = 0;
PRInt32 CRCount = 0;
nsIMdbRow* newRow = nsnull;
if (mDatabase)
{
mDatabase->GetNewRow(&newRow);
if (!newRow)
return NS_ERROR_FAILURE;
}
else
return NS_ERROR_FAILURE;
while ((len = PR_Read(file, buf, sizeof(buf))) > 0)
{
for (PRInt32 i = 0; i < len; i++)
{
char c = buf[i];
if (c == 0xA)
{
LFCount++;
}
else if (c == 0xD)
{
CRCount++;
}
else if ( c != 0xA && c != 0xD)
{
if (LFCount ==0 && CRCount ==0)
mLine.Append(c);
else if (LFCount == 1 || CRCount == 1)
{
AddLdifColToDatabase(newRow);
if (c != ' ')
mLine.Append(c);
LFCount = 0;
CRCount = 0;
}
else if (c != ' ' && (( LFCount > 1) || ( CRCount > 2 && LFCount ) ||
( !LFCount && CRCount > 1 )))
{
mDatabase->AddCardRowToDB(newRow);
if (c != ' ')
mLine.Append(c);
LFCount = 0;
CRCount = 0;
}
}
}
}
return NS_OK;
}
void AddressBookParser::AddLdifColToDatabase(nsIMdbRow* newRow)
{
nsAutoString colType(eOneByte);
nsAutoString column(eOneByte);
// const PRUnichar *str = nsnull;
// const char *str = nsnull;
PRInt32 nSize = mLine.Length();
PRBool bGetType = PR_TRUE;
for (int i = 0; i < nSize; i++)
{
// PRUnichar c = mLine[i];
char c = mLine[i];
if (!bGetType)
{
column.Append(c);
continue;
}
while (bGetType && c != ':' && i < nSize)
{
colType.Append(c);
c = mLine[++i];
}
if (c != ':')
{
bGetType = PR_FALSE;
c = mLine[++i];
if (c == ':')
i++;
}
}
mdb_u1 firstByte = (mdb_u1)colType[0];
switch ( firstByte )
{
case 'b':
if ( -1 != colType.Find("birthyear") )
mDatabase->AddBirthYear(newRow, &column);
break; // 'b'
case 'c':
if ( -1 != colType.Find("cn") || -1 != colType.Find("commonname") )
mDatabase->AddDisplayName(newRow, &column);
else if ( -1 != colType.Find("countryName") )
mDatabase->AddWorkCountry(newRow, &column);
// else if ( -1 != colType.Find("charset") )
// ioRow->AddColumn(ev, this->ColCharset(), yarn);
else if ( -1 != colType.Find("cellphone") )
mDatabase->AddCellularNumber(newRow, &column);
// else if ( -1 != colType.Find("calendar") )
// ioRow->AddColumn(ev, this->ColCalendar(), yarn);
// else if ( -1 != colType.Find("car") )
// ioRow->AddColumn(ev, this->ColCar(), yarn);
else if ( -1 != colType.Find("carphone") )
mDatabase->AddCellularNumber(newRow, &column);
// ioRow->AddColumn(ev, this->ColCarPhone(), yarn);
// else if ( -1 != colType.Find("carlicense") )
// ioRow->AddColumn(ev, this->ColCarLicense(), yarn);
else if ( -1 != colType.Find("custom1") )
mDatabase->AddCustom1(newRow, &column);
else if ( -1 != colType.Find("custom2") )
mDatabase->AddCustom2(newRow, &column);
else if ( -1 != colType.Find("custom3") )
mDatabase->AddCustom3(newRow, &column);
else if ( -1 != colType.Find("custom4") )
mDatabase->AddCustom4(newRow, &column);
else if ( -1 != colType.Find("company") )
mDatabase->AddCompany(newRow, &column);
break; // 'c'
case 'd':
if ( -1 != colType.Find("description") )
mDatabase->AddNotes(newRow, &column);
// else if ( -1 != colType.Find("dn") ) // distinuished name
// ioRow->AddColumn(ev, this->ColDistName(), yarn);
else if ( -1 != colType.Find("department") )
mDatabase->AddDepartment(newRow, &column);
// else if ( -1 != colType.Find("departmentnumber") )
// ioRow->AddColumn(ev, this->ColDepartmentNumber(), yarn);
// else if ( -1 != colType.Find("date") )
// ioRow->AddColumn(ev, this->ColDate(), yarn);
break; // 'd'
case 'e':
// if ( -1 != colType.Find("employeeid") )
// ioRow->AddColumn(ev, this->ColEmployeeId(), yarn);
// else if ( -1 != colType.Find("employeetype") )
// ioRow->AddColumn(ev, this->ColEmployeeType(), yarn);
break; // 'e'
case 'f':
if ( -1 != colType.Find("fax") ||
-1 != colType.Find("facsimiletelephonenumber") )
mDatabase->AddFaxNumber(newRow, &column);
break; // 'f'
case 'g':
if ( -1 != colType.Find("givenname") )
mDatabase->AddFirstName(newRow, &column);
// else if ( -1 != colType.Find("gif") )
// ioRow->AddColumn(ev, this->ColGif(), yarn);
// else if ( -1 != colType.Find("geo") )
// ioRow->AddColumn(ev, this->ColGeo(), yarn);
break; // 'g'
case 'h':
if ( -1 != colType.Find("homephone") )
mDatabase->AddHomePhone(newRow, &column);
else if ( -1 != colType.Find("homeurl") )
mDatabase->AddWebPage1(newRow, &column);
break; // 'h'
case 'i':
// if ( -1 != colType.Find("imapurl") )
// ioRow->AddColumn(ev, this->ColImapUrl(), yarn);
break; // 'i'
case 'j':
// if ( -1 != colType.Find("jpeg") || -1 != colType.Find("jpegfile") )
// ioRow->AddColumn(ev, this->ColJpegFile(), yarn);
break; // 'j'
case 'k':
// if ( -1 != colType.Find("key") )
// ioRow->AddColumn(ev, this->ColKey(), yarn);
// else if ( -1 != colType.Find("keywords") )
// ioRow->AddColumn(ev, this->ColKeywords(), yarn);
break; // 'k'
case 'l':
if ( -1 != colType.Find("l") || -1 != colType.Find("locality") )
mDatabase->AddWorkCity(newRow, &column);
// else if ( -1 != colType.Find("language") )
// ioRow->AddColumn(ev, this->ColLanguage(), yarn);
// else if ( -1 != colType.Find("logo") )
// ioRow->AddColumn(ev, this->ColLogo(), yarn);
// else if ( -1 != colType.Find("location") )
// ioRow->AddColumn(ev, this->ColLocation(), yarn);
break; // 'l'
case 'm':
if ( -1 != colType.Find("mail") )
mDatabase->AddPrimaryEmail(newRow, &column);
// else if ( -1 != colType.Find("member") && list )
// {
// this->add-list-member(list, yarn); // see also "uniquemember"
// }
// else if ( -1 != colType.Find("manager") )
// ioRow->AddColumn(ev, this->ColManager(), yarn);
// else if ( -1 != colType.Find("modem") )
// ioRow->AddColumn(ev, this->ColModem(), yarn);
// else if ( -1 != colType.Find("msgphone") )
// ioRow->AddColumn(ev, this->ColMessagePhone(), yarn);
break; // 'm'
case 'n':
// if ( -1 != colType.Find("note") )
// ioRow->AddColumn(ev, this->ColNote(), yarn);
if ( -1 != colType.Find("notes") )
mDatabase->AddNotes(newRow, &column);
// else if ( -1 != colType.Find("n") )
// ioRow->AddColumn(ev, this->ColN(), yarn);
// else if ( -1 != colType.Find("notifyurl") )
// ioRow->AddColumn(ev, this->ColNotifyUrl(), yarn);
break; // 'n'
case 'o':
// if ( -1 != colType.Find("o") ) // organization
// ioRow->AddColumn(ev, this->ColCompany(), yarn);
// else if ( -1 != colType.Find("objectclass") )
// {
// if ( strcasecomp(inVal, "person") ) // objectclass == person?
// {
// this->put-bool-row-col(row, this->ColPerson(), mdbBool_kTrue);
// }
// else if ( strcasecomp(inVal, "groupofuniquenames") ||
// strcasecomp(inVal, "groupOfNames") ) // objectclass == list?
// {
// this->put-bool-row-col(row, this->ColPerson(), mdbBool_kFalse);
// isList = mdbBool_kTrue;
// if ( !list )
// list = this->make-new-mdb-list-table-for-row(ioRow);
// }
// }
// else if ( -1 != colType.Find("ou") || -1 != colType.Find("orgunit") )
// ioRow->AddColumn(ev, this->ColDepartment(), yarn);
break; // 'o'
case 'p':
if ( -1 != colType.Find("postalcode") )
mDatabase->AddWorkZipCode(newRow, &column);
else if ( -1 != colType.Find("postOfficeBox") )
mDatabase->AddWorkAddress(newRow, &column);
else if ( -1 != colType.Find("pager") ||
-1 != colType.Find("pagerphone") )
mDatabase->AddPagerNumber(newRow, &column);
// else if ( -1 != colType.Find("photo") )
// ioRow->AddColumn(ev, this->ColPhoto(), yarn);
// else if ( -1 != colType.Find("parentphone") )
// ioRow->AddColumn(ev, this->ColParentPhone(), yarn);
// else if ( -1 != colType.Find("pageremail") )
// ioRow->AddColumn(ev, this->ColPagerEmail(), yarn);
// else if ( -1 != colType.Find("prefurl") )
// ioRow->AddColumn(ev, this->ColPrefUrl(), yarn);
// else if ( -1 != colType.Find("priority") )
// ioRow->AddColumn(ev, this->ColPriority(), yarn);
break; // 'p'
case 'r':
if ( -1 != colType.Find("region") )
mDatabase->AddWorkState(newRow, &column);
// else if ( -1 != colType.Find("rfc822mailbox") )
// ioRow->AddColumn(ev, this->ColPrimaryEmail(), yarn);
// else if ( -1 != colType.Find("rev") )
// ioRow->AddColumn(ev, this->ColRev(), yarn);
// else if ( -1 != colType.Find("role") )
// ioRow->AddColumn(ev, this->ColRole(), yarn);
break; // 'r'
case 's':
if ( -1 != colType.Find("sn") || -1 != colType.Find("surname") )
mDatabase->AddLastName(newRow, &column);
else if ( -1 != colType.Find("st") )
mDatabase->AddWorkState(newRow, &column);
else if ( -1 != colType.Find("streetaddress") )
mDatabase->AddWorkAddress2(newRow, &column);
// else if ( -1 != colType.Find("secretary") )
// ioRow->AddColumn(ev, this->ColSecretary(), yarn);
// else if ( -1 != colType.Find("sound") )
// ioRow->AddColumn(ev, this->ColSound(), yarn);
// else if ( -1 != colType.Find("sortstring") )
// ioRow->AddColumn(ev, this->ColSortString(), yarn);
break; // 's'
case 't':
if ( -1 != colType.Find("title") )
mDatabase->AddJobTitle(newRow, &column);
else if ( -1 != colType.Find("telephonenumber") )
mDatabase->AddWorkPhone(newRow, &column);
// else if ( -1 != colType.Find("tiff") )
// ioRow->AddColumn(ev, this->ColTiff(), yarn);
// else if ( -1 != colType.Find("tz") )
// ioRow->AddColumn(ev, this->ColTz(), yarn);
break; // 't'
case 'u':
// if ( -1 != colType.Find("uniquemember") && list )
// {
// this->add-list-member(list, yarn); // see also "member"
// }
// else if ( -1 != colType.Find("uid") )
// ioRow->AddColumn(ev, this->ColUid(), yarn);
break; // 'u'
case 'v':
// if ( -1 != colType.Find("version") )
// ioRow->AddColumn(ev, this->ColVersion(), yarn);
// else if ( -1 != colType.Find("voice") )
// ioRow->AddColumn(ev, this->ColVoice(), yarn);
break; // 'v'
case 'w':
if ( -1 != colType.Find("workurl") )
mDatabase->AddWebPage2(newRow, &column);
break; // 'w'
case 'x':
if ( -1 != colType.Find("xmozillanickname") )
mDatabase->AddNickName(newRow, &column);
else if ( -1 != colType.Find("xmozillausehtmlmail") )
{
; //add use plain text
}
break; // 'x'
case 'z':
if ( -1 != colType.Find("zip") ) // alias for postalcode
mDatabase->AddWorkZipCode(newRow, &column);
break; // 'z'
default:
break; // default
}
if (mLine.Length() > 0)
mLine.Truncate();
}
NS_IMETHODIMP nsAddressBook::ImportAddressBook()
{
nsresult rv = NS_ERROR_FAILURE;
nsCOMPtr<nsIFileSpecWithUI> fileSpec(getter_AddRefs(NS_CreateFileSpecWithUI()));
if (!fileSpec)
return NS_ERROR_FAILURE;
rv = fileSpec->ChooseInputFile(
"Open File", nsIFileSpecWithUI::eAllFiles, nsnull, nsnull);
if (NS_FAILED(rv))
return rv;
char* filePath;
rv = fileSpec->GetNativePath(&filePath);
if (NS_FAILED(rv))
return rv;
PRFileDesc* abFile;
if ((abFile = PR_Open(filePath, PR_RDONLY, 0644))) {
AddressBookParser abParser(fileSpec);
rv = abParser.ParseFile(abFile);
PR_Close(abFile);
}
nsCRT::free(filePath);
return rv;
}

Просмотреть файл

@ -25,6 +25,8 @@
#include "nsIAddrDatabase.h"
#include "nsIWebShell.h"
#include "nsIScriptGlobalObject.h"
#include "nsIFileSpecWithUI.h"
#define NC_RDF_NEWABCARD "http://home.netscape.com/NC-rdf#NewCard"
#define NC_RDF_DELETE "http://home.netscape.com/NC-rdf#Delete"
@ -44,12 +46,14 @@ public:
NS_IMETHOD NewAddressBook(nsIRDFCompositeDataSource* db, nsIDOMXULElement *srcDirectory, const char *name);
NS_IMETHOD DeleteAddressBooks(nsIRDFCompositeDataSource* db, nsIDOMXULElement *srcDirectory, nsIDOMNodeList *nodeList);
NS_IMETHOD PrintCard();
NS_IMETHOD PrintAddressbook();
NS_IMETHOD PrintAddressbook();
NS_IMETHOD SetWebShellWindow(nsIDOMWindow *win);
NS_IMETHOD ImportAddressBook();
protected:
nsresult DoCommand(nsIRDFCompositeDataSource *db, char * command, nsISupportsArray *srcArray,
nsISupportsArray *arguments);
private:
nsIWebShell *mWebShell; // weak reference
};

Просмотреть файл

@ -403,20 +403,29 @@ nsresult DIR_ContainsServer(DIR_Server* pServer, PRBool *hasDir)
return NS_OK;
}
nsresult DIR_AddNewAddressBook(const char *name, DIR_Server** pServer)
nsresult DIR_AddNewAddressBook(const char *dirName, const char *fileName, DIR_Server** pServer)
{
DIR_Server * server = (DIR_Server *) PR_Malloc(sizeof(DIR_Server));
DIR_InitServerWithType (server, PABDirectory);
PRInt32 count = dir_ServerList->Count();
server->description = PL_strdup(name);
server->position = count + 1;
if (!dir_ServerList)
DIR_GetDirServers();
if (dir_ServerList)
{
PRInt32 count = dir_ServerList->Count();
server->description = PL_strdup(dirName);
server->position = count + 1;
DIR_SetFileName(&server->fileName, kMainPersonalAddressBook);
if (fileName)
server->fileName = PL_strdup(fileName);
else
DIR_SetFileName(&server->fileName, kMainPersonalAddressBook);
dir_ServerList->AppendElement(server);
DIR_SavePrefsForOneServer(server);
*pServer = server;
return NS_OK;
dir_ServerList->AppendElement(server);
DIR_SavePrefsForOneServer(server);
*pServer = server;
return NS_OK;
}
return NS_ERROR_FAILURE;
}
nsresult DIR_DecrementServerRefCount (DIR_Server *server)
@ -2401,7 +2410,8 @@ nsresult DIR_GetAttributeIDsForColumns(DIR_Server *server, DIR_AttributeId ** id
idName = AB_pstrtok_r(nil,", ",&marker);
if (idName)
{
if (DIR_AttributeNameToId(server, idName, &idArray[numAdded]) >= 0)
status = DIR_AttributeNameToId(server, idName, &idArray[numAdded]);
if (NS_SUCCEEDED(status))
numAdded++;
}
else

Просмотреть файл

@ -232,7 +232,7 @@ nsVoidArray* DIR_GetDirectories();
nsresult DIR_GetDirServers();
nsresult DIR_ShutDown(void); /* FEs should call this when the app is shutting down. It frees all DIR_Servers regardless of ref count values! */
nsresult DIR_AddNewAddressBook(const char *name, DIR_Server** pServer);
nsresult DIR_AddNewAddressBook(const char *dirName, const char *fileName, DIR_Server** pServer);
nsresult DIR_ContainsServer(DIR_Server* pServer, PRBool *hasDir);
nsresult DIR_DecrementServerRefCount (DIR_Server *);

Просмотреть файл

@ -603,25 +603,8 @@ nsresult nsAbDirectoryDataSource::DoNewDirectory(nsIAbDirectory *directory, nsIS
nsString tempStr = name;
nsAutoCString nameStr(tempStr);
rv = directory->CreateNewDirectory(nameStr);
rv = directory->CreateNewDirectory(nameStr, nsnull);
}
/*
nsresult rv = NS_OK;
nsCOMPtr<nsISupportsArray> dirArray;
NS_NewISupportsArray(getter_AddRefs(dirArray));
PRUint32 itemCount;
rv = arguments->Count(&itemCount);
for(PRUint32 item = 0; item < itemCount; item++)
{
nsCOMPtr<nsISupports> supports = getter_AddRefs(arguments->ElementAt(item));
nsCOMPtr<nsIAbDirectory> newDir(do_QueryInterface(supports));
if (newDir)
{
nsCOMPtr<nsISupports> dirSupports(do_QueryInterface(newDir));
OnItemAdded(directory, dirSupports);
}
}
*/
return rv;
}