зеркало из https://github.com/mozilla/pjs.git
Address book new feature attributes support and fix bug 10087
This commit is contained in:
Родитель
537d74d82c
Коммит
b0434592b9
|
@ -72,11 +72,19 @@ interface nsIAbCard : nsISupports {
|
|||
|
||||
void GetCardValue(in string attrname, out string value);
|
||||
void SetCardValue(in string attrname, in string value);
|
||||
void GetAnonymousAttrubutesList(out nsVoidArray attrlist);
|
||||
void GetAnonymousValuesList(out nsVoidArray valuelist);
|
||||
void SetAnonymousAttrubutesList(in nsVoidArray attrlist);
|
||||
void SetAnonymousValuesList(in nsVoidArray valuelist);
|
||||
void SetAnonymousAttribute(in string attrname, in string value);
|
||||
|
||||
void GetAnonymousStrAttrubutesList(out nsVoidArray attrlist);
|
||||
void GetAnonymousStrValuesList(out nsVoidArray valuelist);
|
||||
void GetAnonymousIntAttrubutesList(out nsVoidArray attrlist);
|
||||
void GetAnonymousIntValuesList(out nsVoidArray valuelist);
|
||||
void GetAnonymousBoolAttrubutesList(out nsVoidArray attrlist);
|
||||
void GetAnonymousBoolValuesList(out nsVoidArray valuelist);
|
||||
|
||||
void SetAnonymousStringAttribute(in string attrname, in string value);
|
||||
void SetAnonymousIntAttribute(in string attrname, in unsigned long value);
|
||||
void SetAnonymousBoolAttribute(in string attrname, in boolean value);
|
||||
void AddAnonymousAttributesToDB();
|
||||
|
||||
void GetCardURI(out string uri);
|
||||
void AddCardToDatabase(in string uri);
|
||||
void EditCardToDatabase(in string uri);
|
||||
|
|
|
@ -51,7 +51,15 @@ interface nsIAddrDatabase : nsIAddrDBAnnouncer {
|
|||
void DeleteCard(in nsIAbCard card, in boolean beNotify);
|
||||
void EditCard(in nsIAbCard card, in boolean beNotify);
|
||||
void ContainsCard(in nsIAbCard card, out boolean hasCard);
|
||||
void SetAnonymousAttribute(in string attrname, in string value);
|
||||
void GetAnonymousAttribute(in string attrname, out string value);
|
||||
|
||||
void SetAnonymousStringAttribute(in string attrname, in string value);
|
||||
void GetAnonymousStringAttribute(in string attrname, out string value);
|
||||
void SetAnonymousIntAttribute(in string attrname, in unsigned long value);
|
||||
void GetAnonymousIntAttribute(in string attrname, out unsigned long value);
|
||||
void SetAnonymousBoolAttribute(in string attrname, in boolean value);
|
||||
void GetAnonymousBoolAttribute(in string attrname, out boolean value);
|
||||
void AddAnonymousAttributesToDB();
|
||||
void RemoveAnonymousAttributesFromDB();
|
||||
void AddAnonymousAttributesFromCard(in nsIAbCard card);
|
||||
void RemoveAnonymousAttributesFromCard(in nsIAbCard card);
|
||||
};
|
||||
|
|
|
@ -129,9 +129,12 @@ nsAbCardProperty::nsAbCardProperty(void)
|
|||
m_dbTableID = 0;
|
||||
m_dbRowID = 0;
|
||||
|
||||
m_pAnonymousAttributes = nsnull;
|
||||
m_pAnonymousValues = nsnull;
|
||||
|
||||
m_pAnonymousStrAttributes = nsnull;
|
||||
m_pAnonymousStrValues = nsnull;
|
||||
m_pAnonymousIntAttributes = nsnull;
|
||||
m_pAnonymousIntValues = nsnull;
|
||||
m_pAnonymousBoolAttributes = nsnull;
|
||||
m_pAnonymousBoolValues = nsnull;
|
||||
}
|
||||
|
||||
nsAbCardProperty::~nsAbCardProperty(void)
|
||||
|
@ -174,42 +177,33 @@ nsAbCardProperty::~nsAbCardProperty(void)
|
|||
PR_FREEIF(m_pNote);
|
||||
PR_FREEIF(m_pLastModDate);
|
||||
|
||||
RemoveAnonymousAttrubutesList();
|
||||
|
||||
RemoveAnonymousValuesList();
|
||||
if (m_pAnonymousStrAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||
if (m_pAnonymousIntAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousIntAttributes);
|
||||
if (m_pAnonymousBoolAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousBoolAttributes);
|
||||
|
||||
if (m_pAnonymousStrValues)
|
||||
RemoveAnonymousList(m_pAnonymousStrValues);
|
||||
if (m_pAnonymousIntValues)
|
||||
RemoveAnonymousList(m_pAnonymousIntValues);
|
||||
if (m_pAnonymousBoolValues)
|
||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::RemoveAnonymousAttrubutesList()
|
||||
nsresult nsAbCardProperty::RemoveAnonymousList(nsVoidArray* pArray)
|
||||
{
|
||||
if (m_pAnonymousAttributes)
|
||||
if (pArray)
|
||||
{
|
||||
PRUint32 count = m_pAnonymousAttributes->Count();
|
||||
PRUint32 count = pArray->Count();
|
||||
for (int i = count - 1; i >= 0; i--)
|
||||
{
|
||||
char* pStr = (char*)m_pAnonymousAttributes->ElementAt(i);
|
||||
PR_FREEIF(pStr);
|
||||
m_pAnonymousAttributes->RemoveElementAt(i);
|
||||
void* pPtr = pArray->ElementAt(i);
|
||||
PR_FREEIF(pPtr);
|
||||
pArray->RemoveElementAt(i);
|
||||
}
|
||||
delete m_pAnonymousAttributes;
|
||||
m_pAnonymousAttributes = nsnull;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::RemoveAnonymousValuesList()
|
||||
{
|
||||
if (m_pAnonymousValues)
|
||||
{
|
||||
PRUint32 count = m_pAnonymousValues->Count();
|
||||
for (int i = count - 1; i >= 0; i--)
|
||||
{
|
||||
char* pStr = (char*)m_pAnonymousValues->ElementAt(i);
|
||||
PR_FREEIF(pStr);
|
||||
m_pAnonymousValues->RemoveElementAt(i);
|
||||
}
|
||||
delete m_pAnonymousValues;
|
||||
m_pAnonymousValues = nsnull;
|
||||
delete pArray;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -444,76 +438,99 @@ NS_IMETHODIMP nsAbCardProperty::SetCardValue(const char *attrname, const char *v
|
|||
else if (!PL_strcmp(attrname, kNotesColumn))
|
||||
rv = SetNotes(valueStr);
|
||||
else
|
||||
rv = SetAnonymousAttribute(attrname, value);
|
||||
rv = SetAnonymousStringAttribute(attrname, value);
|
||||
|
||||
delete[] valueStr;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousAttrubutesList(nsVoidArray **attrlist)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousStrAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (attrlist && m_pAnonymousAttributes)
|
||||
if (attrlist && m_pAnonymousStrAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousAttributes;
|
||||
*attrlist = m_pAnonymousStrAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousValuesList(nsVoidArray **valuelist)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousStrValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (valuelist && m_pAnonymousValues)
|
||||
if (valuelist && m_pAnonymousStrValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousValues;
|
||||
*valuelist = m_pAnonymousStrValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousAttrubutesList(nsVoidArray *pAttrlist)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousIntAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (m_pAnonymousAttributes)
|
||||
RemoveAnonymousAttrubutesList();
|
||||
m_pAnonymousAttributes = pAttrlist;
|
||||
return NS_OK;
|
||||
if (attrlist && m_pAnonymousIntAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousIntAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousValuesList(nsVoidArray *pValuelist)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousIntValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (m_pAnonymousValues)
|
||||
RemoveAnonymousValuesList();
|
||||
m_pAnonymousValues = pValuelist;
|
||||
return NS_OK;
|
||||
if (valuelist && m_pAnonymousIntValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousIntValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousAttribute(const char *attrname, const char *value)
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousBoolAttrubutesList(nsVoidArray **attrlist)
|
||||
{
|
||||
if (attrlist && m_pAnonymousBoolAttributes)
|
||||
{
|
||||
*attrlist = m_pAnonymousBoolAttributes;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::GetAnonymousBoolValuesList(nsVoidArray **valuelist)
|
||||
{
|
||||
if (valuelist && m_pAnonymousBoolValues)
|
||||
{
|
||||
*valuelist = m_pAnonymousBoolValues;
|
||||
return NS_OK;
|
||||
}
|
||||
else
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult nsAbCardProperty::SetAnonymousAttribute
|
||||
(nsVoidArray** pAttrAray, nsVoidArray** pValueArray, void *attrname, void *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsVoidArray* pAttributes = *pAttrAray;
|
||||
nsVoidArray* pValues = *pValueArray;
|
||||
|
||||
if (!m_pAnonymousAttributes && !m_pAnonymousValues)
|
||||
if (!pAttributes && !pValues)
|
||||
{
|
||||
m_pAnonymousAttributes = new nsVoidArray();
|
||||
m_pAnonymousValues = new nsVoidArray();
|
||||
pAttributes = new nsVoidArray();
|
||||
pValues = new nsVoidArray();
|
||||
*pAttrAray = pAttributes;
|
||||
*pValueArray = pValues;
|
||||
}
|
||||
if (m_pAnonymousAttributes && m_pAnonymousValues)
|
||||
if (pAttributes && pValues)
|
||||
{
|
||||
char* pAttribute = nsnull;
|
||||
char* pValue = nsnull;
|
||||
pAttribute = PL_strdup(attrname);
|
||||
pValue = PL_strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
if (attrname && value)
|
||||
{
|
||||
m_pAnonymousAttributes->AppendElement(pAttribute);
|
||||
m_pAnonymousValues->AppendElement(pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
pAttributes->AppendElement(attrname);
|
||||
pValues->AppendElement(value);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -524,6 +541,83 @@ NS_IMETHODIMP nsAbCardProperty::SetAnonymousAttribute(const char *attrname, cons
|
|||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousStringAttribute
|
||||
(const char *attrname, const char *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pValue = PL_strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousStrAttributes,
|
||||
&m_pAnonymousStrValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousIntAttribute
|
||||
(const char *attrname, PRUint32 value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRUint32* pValue = (PRUint32 *)PR_Calloc(1, sizeof(PRUint32));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousIntAttributes,
|
||||
&m_pAnonymousIntValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::SetAnonymousBoolAttribute
|
||||
(const char *attrname, PRBool value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRBool* pValue = (PRBool *)PR_Calloc(1, sizeof(PRBool));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousBoolAttributes,
|
||||
&m_pAnonymousBoolValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAbCardProperty::AddAnonymousAttributesToDB()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (mDatabase)
|
||||
mDatabase = null_nsCOMPtr();
|
||||
rv = GetCardDatabase("abdirectory://abook.mab");
|
||||
if (NS_SUCCEEDED(rv) && mDatabase)
|
||||
rv = mDatabase->AddAnonymousAttributesFromCard(this);
|
||||
return rv;
|
||||
}
|
||||
|
||||
/* caller need to PR_smprintf_free *uri */
|
||||
NS_IMETHODIMP nsAbCardProperty::GetCardURI(char **uri)
|
||||
{
|
||||
|
|
|
@ -131,11 +131,19 @@ public:
|
|||
|
||||
NS_IMETHOD GetCardValue(const char *attrname, char **value);
|
||||
NS_IMETHOD SetCardValue(const char *attrname, const char *value);
|
||||
NS_IMETHOD GetAnonymousAttrubutesList(nsVoidArray **attrlist);
|
||||
NS_IMETHOD GetAnonymousValuesList(nsVoidArray **valuelist);
|
||||
NS_IMETHOD SetAnonymousAttrubutesList(nsVoidArray *pAttrlist);
|
||||
NS_IMETHOD SetAnonymousValuesList(nsVoidArray *pValuelist);
|
||||
NS_IMETHOD SetAnonymousAttribute(const char *attrname, const char *value);
|
||||
|
||||
NS_IMETHOD GetAnonymousStrAttrubutesList(nsVoidArray **attrlist);
|
||||
NS_IMETHOD GetAnonymousStrValuesList(nsVoidArray **valuelist);
|
||||
NS_IMETHOD GetAnonymousIntAttrubutesList(nsVoidArray **attrlist);
|
||||
NS_IMETHOD GetAnonymousIntValuesList(nsVoidArray **valuelist);
|
||||
NS_IMETHOD GetAnonymousBoolAttrubutesList(nsVoidArray **attrlist);
|
||||
NS_IMETHOD GetAnonymousBoolValuesList(nsVoidArray **valuelist);
|
||||
|
||||
NS_IMETHOD SetAnonymousStringAttribute(const char *attrname, const char *value);
|
||||
NS_IMETHOD SetAnonymousIntAttribute(const char *attrname, PRUint32 value);
|
||||
NS_IMETHOD SetAnonymousBoolAttribute(const char *attrname, PRBool value);
|
||||
NS_IMETHOD AddAnonymousAttributesToDB();
|
||||
|
||||
NS_IMETHOD GetCardURI(char **uri);
|
||||
NS_IMETHOD AddCardToDatabase(const char *uri);
|
||||
NS_IMETHOD EditCardToDatabase(const char *uri);
|
||||
|
@ -147,8 +155,9 @@ protected:
|
|||
nsresult GetCardDatabase(const char *uri);
|
||||
nsresult GetAttributeName(char **aName, char* pValue);
|
||||
nsresult SetAttributeName(char *aName, char** arrtibute);
|
||||
nsresult RemoveAnonymousAttrubutesList();
|
||||
nsresult RemoveAnonymousValuesList();
|
||||
nsresult RemoveAnonymousList(nsVoidArray* pArray);
|
||||
nsresult SetAnonymousAttribute(nsVoidArray** pAttrAray,
|
||||
nsVoidArray** pValueArray, void *attrname, void *value);
|
||||
|
||||
char* m_pFirstName;
|
||||
char* m_pLastName;
|
||||
|
@ -194,8 +203,12 @@ protected:
|
|||
PRUint32 m_dbRowID;
|
||||
|
||||
nsCOMPtr<nsIAddrDatabase> mDatabase;
|
||||
nsVoidArray* m_pAnonymousAttributes;
|
||||
nsVoidArray* m_pAnonymousValues;
|
||||
nsVoidArray* m_pAnonymousStrAttributes;
|
||||
nsVoidArray* m_pAnonymousStrValues;
|
||||
nsVoidArray* m_pAnonymousIntAttributes;
|
||||
nsVoidArray* m_pAnonymousIntValues;
|
||||
nsVoidArray* m_pAnonymousBoolAttributes;
|
||||
nsVoidArray* m_pAnonymousBoolValues;
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -50,6 +50,9 @@ extern const char *kCardDataSourceRoot;
|
|||
extern const char *kMainPersonalAddressBook;
|
||||
|
||||
|
||||
#define ID_PAB_TABLE 1
|
||||
#define ID_ANONYMOUS_TABLE 2
|
||||
|
||||
const PRInt32 kAddressBookDBVersion = 1;
|
||||
|
||||
const char *kAnonymousTableKind = "ns:addrbk:db:table:kind:anonymous";
|
||||
|
@ -114,8 +117,10 @@ nsAddrDatabase::nsAddrDatabase()
|
|||
m_mdbPabTable(nsnull), m_mdbRow(nsnull),
|
||||
m_dbName(""), m_mdbTokensInitialized(PR_FALSE),
|
||||
m_ChangeListeners(nsnull), m_mdbAnonymousTable(nsnull),
|
||||
m_AnonymousTableKind(0), m_pAnonymousAttributes(nsnull),
|
||||
m_pAnonymousValues(nsnull),
|
||||
m_AnonymousTableKind(0), m_pAnonymousStrAttributes(nsnull),
|
||||
m_pAnonymousStrValues(nsnull), m_pAnonymousIntAttributes(nsnull),
|
||||
m_pAnonymousIntValues(nsnull), m_pAnonymousBoolAttributes(nsnull),
|
||||
m_pAnonymousBoolValues(nsnull),
|
||||
m_PabTableKind(0), m_HistoryTableKind(0),
|
||||
m_MailListTableKind(0), m_CategoryTableKind(0),
|
||||
m_CardRowScopeToken(0),
|
||||
|
@ -172,40 +177,33 @@ nsAddrDatabase::~nsAddrDatabase()
|
|||
|
||||
CleanupCache();
|
||||
|
||||
RemoveAnonymousAttrubutesList();
|
||||
RemoveAnonymousValuesList();
|
||||
if (m_pAnonymousStrAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||
if (m_pAnonymousIntAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousIntAttributes);
|
||||
if (m_pAnonymousBoolAttributes)
|
||||
RemoveAnonymousList(m_pAnonymousBoolAttributes);
|
||||
|
||||
if (m_pAnonymousStrValues)
|
||||
RemoveAnonymousList(m_pAnonymousStrValues);
|
||||
if (m_pAnonymousIntValues)
|
||||
RemoveAnonymousList(m_pAnonymousIntValues);
|
||||
if (m_pAnonymousBoolValues)
|
||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::RemoveAnonymousAttrubutesList()
|
||||
nsresult nsAddrDatabase::RemoveAnonymousList(nsVoidArray* pArray)
|
||||
{
|
||||
if (m_pAnonymousAttributes)
|
||||
if (pArray)
|
||||
{
|
||||
PRUint32 count = m_pAnonymousAttributes->Count();
|
||||
PRUint32 count = pArray->Count();
|
||||
for (int i = count - 1; i >= 0; i--)
|
||||
{
|
||||
char* pStr = (char*)m_pAnonymousAttributes->ElementAt(i);
|
||||
PR_FREEIF(pStr);
|
||||
m_pAnonymousAttributes->RemoveElementAt(i);
|
||||
void* pPtr = pArray->ElementAt(i);
|
||||
PR_FREEIF(pPtr);
|
||||
pArray->RemoveElementAt(i);
|
||||
}
|
||||
delete m_pAnonymousAttributes;
|
||||
m_pAnonymousAttributes = nsnull;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::RemoveAnonymousValuesList()
|
||||
{
|
||||
if (m_pAnonymousValues)
|
||||
{
|
||||
PRUint32 count = m_pAnonymousValues->Count();
|
||||
for (int i = count - 1; i >= 0; i--)
|
||||
{
|
||||
char* pStr = (char*)m_pAnonymousValues->ElementAt(i);
|
||||
PR_FREEIF(pStr);
|
||||
m_pAnonymousValues->RemoveElementAt(i);
|
||||
}
|
||||
delete m_pAnonymousValues;
|
||||
m_pAnonymousValues = nsnull;
|
||||
delete pArray;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -540,8 +538,6 @@ NS_IMETHODIMP nsAddrDatabase::Open
|
|||
pAddressBookDB = (nsAddrDatabase *) FindInCache(pabName);
|
||||
if (pAddressBookDB) {
|
||||
*pAddrDB = pAddressBookDB;
|
||||
//FindInCache does the AddRef'ing
|
||||
//pAddressBookDB->AddRef();
|
||||
return(NS_OK);
|
||||
}
|
||||
|
||||
|
@ -808,8 +804,8 @@ nsresult nsAddrDatabase::InitPabTable()
|
|||
{
|
||||
nsIMdbStore *store = GetStore();
|
||||
|
||||
mdb_err mdberr = (nsresult) store->NewTable(GetEnv(), m_CardRowScopeToken,
|
||||
m_PabTableKind, PR_FALSE, &gAddressBookTableOID, &m_mdbPabTable);
|
||||
mdb_err mdberr = (nsresult) store->NewTableWithOid(GetEnv(), &gAddressBookTableOID,
|
||||
m_PabTableKind, PR_FALSE, (const mdbOid*)nsnull, &m_mdbPabTable);
|
||||
|
||||
return mdberr;
|
||||
}
|
||||
|
@ -819,15 +815,9 @@ nsresult nsAddrDatabase::InitAnonymousTable()
|
|||
nsIMdbStore *store = GetStore();
|
||||
|
||||
nsresult err = store->StringToToken(GetEnv(), kAnonymousTableKind, &m_AnonymousTableKind);
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
gAnonymousTableOID.mOid_Scope = m_AnonymousTableKind;
|
||||
gAnonymousTableOID.mOid_Id = 1;
|
||||
}
|
||||
mdb_err mdberr = (nsresult) store->NewTable(GetEnv(), m_CardRowScopeToken,
|
||||
m_AnonymousTableKind, PR_FALSE, &gAnonymousTableOID, &m_mdbAnonymousTable);
|
||||
|
||||
return mdberr;
|
||||
err = (nsresult) store->NewTableWithOid(GetEnv(), &gAnonymousTableOID,
|
||||
m_AnonymousTableKind, PR_FALSE, (const mdbOid*)nsnull, &m_mdbAnonymousTable);
|
||||
return err;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::InitExistingDB()
|
||||
|
@ -838,52 +828,13 @@ nsresult nsAddrDatabase::InitExistingDB()
|
|||
if (err == NS_OK)
|
||||
{
|
||||
err = GetStore()->GetTable(GetEnv(), &gAddressBookTableOID, &m_mdbPabTable);
|
||||
|
||||
err = GetStore()->StringToToken(GetEnv(), kAnonymousTableKind, &m_AnonymousTableKind);
|
||||
err = GetStore()->GetTable(GetEnv(), &gAnonymousTableOID, &m_mdbAnonymousTable);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef GetCard
|
||||
nsresult nsAddrDatabase::GetCardRow()
|
||||
{
|
||||
if (m_mdbPabTable)
|
||||
{
|
||||
nsCOMPtr <nsIMdbTableRowCursor> rowCursor;
|
||||
rowPos = -1;
|
||||
ret= m_mdbPabTable->GetTableRowCursor(GetEnv(), rowPos, getter_addrefs(rowCursor));
|
||||
if (ret == NS_OK)
|
||||
{
|
||||
ret = rowCursor->NextRow(GetEnv(), &m_mdbRow, rowPos);
|
||||
if (ret == NS_OK && m_mdbRow)
|
||||
{
|
||||
LoadMemberVariables();
|
||||
}
|
||||
}
|
||||
nsIMdbRow* cardRow;
|
||||
nsIMdbTableRowCursor* rowCursor;
|
||||
mdb_pos rowPos;
|
||||
mdb_id rowID;
|
||||
|
||||
if (m_mdbPabTable)
|
||||
m_mdbPabTable->GetTableRowCursor(GetEnv(), -1, &rowCursor);
|
||||
do
|
||||
{
|
||||
err = rowCursor->NextRow(GetEnv(), &cardRow, &rowPos);
|
||||
|
||||
if (NS_SUCCEEDED(err) && cardRow)
|
||||
{
|
||||
mdbOid outOid;
|
||||
err = cardRow->GetOid(GetEnv(), &outOid);
|
||||
if (NS_SUCCEEDED(err))
|
||||
rowID = outOid.mOid_Id;
|
||||
|
||||
}
|
||||
} while (cardRow);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
// initialize the various tokens and tables in our db's env
|
||||
nsresult nsAddrDatabase::InitMDBInfo()
|
||||
{
|
||||
|
@ -893,6 +844,10 @@ nsresult nsAddrDatabase::InitMDBInfo()
|
|||
{
|
||||
m_mdbTokensInitialized = PR_TRUE;
|
||||
err = GetStore()->StringToToken(GetEnv(), kCardRowScope, &m_CardRowScopeToken);
|
||||
gAddressBookTableOID.mOid_Scope = m_CardRowScopeToken;
|
||||
gAddressBookTableOID.mOid_Id = ID_PAB_TABLE;
|
||||
gAnonymousTableOID.mOid_Scope = m_CardRowScopeToken;
|
||||
gAnonymousTableOID.mOid_Id = ID_ANONYMOUS_TABLE;
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
GetStore()->StringToToken(GetEnv(), kFirstNameColumn, &m_FirstNameColumnToken);
|
||||
|
@ -935,11 +890,6 @@ nsresult nsAddrDatabase::InitMDBInfo()
|
|||
|
||||
GetStore()->StringToToken(GetEnv(), kAddressCharSetColumn, &m_AddressCharSetColumnToken);
|
||||
err = GetStore()->StringToToken(GetEnv(), kPabTableKind, &m_PabTableKind);
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
gAddressBookTableOID.mOid_Scope = m_CardRowScopeToken;
|
||||
gAddressBookTableOID.mOid_Id = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return err;
|
||||
|
@ -967,196 +917,183 @@ nsresult nsAddrDatabase::AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *ca
|
|||
char* pStr = nsnull;
|
||||
card->GetFirstName(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_FirstNameColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_FirstNameColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetLastName(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_LastNameColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_LastNameColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetDisplayName(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_DisplayNameColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_DisplayNameColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetNickName(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_NickNameColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_NickNameColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetPrimaryEmail(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_PriEmailColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_PriEmailColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetSecondEmail(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_2ndEmailColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_2ndEmailColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkPhone(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkPhoneColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkPhoneColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomePhone(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomePhoneColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomePhoneColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetFaxNumber(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_FaxColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_FaxColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetPagerNumber(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_PagerColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_PagerColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCellularNumber(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_CellularColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_CellularColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeAddress(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeAddressColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeAddressColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeAddress2(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeAddress2ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeAddress2ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeCity(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeCityColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeCityColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeState(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeStateColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeStateColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeZipCode(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeZipCodeColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeZipCodeColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetHomeCountry(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_HomeCountryColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_HomeCountryColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkAddress(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkAddressColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkAddressColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkAddress2(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkAddress2ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkAddress2ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkCity(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkCityColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkCityColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkState(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkStateColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkStateColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkZipCode(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkZipCodeColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkZipCodeColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWorkCountry(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WorkCountryColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WorkCountryColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetJobTitle(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_JobTitleColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_JobTitleColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetDepartment(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_DepartmentColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_DepartmentColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCompany(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_CompanyColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_CompanyColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWebPage1(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WebPage1ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WebPage1ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetWebPage2(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_WebPage2ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_WebPage2ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetBirthYear(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_BirthYearColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_BirthYearColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetBirthMonth(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_BirthMonthColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_BirthMonthColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetBirthDay(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_BirthDayColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_BirthDayColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCustom1(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_Custom1ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_Custom1ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCustom2(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_Custom2ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_Custom2ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCustom3(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_Custom3ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_Custom3ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetCustom4(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_Custom4ColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_Custom4ColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
card->GetNotes(&pStr);
|
||||
if (pStr)
|
||||
AddCardColumn(cardRow, m_NotesColumnToken, pStr);
|
||||
AddStringColumn(cardRow, m_NotesColumnToken, pStr);
|
||||
PR_FREEIF(pStr);
|
||||
|
||||
nsVoidArray* pAttrArray = nsnull;
|
||||
nsVoidArray* pValueArray = nsnull;
|
||||
err = card->GetAnonymousAttrubutesList(&pAttrArray);
|
||||
err = card->GetAnonymousValuesList(&pValueArray);
|
||||
if (pAttrArray && pValueArray)
|
||||
{
|
||||
RemoveAnonymousAttrubutesList();
|
||||
RemoveAnonymousValuesList();
|
||||
m_pAnonymousAttributes = pAttrArray;
|
||||
m_pAnonymousValues = pValueArray;
|
||||
AddAnonymousAttributesToDB();
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1186,39 +1123,149 @@ NS_IMETHODIMP nsAddrDatabase::CreateNewCardAndAddToDB(nsIAbCard *newCard, PRBool
|
|||
return err;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::AddAnonymousAttributesToDB()
|
||||
nsresult nsAddrDatabase::DoAnonymousAttributesTransaction(PRBool bAdd)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
PRUint32 count, i;
|
||||
|
||||
if (!m_pAnonymousAttributes || !m_pAnonymousValues)
|
||||
if (!m_pAnonymousStrAttributes || !m_pAnonymousStrValues)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if (!m_mdbAnonymousTable)
|
||||
err = InitAnonymousTable();
|
||||
if (NS_SUCCEEDED(err) && m_mdbAnonymousTable)
|
||||
|
||||
if (NS_FAILED(err) || !m_mdbAnonymousTable)
|
||||
return NS_ERROR_FAILURE;
|
||||
if (m_pAnonymousStrAttributes && m_pAnonymousStrValues)
|
||||
{
|
||||
count = m_pAnonymousAttributes->Count();
|
||||
count = m_pAnonymousStrAttributes->Count();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
char* pAttrStr = (char*)m_pAnonymousAttributes->ElementAt(i);
|
||||
char* pAttrStr = (char*)m_pAnonymousStrAttributes->ElementAt(i);
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), pAttrStr, &anonymousColumnToken);
|
||||
|
||||
nsIMdbRow *anonymousRow;
|
||||
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
|
||||
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
|
||||
if (NS_SUCCEEDED(err) && anonymousRow)
|
||||
{
|
||||
char* pValueStr = (char*)m_pAnonymousValues->ElementAt(i);
|
||||
AddCardColumn(anonymousRow, anonymousColumnToken, pValueStr);
|
||||
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
|
||||
if (bAdd)
|
||||
{
|
||||
char* pValueStr = (char*)m_pAnonymousStrValues->ElementAt(i);
|
||||
AddStringColumn(anonymousRow, anonymousColumnToken, pValueStr);
|
||||
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
else
|
||||
err = m_mdbAnonymousTable->CutRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_pAnonymousIntAttributes && m_pAnonymousIntValues)
|
||||
{
|
||||
count = m_pAnonymousIntAttributes->Count();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
char* pAttrStr = (char*)m_pAnonymousIntAttributes->ElementAt(i);
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), pAttrStr, &anonymousColumnToken);
|
||||
|
||||
nsIMdbRow *anonymousRow;
|
||||
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
|
||||
if (NS_SUCCEEDED(err) && anonymousRow)
|
||||
{
|
||||
if (bAdd)
|
||||
{
|
||||
PRUint32* pValue = (PRUint32*)m_pAnonymousIntValues->ElementAt(i);
|
||||
PRUint32 value = *pValue;
|
||||
AddIntColumn(anonymousRow, anonymousColumnToken, value);
|
||||
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
else
|
||||
err = m_mdbAnonymousTable->CutRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_pAnonymousBoolAttributes && m_pAnonymousBoolValues)
|
||||
{
|
||||
count = m_pAnonymousBoolAttributes->Count();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
char* pAttrStr = (char*)m_pAnonymousBoolAttributes->ElementAt(i);
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), pAttrStr, &anonymousColumnToken);
|
||||
|
||||
nsIMdbRow *anonymousRow;
|
||||
err = GetStore()->NewRow(GetEnv(), m_CardRowScopeToken, &anonymousRow);
|
||||
if (NS_SUCCEEDED(err) && anonymousRow)
|
||||
{
|
||||
if (bAdd)
|
||||
{
|
||||
PRBool* pValue = (PRBool*)m_pAnonymousBoolValues->ElementAt(i);
|
||||
PRBool value = *pValue;
|
||||
PRUint32 nBoolValue = 0;
|
||||
if (value)
|
||||
nBoolValue = 1;
|
||||
else
|
||||
nBoolValue = 0;
|
||||
AddIntColumn(anonymousRow, anonymousColumnToken, nBoolValue);
|
||||
err = m_mdbAnonymousTable->AddRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
else
|
||||
err = m_mdbAnonymousTable->CutRow(GetEnv(), anonymousRow);
|
||||
}
|
||||
}
|
||||
}
|
||||
Commit(kSessionCommit);
|
||||
return err;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::AddAnonymousAttributesFromCard(nsIAbCard* card)
|
||||
{
|
||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousStrValues);
|
||||
RemoveAnonymousList(m_pAnonymousIntAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousIntValues);
|
||||
RemoveAnonymousList(m_pAnonymousBoolAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
nsresult err = card->GetAnonymousStrAttrubutesList(&m_pAnonymousStrAttributes);
|
||||
err = card->GetAnonymousStrValuesList(&m_pAnonymousStrValues);
|
||||
err = card->GetAnonymousIntAttrubutesList(&m_pAnonymousIntAttributes);
|
||||
err = card->GetAnonymousIntValuesList(&m_pAnonymousIntValues);
|
||||
err = card->GetAnonymousBoolAttrubutesList(&m_pAnonymousBoolAttributes);
|
||||
err = card->GetAnonymousBoolValuesList(&m_pAnonymousBoolValues);
|
||||
err = DoAnonymousAttributesTransaction(PR_TRUE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::AddAnonymousAttributesToDB()
|
||||
{
|
||||
return DoAnonymousAttributesTransaction(PR_TRUE);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::RemoveAnonymousAttributesFromCard(nsIAbCard *card)
|
||||
{
|
||||
RemoveAnonymousList(m_pAnonymousStrAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousStrValues);
|
||||
RemoveAnonymousList(m_pAnonymousIntAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousIntValues);
|
||||
RemoveAnonymousList(m_pAnonymousBoolAttributes);
|
||||
RemoveAnonymousList(m_pAnonymousBoolValues);
|
||||
nsresult err = card->GetAnonymousStrAttrubutesList(&m_pAnonymousStrAttributes);
|
||||
err = card->GetAnonymousStrValuesList(&m_pAnonymousStrValues);
|
||||
err = card->GetAnonymousIntAttrubutesList(&m_pAnonymousIntAttributes);
|
||||
err = card->GetAnonymousIntValuesList(&m_pAnonymousIntValues);
|
||||
err = card->GetAnonymousBoolAttrubutesList(&m_pAnonymousBoolAttributes);
|
||||
err = card->GetAnonymousBoolValuesList(&m_pAnonymousBoolValues);
|
||||
err = DoAnonymousAttributesTransaction(PR_FALSE);
|
||||
return err;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::RemoveAnonymousAttributesFromDB()
|
||||
{
|
||||
return DoAnonymousAttributesTransaction(PR_FALSE);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::DeleteCard(nsIAbCard *card, PRBool notify)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
|
@ -1282,43 +1329,7 @@ NS_IMETHODIMP nsAddrDatabase::ContainsCard(nsIAbCard *card, PRBool *hasCard)
|
|||
return err;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::SetAnonymousAttribute(const char *attrname, const char *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
if (!m_pAnonymousAttributes && !m_pAnonymousValues)
|
||||
{
|
||||
m_pAnonymousAttributes = new nsVoidArray();
|
||||
m_pAnonymousValues = new nsVoidArray();
|
||||
}
|
||||
if (m_pAnonymousAttributes && m_pAnonymousValues)
|
||||
{
|
||||
char* pAttribute = nsnull;
|
||||
char* pValue = nsnull;
|
||||
pAttribute = PL_strdup(attrname);
|
||||
pValue = PL_strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
m_pAnonymousAttributes->AppendElement(pAttribute);
|
||||
m_pAnonymousValues->AppendElement(pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
mdb_err nsAddrDatabase::AddCardColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str)
|
||||
mdb_err nsAddrDatabase::AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str)
|
||||
{
|
||||
struct mdbYarn yarn;
|
||||
|
||||
|
@ -1326,15 +1337,31 @@ mdb_err nsAddrDatabase::AddCardColumn(nsIMdbRow* cardRow, mdb_column inColumn, c
|
|||
yarn.mYarn_Buf = str;
|
||||
yarn.mYarn_Size = PL_strlen((const char *) yarn.mYarn_Buf) + 1;
|
||||
yarn.mYarn_Fill = yarn.mYarn_Size - 1;
|
||||
yarn.mYarn_Form = 0; // what to do with this? we're storing csid in the msg hdr...
|
||||
yarn.mYarn_Form = 0;
|
||||
mdb_err err = cardRow->AddColumn(GetEnv(), inColumn, &yarn);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
mdb_err nsAddrDatabase::AddIntColumn(nsIMdbRow* cardRow, mdb_column inColumn, PRUint32 nValue)
|
||||
{
|
||||
struct mdbYarn yarn;
|
||||
char yarnBuf[100];
|
||||
|
||||
yarn.mYarn_Buf = (void *) yarnBuf;
|
||||
yarn.mYarn_Size = sizeof(yarnBuf);
|
||||
yarn.mYarn_Fill = yarn.mYarn_Size;
|
||||
yarn.mYarn_Form = 0;
|
||||
yarn.mYarn_Grow = NULL;
|
||||
|
||||
PR_snprintf((char*)yarn.mYarn_Buf, yarn.mYarn_Size, "%lx", nValue);
|
||||
yarn.mYarn_Fill = PL_strlen((const char *) yarn.mYarn_Buf);
|
||||
return cardRow->AddColumn(GetEnv(), inColumn, &yarn);
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::GetStringColumn(nsIMdbRow *cardRow, mdb_token outToken, nsString& str)
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
nsresult err = NS_ERROR_FAILURE;
|
||||
nsIMdbCell *cardCell;
|
||||
|
||||
if (cardRow)
|
||||
|
@ -1347,11 +1374,181 @@ nsresult nsAddrDatabase::GetStringColumn(nsIMdbRow *cardRow, mdb_token outToken,
|
|||
str.SetString((const char *) yarn.mYarn_Buf, yarn.mYarn_Fill);
|
||||
cardCell->CutStrongRef(GetEnv()); // always release ref
|
||||
}
|
||||
else
|
||||
err = NS_ERROR_FAILURE;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::GetAnonymousAttribute(const char *attrname, char** value)
|
||||
void nsAddrDatabase::YarnToUInt32(struct mdbYarn *yarn, PRUint32 *pResult)
|
||||
{
|
||||
PRUint32 i, result, numChars;
|
||||
char *p = (char *) yarn->mYarn_Buf;
|
||||
if (yarn->mYarn_Fill > 8)
|
||||
numChars = 8;
|
||||
else
|
||||
numChars = yarn->mYarn_Fill;
|
||||
for (i=0, result = 0; i < numChars; i++, p++)
|
||||
{
|
||||
char C = *p;
|
||||
|
||||
PRInt8 unhex = ((C >= '0' && C <= '9') ? C - '0' :
|
||||
((C >= 'A' && C <= 'F') ? C - 'A' + 10 :
|
||||
((C >= 'a' && C <= 'f') ? C - 'a' + 10 : -1)));
|
||||
if (unhex < 0)
|
||||
break;
|
||||
result = (result << 4) | unhex;
|
||||
}
|
||||
|
||||
*pResult = result;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::GetIntColumn
|
||||
(nsIMdbRow *cardRow, mdb_token outToken, PRUint32* pValue, PRUint32 defaultValue)
|
||||
{
|
||||
nsresult err = NS_ERROR_FAILURE;
|
||||
nsIMdbCell *cardCell;
|
||||
|
||||
if (pValue)
|
||||
*pValue = defaultValue;
|
||||
if (cardRow)
|
||||
{
|
||||
err = cardRow->GetCell(GetEnv(), outToken, &cardCell);
|
||||
if (err == NS_OK && cardCell)
|
||||
{
|
||||
struct mdbYarn yarn;
|
||||
cardCell->AliasYarn(GetEnv(), &yarn);
|
||||
YarnToUInt32(&yarn, pValue);
|
||||
cardCell->CutStrongRef(GetEnv());
|
||||
}
|
||||
else
|
||||
err = NS_ERROR_FAILURE;
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::GetBoolColumn(nsIMdbRow *cardRow, mdb_token outToken, PRBool* pValue)
|
||||
{
|
||||
nsresult err = NS_ERROR_FAILURE;
|
||||
nsIMdbCell *cardCell;
|
||||
PRUint32 nValue = 0;
|
||||
|
||||
if (cardRow)
|
||||
{
|
||||
err = cardRow->GetCell(GetEnv(), outToken, &cardCell);
|
||||
if (err == NS_OK && cardCell)
|
||||
{
|
||||
struct mdbYarn yarn;
|
||||
cardCell->AliasYarn(GetEnv(), &yarn);
|
||||
YarnToUInt32(&yarn, &nValue);
|
||||
cardCell->CutStrongRef(GetEnv());
|
||||
}
|
||||
else
|
||||
err = NS_ERROR_FAILURE;
|
||||
}
|
||||
if (nValue == 0)
|
||||
*pValue = PR_FALSE;
|
||||
else
|
||||
*pValue = PR_TRUE;
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsAddrDatabase::SetAnonymousAttribute
|
||||
(nsVoidArray** pAttrAray, nsVoidArray** pValueArray, void *attrname, void *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
nsVoidArray* pAttributes = *pAttrAray;
|
||||
nsVoidArray* pValues = *pValueArray;
|
||||
|
||||
if (!pAttributes && !pValues)
|
||||
{
|
||||
pAttributes = new nsVoidArray();
|
||||
pValues = new nsVoidArray();
|
||||
}
|
||||
if (pAttributes && pValues)
|
||||
{
|
||||
if (attrname && value)
|
||||
{
|
||||
pAttributes->AppendElement(attrname);
|
||||
pValues->AppendElement(value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::SetAnonymousStringAttribute
|
||||
(const char *attrname, const char *value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
char* pValue = PL_strdup(value);
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousStrAttributes,
|
||||
&m_pAnonymousStrValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::SetAnonymousIntAttribute
|
||||
(const char *attrname, PRUint32 value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRUint32* pValue = (PRUint32 *)PR_Calloc(1, sizeof(PRUint32));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousIntAttributes,
|
||||
&m_pAnonymousIntValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::SetAnonymousBoolAttribute
|
||||
(const char *attrname, PRBool value)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
char* pAttribute = PL_strdup(attrname);
|
||||
PRBool* pValue = (PRBool *)PR_Calloc(1, sizeof(PRBool));
|
||||
*pValue = value;
|
||||
if (pAttribute && pValue)
|
||||
{
|
||||
rv = SetAnonymousAttribute(&m_pAnonymousBoolAttributes,
|
||||
&m_pAnonymousBoolValues, pAttribute, pValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
PR_FREEIF(pAttribute);
|
||||
PR_FREEIF(pValue);
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::GetAnonymousStringAttribute(const char *attrname, char** value)
|
||||
{
|
||||
if (m_mdbAnonymousTable)
|
||||
{
|
||||
|
@ -1386,13 +1583,18 @@ NS_IMETHODIMP nsAddrDatabase::GetAnonymousAttribute(const char *attrname, char**
|
|||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::GetAnonymousAttributesFromDB()
|
||||
NS_IMETHODIMP nsAddrDatabase::GetAnonymousIntAttribute(const char *attrname, PRUint32* value)
|
||||
{
|
||||
if (m_mdbAnonymousTable)
|
||||
{
|
||||
nsIMdbRow* cardRow;
|
||||
nsIMdbTableRowCursor* rowCursor;
|
||||
mdb_pos rowPos;
|
||||
PRUint32 nValue;
|
||||
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), attrname, &anonymousColumnToken);
|
||||
|
||||
|
||||
m_mdbAnonymousTable->GetTableRowCursor(GetEnv(), -1, &rowCursor);
|
||||
do
|
||||
|
@ -1401,25 +1603,51 @@ nsresult nsAddrDatabase::GetAnonymousAttributesFromDB()
|
|||
|
||||
if (NS_SUCCEEDED(err) && cardRow)
|
||||
{
|
||||
nsAutoString attrString;
|
||||
|
||||
// GetStringColumn(cardRow, m_AnonymousColumnToken, attrString);
|
||||
if (attrString.Length())
|
||||
err = GetIntColumn(cardRow, anonymousColumnToken, &nValue, 0);
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
if (!m_pAnonymousAttributes)
|
||||
{
|
||||
m_pAnonymousAttributes = new nsVoidArray();
|
||||
m_pAnonymousValues = new nsVoidArray();
|
||||
}
|
||||
char* tempCString = attrString.ToNewCString();
|
||||
char *attributeStr = PL_strdup(tempCString);
|
||||
m_pAnonymousAttributes->AppendElement(attributeStr);
|
||||
delete [] tempCString;
|
||||
*value = nValue;
|
||||
return err;
|
||||
}
|
||||
}
|
||||
} while (cardRow);
|
||||
}
|
||||
return NS_OK;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAddrDatabase::GetAnonymousBoolAttribute(const char *attrname, PRBool* value)
|
||||
{
|
||||
if (m_mdbAnonymousTable)
|
||||
{
|
||||
nsIMdbRow* cardRow;
|
||||
nsIMdbTableRowCursor* rowCursor;
|
||||
mdb_pos rowPos;
|
||||
PRUint32 nValue;
|
||||
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), attrname, &anonymousColumnToken);
|
||||
|
||||
|
||||
m_mdbAnonymousTable->GetTableRowCursor(GetEnv(), -1, &rowCursor);
|
||||
do
|
||||
{
|
||||
mdb_err err = rowCursor->NextRow(GetEnv(), &cardRow, &rowPos);
|
||||
|
||||
if (NS_SUCCEEDED(err) && cardRow)
|
||||
{
|
||||
err = GetIntColumn(cardRow, anonymousColumnToken, &nValue, 0);
|
||||
if (NS_SUCCEEDED(err))
|
||||
{
|
||||
if (nValue)
|
||||
*value = PR_TRUE;
|
||||
else
|
||||
*value = PR_FALSE;
|
||||
return err;
|
||||
}
|
||||
}
|
||||
} while (cardRow);
|
||||
}
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult nsAddrDatabase::GetCardFromDB(nsIAbCard *newCard, nsIMdbRow* cardRow)
|
||||
|
@ -1718,28 +1946,6 @@ nsresult nsAddrDatabase::GetCardFromDB(nsIAbCard *newCard, nsIMdbRow* cardRow)
|
|||
newCard->SetNotes(tempCString);
|
||||
delete [] tempCString;
|
||||
}
|
||||
|
||||
if (m_pAnonymousAttributes && m_pAnonymousValues)
|
||||
{
|
||||
PRUint32 count,i;
|
||||
count = m_pAnonymousAttributes->Count();
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
char* pAttrStr = (char*)m_pAnonymousAttributes->ElementAt(i);
|
||||
|
||||
mdb_token anonymousColumnToken;
|
||||
GetStore()->StringToToken(GetEnv(), pAttrStr, &anonymousColumnToken);
|
||||
GetStringColumn(cardRow, anonymousColumnToken, tempString);
|
||||
if (tempString.Length())
|
||||
{
|
||||
tempCString = tempString.ToNewCString();
|
||||
char* pValue = PL_strdup(tempCString);
|
||||
m_pAnonymousValues->AppendElement(pValue);
|
||||
delete [] tempCString;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -1854,7 +2060,6 @@ NS_IMETHODIMP nsAddrDatabase::EnumerateMailingLists(nsIAbDirectory *directory, n
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
nsresult nsAddrDatabase::CreateABCard(nsIMdbRow* cardRow, nsIAbCard **result)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
|
|
@ -86,9 +86,16 @@ public:
|
|||
NS_IMETHOD DeleteCard(nsIAbCard *newCard, PRBool notify);
|
||||
NS_IMETHOD EditCard(nsIAbCard *card, PRBool notify);
|
||||
NS_IMETHOD ContainsCard(nsIAbCard *card, PRBool *hasCard);
|
||||
NS_IMETHOD SetAnonymousAttribute(const char *attrname, const char *value);
|
||||
NS_IMETHOD GetAnonymousAttribute(const char *attrname, char** value);
|
||||
NS_IMETHOD SetAnonymousStringAttribute(const char *attrname, const char *value);
|
||||
NS_IMETHOD GetAnonymousStringAttribute(const char *attrname, char** value);
|
||||
NS_IMETHOD SetAnonymousIntAttribute(const char *attrname, PRUint32 value);
|
||||
NS_IMETHOD GetAnonymousIntAttribute(const char *attrname, PRUint32* value);
|
||||
NS_IMETHOD SetAnonymousBoolAttribute(const char *attrname, PRBool value);
|
||||
NS_IMETHOD GetAnonymousBoolAttribute(const char *attrname, PRBool* value);
|
||||
NS_IMETHOD AddAnonymousAttributesToDB();
|
||||
NS_IMETHOD RemoveAnonymousAttributesFromDB();
|
||||
NS_IMETHOD AddAnonymousAttributesFromCard(nsIAbCard *card);
|
||||
NS_IMETHOD RemoveAnonymousAttributesFromCard(nsIAbCard *card);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// nsAddrDatabase methods:
|
||||
|
@ -106,19 +113,6 @@ public:
|
|||
|
||||
static nsAddrDatabase* FindInCache(nsFileSpec *dbName);
|
||||
|
||||
//helper function to fill in nsStrings from hdr row cell contents.
|
||||
nsresult RowCellColumnTonsString(nsIMdbRow *row, mdb_token columnToken, nsString &resultStr);
|
||||
nsresult RowCellColumnToUInt32(nsIMdbRow *row, mdb_token columnToken, PRUint32 *uint32Result);
|
||||
nsresult RowCellColumnToUInt32(nsIMdbRow *row, mdb_token columnToken, PRUint32 &uint32Result);
|
||||
nsresult RowCellColumnToMime2EncodedString(nsIMdbRow *row, mdb_token columnToken, nsString &resultStr);
|
||||
nsresult RowCellColumnToCollationKey(nsIMdbRow *row, mdb_token columnToken, nsString &resultStr);
|
||||
|
||||
// helper functions to put values in cells for the passed-in row
|
||||
nsresult UInt32ToRowCellColumn(nsIMdbRow *row, mdb_token columnToken, PRUint32 value);
|
||||
// helper functions to copy an nsString to a yarn, int32 to yarn, and vice versa.
|
||||
static void YarnTonsString(struct mdbYarn *yarn, nsString *str);
|
||||
static void YarnToUInt32(struct mdbYarn *yarn, PRUint32 *i);
|
||||
|
||||
static void CleanupCache();
|
||||
|
||||
nsresult CreateABCard(nsIMdbRow* cardRow, nsIAbCard **result);
|
||||
|
@ -139,14 +133,20 @@ protected:
|
|||
#endif
|
||||
|
||||
|
||||
mdb_err AddCardColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* str);
|
||||
void YarnToUInt32(struct mdbYarn *yarn, PRUint32 *pResult);
|
||||
mdb_err AddStringColumn(nsIMdbRow* cardRow, mdb_column inColumn, char* 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,
|
||||
PRUint32* pValue, PRUint32 defaultValue);
|
||||
nsresult GetBoolColumn(nsIMdbRow *cardRow, mdb_token outToken, PRBool* pValue);
|
||||
nsresult GetCardFromDB(nsIAbCard *newCard, nsIMdbRow* cardRow);
|
||||
nsresult GetAnonymousAttributesFromDB();
|
||||
nsresult AddAttributeColumnsToRow(nsIAbCard *card, nsIMdbRow *cardRow);
|
||||
nsresult RemoveAnonymousAttrubutesList();
|
||||
nsresult RemoveAnonymousValuesList();
|
||||
|
||||
nsresult RemoveAnonymousList(nsVoidArray* pArray);
|
||||
nsresult SetAnonymousAttribute(nsVoidArray** pAttrAray,
|
||||
nsVoidArray** pValueArray, void *attrname, void *value);
|
||||
nsresult DoAnonymousAttributesTransaction(PRBool bAdd);
|
||||
|
||||
static nsVoidArray/*<nsAddrDatabase>*/* GetDBCache();
|
||||
static nsVoidArray/*<nsAddrDatabase>*/* m_dbCache;
|
||||
|
@ -168,8 +168,12 @@ protected:
|
|||
|
||||
nsIMdbTable *m_mdbAnonymousTable;
|
||||
mdb_kind m_AnonymousTableKind;
|
||||
nsVoidArray* m_pAnonymousAttributes;
|
||||
nsVoidArray* m_pAnonymousValues;
|
||||
nsVoidArray* m_pAnonymousStrAttributes;
|
||||
nsVoidArray* m_pAnonymousStrValues;
|
||||
nsVoidArray* m_pAnonymousIntAttributes;
|
||||
nsVoidArray* m_pAnonymousIntValues;
|
||||
nsVoidArray* m_pAnonymousBoolAttributes;
|
||||
nsVoidArray* m_pAnonymousBoolValues;
|
||||
|
||||
mdb_kind m_PabTableKind;
|
||||
mdb_kind m_HistoryTableKind;
|
||||
|
|
|
@ -1187,7 +1187,7 @@ static PRBool dir_ValidateAndAddNewServer(nsVoidArray *wholeList, const char *fu
|
|||
{
|
||||
PRBool rc = PR_FALSE;
|
||||
|
||||
char *endname = XP_STRCHR(&fullprefname[PL_strlen(PREF_LDAP_SERVER_TREE_NAME) + 1], '.');
|
||||
const char *endname = XP_STRCHR(&fullprefname[PL_strlen(PREF_LDAP_SERVER_TREE_NAME) + 1], '.');
|
||||
if (endname)
|
||||
{
|
||||
char *prefname = (char *)PR_Malloc(endname - fullprefname + 1);
|
||||
|
|
Загрузка…
Ссылка в новой задаче