mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 05:45:37 +00:00
Bug 44831 Drop down list in New Mailing List window doesn't display the Address Book names. r=putterman
This commit is contained in:
parent
e5dab4596d
commit
6610b74192
@ -44,9 +44,11 @@ Rights Reserved.
|
||||
<template>
|
||||
<rule>
|
||||
<treechildren>
|
||||
<treeitem uri="...">
|
||||
<treeitem uri="..."
|
||||
IsMailList="rdf:http://home.netscape.com/NC-rdf#IsMailList">
|
||||
<treerow>
|
||||
<treecell indent="true" class="treecell-indent" value="rdf:http://home.netscape.com/NC-rdf#DirName"/>
|
||||
<treecell indent="true" class="treecell-indent" value="rdf:http://home.netscape.com/NC-rdf#DirName"
|
||||
IsMailList="rdf:http://home.netscape.com/NC-rdf#IsMailList"/>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
|
@ -27,6 +27,7 @@ Rights Reserved.
|
||||
<!DOCTYPE window SYSTEM "chrome://messenger/locale/addressbook/abMailListDialog.dtd">
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
xmlns:nc="http://home.netscape.com/NC-rdf#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
title="&mailListWindow.title;"
|
||||
class="dialog"
|
||||
@ -45,9 +46,11 @@ Rights Reserved.
|
||||
<menulist id="abPopup">
|
||||
<menupopup id="abPopup-menupopup" ref="abdirectory://" datasources="rdf:addressdirectory">
|
||||
<template>
|
||||
<rule nc:IsMailList="false">
|
||||
<menuitem uri="..."
|
||||
value="rdf:http://home.netscape.com/NC-rdf#DirName"
|
||||
data="rdf:http://home.netscape.com/NC-rdf#DirUri"/>
|
||||
</rule>
|
||||
</template>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
|
@ -28,6 +28,7 @@ Rights Reserved.
|
||||
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
xmlns:nc="http://home.netscape.com/NC-rdf#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
title="&editcardWindow.title;"
|
||||
onload="OnLoadNewCard()"
|
||||
@ -42,9 +43,11 @@ Rights Reserved.
|
||||
<menulist id="abPopup">
|
||||
<menupopup id="abPopup-menupopup" ref="abdirectory://" datasources="rdf:addressdirectory">
|
||||
<template>
|
||||
<menuitem uri="..."
|
||||
value="rdf:http://home.netscape.com/NC-rdf#DirName"
|
||||
data="rdf:http://home.netscape.com/NC-rdf#DirUri"/>
|
||||
<rule nc:IsMailList="false">
|
||||
<menuitem uri="..."
|
||||
value="rdf:http://home.netscape.com/NC-rdf#DirName"
|
||||
data="rdf:http://home.netscape.com/NC-rdf#DirUri"/>
|
||||
</rule>
|
||||
</template>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
|
@ -57,28 +57,31 @@ static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
||||
// Utilities
|
||||
|
||||
|
||||
void nsAbRDFDataSource::createNode(nsString& str, nsIRDFNode **node)
|
||||
nsresult nsAbRDFDataSource::createNode(nsString& str, nsIRDFNode **node)
|
||||
{
|
||||
*node = nsnull;
|
||||
nsresult rv;
|
||||
NS_WITH_SERVICE(nsIRDFService, rdf, kRDFServiceCID, &rv);
|
||||
if (NS_FAILED(rv)) return; // always check this before proceeding
|
||||
nsIRDFLiteral * value;
|
||||
if (NS_SUCCEEDED(rdf->GetLiteral(str.GetUnicode(), &value)))
|
||||
if (NS_FAILED(rv)) return rv; // always check this before proceeding
|
||||
nsCOMPtr<nsIRDFLiteral> value;
|
||||
rv = rdf->GetLiteral(str.GetUnicode(), getter_AddRefs(value));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
*node = value;
|
||||
NS_IF_ADDREF(*node);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
void nsAbRDFDataSource::createNode(PRUint32 value, nsIRDFNode **node)
|
||||
nsresult nsAbRDFDataSource::createNode(PRUint32 value, nsIRDFNode **node)
|
||||
{
|
||||
char *valueStr = PR_smprintf("%d", value);
|
||||
nsString str; str.AssignWithConversion(valueStr);
|
||||
createNode(str, node);
|
||||
PR_smprintf_free(valueStr);
|
||||
nsresult rv;
|
||||
nsAutoString str;
|
||||
str.AppendInt((PRInt32)value);
|
||||
rv = createNode(str, node);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
PRBool nsAbRDFDataSource::changeEnumFunc(nsISupports *aElement, void *aData)
|
||||
{
|
||||
nsAbRDFNotification* note = (nsAbRDFNotification *)aData;
|
||||
|
@ -53,8 +53,8 @@ public:
|
||||
|
||||
protected:
|
||||
|
||||
void createNode(nsString& str, nsIRDFNode **node);
|
||||
void createNode(PRUint32 value, nsIRDFNode **node);
|
||||
nsresult createNode(nsString& str, nsIRDFNode **node);
|
||||
nsresult createNode(PRUint32 value, nsIRDFNode **node);
|
||||
|
||||
nsresult NotifyPropertyChanged(nsIRDFResource *resource, nsIRDFResource *propertyResource,
|
||||
const PRUnichar *oldValue, const PRUnichar *newValue);
|
||||
|
@ -58,6 +58,7 @@ nsIRDFResource* nsAbDirectoryDataSource::kNC_Child = nsnull;
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_DirName = nsnull;
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_CardChild = nsnull;
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_DirUri = nsnull;
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_IsMailList = nsnull;
|
||||
|
||||
// commands
|
||||
nsIRDFResource* nsAbDirectoryDataSource::kNC_Delete = nsnull;
|
||||
@ -68,6 +69,7 @@ nsIRDFResource* nsAbDirectoryDataSource::kNC_NewDirectory = nsnull;
|
||||
#define NC_RDF_DIRNAME "http://home.netscape.com/NC-rdf#DirName"
|
||||
#define NC_RDF_CARDCHILD "http://home.netscape.com/NC-rdf#CardChild"
|
||||
#define NC_RDF_DIRURI "http://home.netscape.com/NC-rdf#DirUri"
|
||||
#define NC_RDF_ISMAILLIST "http://home.netscape.com/NC-rdf#IsMailList"
|
||||
|
||||
//Directory Commands
|
||||
#define NC_RDF_DELETE "http://home.netscape.com/NC-rdf#Delete"
|
||||
@ -102,6 +104,7 @@ nsAbDirectoryDataSource::~nsAbDirectoryDataSource (void)
|
||||
NS_RELEASE2(kNC_DirName, refcnt);
|
||||
NS_RELEASE2(kNC_CardChild, refcnt);
|
||||
NS_RELEASE2(kNC_DirUri, refcnt);
|
||||
NS_RELEASE2(kNC_IsMailList, refcnt);
|
||||
|
||||
NS_RELEASE2(kNC_Delete, refcnt);
|
||||
NS_RELEASE2(kNC_DeleteCards, refcnt);
|
||||
@ -134,12 +137,15 @@ nsAbDirectoryDataSource::Init()
|
||||
mRDFService->GetResource(NC_RDF_DIRNAME, &kNC_DirName);
|
||||
mRDFService->GetResource(NC_RDF_CARDCHILD, &kNC_CardChild);
|
||||
mRDFService->GetResource(NC_RDF_DIRURI, &kNC_DirUri);
|
||||
mRDFService->GetResource(NC_RDF_ISMAILLIST, &kNC_IsMailList);
|
||||
|
||||
mRDFService->GetResource(NC_RDF_DELETE, &kNC_Delete);
|
||||
mRDFService->GetResource(NC_RDF_DELETECARDS, &kNC_DeleteCards);
|
||||
mRDFService->GetResource(NC_RDF_NEWDIRECTORY, &kNC_NewDirectory);
|
||||
}
|
||||
|
||||
CreateLiterals(mRDFService);
|
||||
|
||||
DIR_GetDirServers();
|
||||
|
||||
mInitialized = PR_TRUE;
|
||||
@ -220,7 +226,9 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source,
|
||||
*targets = cursor;
|
||||
return NS_OK;
|
||||
}
|
||||
else if((kNC_DirName == property))
|
||||
else if((kNC_DirName == property) ||
|
||||
(kNC_DirUri == property) ||
|
||||
(kNC_IsMailList == property))
|
||||
{
|
||||
nsSingletonEnumerator* cursor =
|
||||
new nsSingletonEnumerator(property);
|
||||
@ -245,16 +253,6 @@ NS_IMETHODIMP nsAbDirectoryDataSource::GetTargets(nsIRDFResource* source,
|
||||
*targets = cursor;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
else if((kNC_DirUri == property))
|
||||
{
|
||||
nsSingletonEnumerator* cursor =
|
||||
new nsSingletonEnumerator(property);
|
||||
if (cursor == nsnull)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ADDREF(cursor);
|
||||
*targets = cursor;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
return NS_NewEmptyEnumerator(targets);
|
||||
@ -298,7 +296,8 @@ nsAbDirectoryDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc
|
||||
*result = (aArc == kNC_DirName ||
|
||||
aArc == kNC_Child ||
|
||||
aArc == kNC_CardChild ||
|
||||
aArc == kNC_DirUri);
|
||||
aArc == kNC_DirUri ||
|
||||
aArc == kNC_IsMailList);
|
||||
}
|
||||
else {
|
||||
*result = PR_FALSE;
|
||||
@ -347,6 +346,7 @@ nsAbDirectoryDataSource::getDirectoryArcLabelsOut(nsIAbDirectory *directory,
|
||||
(*arcs)->AppendElement(kNC_Child);
|
||||
(*arcs)->AppendElement(kNC_CardChild);
|
||||
(*arcs)->AppendElement(kNC_DirUri);
|
||||
(*arcs)->AppendElement(kNC_IsMailList);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -522,6 +522,8 @@ nsresult nsAbDirectoryDataSource::createDirectoryNode(nsIAbDirectory* directory,
|
||||
rv = createDirectoryUriNode(directory, target);
|
||||
if ((kNC_Child == property))
|
||||
rv = createDirectoryChildNode(directory, target);
|
||||
if ((kNC_IsMailList == property))
|
||||
rv = createDirectoryIsMailListNode(directory, target);
|
||||
|
||||
return rv;
|
||||
}
|
||||
@ -595,6 +597,36 @@ nsAbDirectoryDataSource::createDirectoryChildNode(nsIAbDirectory *directory,
|
||||
return NS_RDF_NO_VALUE;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsAbDirectoryDataSource::createDirectoryIsMailListNode(nsIAbDirectory* directory,
|
||||
nsIRDFNode **target)
|
||||
{
|
||||
nsresult rv;
|
||||
PRBool bIsMailList = PR_FALSE;
|
||||
rv = directory->GetIsMailList(&bIsMailList);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
*target = nsnull;
|
||||
|
||||
nsString nameString;
|
||||
if (bIsMailList)
|
||||
*target = kTrueLiteral;
|
||||
else
|
||||
*target = kFalseLiteral;
|
||||
NS_IF_ADDREF(*target);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsAbDirectoryDataSource::CreateLiterals(nsIRDFService *rdf)
|
||||
{
|
||||
nsAutoString str; str.AssignWithConversion("true");
|
||||
createNode(str, getter_AddRefs(kTrueLiteral));
|
||||
str.AssignWithConversion("false");
|
||||
createNode(str, getter_AddRefs(kFalseLiteral));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsAbDirectoryDataSource::DoDeleteFromDirectory(nsISupportsArray *parentDirs, nsISupportsArray *delDirs)
|
||||
{
|
||||
PRUint32 item, itemCount;
|
||||
@ -701,6 +733,13 @@ nsresult nsAbDirectoryDataSource::DoDirectoryHasAssertion(nsIAbDirectory *direct
|
||||
if(NS_SUCCEEDED(rv))
|
||||
rv = directory->HasDirectory(newDirectory, hasAssertion);
|
||||
}
|
||||
else if ((kNC_IsMailList == property))
|
||||
{
|
||||
nsCOMPtr<nsIRDFResource> dirResource(do_QueryInterface(directory, &rv));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
rv = GetTargetHasAssertion(this, dirResource, property, tv, target, hasAssertion);
|
||||
}
|
||||
else
|
||||
*hasAssertion = PR_FALSE;
|
||||
|
||||
@ -708,6 +747,31 @@ nsresult nsAbDirectoryDataSource::DoDirectoryHasAssertion(nsIAbDirectory *direct
|
||||
|
||||
}
|
||||
|
||||
nsresult nsAbDirectoryDataSource::GetTargetHasAssertion(nsIRDFDataSource *dataSource, nsIRDFResource* dirResource,
|
||||
nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion)
|
||||
{
|
||||
nsresult rv;
|
||||
if(!hasAssertion)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsIRDFNode> currentTarget;
|
||||
|
||||
rv = dataSource->GetTarget(dirResource, property,tv, getter_AddRefs(currentTarget));
|
||||
if(NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsCOMPtr<nsIRDFLiteral> value1(do_QueryInterface(target));
|
||||
nsCOMPtr<nsIRDFLiteral> value2(do_QueryInterface(currentTarget));
|
||||
if(value1 && value2)
|
||||
//If the two values are equal then it has this assertion
|
||||
*hasAssertion = (value1 == value2);
|
||||
}
|
||||
else
|
||||
rv = NS_NOINTERFACE;
|
||||
|
||||
return rv;
|
||||
|
||||
}
|
||||
|
||||
nsresult NS_NewAbDirectoryDataSource(const nsIID& iid, void **result)
|
||||
{
|
||||
NS_PRECONDITION(result != nsnull, "null ptr");
|
||||
|
@ -101,6 +101,8 @@ protected:
|
||||
nsIRDFNode **target);
|
||||
nsresult createDirectoryChildNode(nsIAbDirectory *directory,
|
||||
nsIRDFNode **target);
|
||||
nsresult createDirectoryIsMailListNode(nsIAbDirectory *directory,
|
||||
nsIRDFNode **target);
|
||||
static nsresult getDirectoryArcLabelsOut(nsIAbDirectory *directory,
|
||||
nsISupportsArray **arcs);
|
||||
|
||||
@ -116,18 +118,24 @@ protected:
|
||||
PRBool tv, PRBool *hasAssertion);
|
||||
nsresult DoNewDirectory(nsIAbDirectory *directory, nsISupportsArray *arguments);
|
||||
|
||||
nsresult CreateLiterals(nsIRDFService *rdf);
|
||||
nsresult GetTargetHasAssertion(nsIRDFDataSource *dataSource, nsIRDFResource* dirResource,
|
||||
nsIRDFResource *property,PRBool tv, nsIRDFNode *target,PRBool* hasAssertion);
|
||||
|
||||
static nsIRDFResource* kNC_Child;
|
||||
static nsIRDFResource* kNC_DirName;
|
||||
static nsIRDFResource* kNC_CardChild;
|
||||
static nsIRDFResource* kNC_DirUri;
|
||||
static nsIRDFResource* kNC_MailList;
|
||||
static nsIRDFResource* kNC_IsMailList;
|
||||
|
||||
// commands
|
||||
static nsIRDFResource* kNC_Delete;
|
||||
static nsIRDFResource* kNC_DeleteCards;
|
||||
static nsIRDFResource* kNC_NewDirectory;
|
||||
|
||||
//Cached literals
|
||||
nsCOMPtr<nsIRDFNode> kTrueLiteral;
|
||||
nsCOMPtr<nsIRDFNode> kFalseLiteral;
|
||||
};
|
||||
|
||||
PR_EXTERN(nsresult) NS_NewAbDirectoryDataSource(const nsIID& iid, void **result);
|
||||
|
Loading…
Reference in New Issue
Block a user