зеркало из https://github.com/mozilla/gecko-dev.git
Import address book
This commit is contained in:
Родитель
945d691e5c
Коммит
01cfaff029
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче