fix for #39398. need icons in the tree and the menu list in the subscribe dialog. sr=bienvenu,syd.

This commit is contained in:
sspitzer%netscape.com 2000-12-02 03:14:41 +00:00
parent 885d29d0b4
commit 14e422f3fc
7 changed files with 187 additions and 7 deletions

View File

@ -65,7 +65,7 @@ Rights Reserved.
<template> <template>
<rule NC:CanSubscribe="true"> <rule NC:CanSubscribe="true">
<menupopup> <menupopup>
<menuitem uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name"/> <menuitem class="subscribeMenuItem menuitem-iconic" uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name" ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType" IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"/>
</menupopup> </menupopup>
</rule> </rule>
</template> </template>
@ -91,9 +91,9 @@ Rights Reserved.
<template> <template>
<rule> <rule>
<treechildren flex="1"> <treechildren flex="1">
<treeitem uri="..." name="rdf:http://home.netscape.com/NC-rdf#Name" Subscribed="rdf:http://home.netscape.com/NC-rdf#Subscribed"> <treeitem uri="..." name="rdf:http://home.netscape.com/NC-rdf#Name" Subscribed="rdf:http://home.netscape.com/NC-rdf#Subscribed" ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
<treerow> <treerow>
<treecell indent="true" class="treecell-indent" value="rdf:http://home.netscape.com/NC-rdf#LeafName"/> <treecell indent="true" class="treecell-indent tree-cell-subscribe-icon" value="rdf:http://home.netscape.com/NC-rdf#LeafName" ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
<treecell class="treecell-image subscribedcol" allowevents="true" onclick="return top.ReverseStateFromNode(event.originalTarget.parentNode.parentNode.parentNode)" value="rdf:http://home.netscape.com/NC-rdf#Subscribed"/> <treecell class="treecell-image subscribedcol" allowevents="true" onclick="return top.ReverseStateFromNode(event.originalTarget.parentNode.parentNode.parentNode)" value="rdf:http://home.netscape.com/NC-rdf#Subscribed"/>
<treecell value="rdf:http://home.netscape.com/NC-rdf#TotalMessages"/> <treecell value="rdf:http://home.netscape.com/NC-rdf#TotalMessages"/>
</treerow> </treerow>

View File

@ -81,6 +81,9 @@ nsSubscribeDataSource::Init()
rv = mRDFService->GetResource(NC_NAMESPACE_URI "Subscribed",getter_AddRefs(kNC_Subscribed)); rv = mRDFService->GetResource(NC_NAMESPACE_URI "Subscribed",getter_AddRefs(kNC_Subscribed));
NS_ENSURE_SUCCESS(rv,rv); NS_ENSURE_SUCCESS(rv,rv);
rv = mRDFService->GetResource(NC_NAMESPACE_URI "ServerType",getter_AddRefs(kNC_ServerType));
NS_ENSURE_SUCCESS(rv,rv);
rv = mRDFService->GetLiteral(NS_ConvertASCIItoUCS2("true").GetUnicode(),getter_AddRefs(kTrueLiteral)); rv = mRDFService->GetLiteral(NS_ConvertASCIItoUCS2("true").GetUnicode(),getter_AddRefs(kTrueLiteral));
NS_ENSURE_SUCCESS(rv,rv); NS_ENSURE_SUCCESS(rv,rv);
@ -187,6 +190,19 @@ nsSubscribeDataSource::GetTarget(nsIRDFResource *source,
return NS_OK; return NS_OK;
} }
} }
else if (property == kNC_ServerType.get()) {
nsXPIDLCString serverTypeStr;
rv = GetServerType(server, getter_Copies(serverTypeStr));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIRDFLiteral> serverType;
rv = mRDFService->GetLiteral(NS_ConvertASCIItoUCS2((const char *)serverTypeStr).GetUnicode(), getter_AddRefs(serverType));
NS_ENSURE_SUCCESS(rv,rv);
if (!serverType) rv = NS_RDF_NO_VALUE;
if (rv == NS_RDF_NO_VALUE) return(rv);
return serverType->QueryInterface(NS_GET_IID(nsIRDFNode), (void**) target);
}
else if (property == kNC_LeafName.get()) { else if (property == kNC_LeafName.get()) {
nsXPIDLString leafNameStr; nsXPIDLString leafNameStr;
rv = server->GetLeafName(relativePath, getter_Copies(leafNameStr)); rv = server->GetLeafName(relativePath, getter_Copies(leafNameStr));
@ -318,6 +334,22 @@ nsSubscribeDataSource::GetTargets(nsIRDFResource *source,
*targets = result; *targets = result;
return NS_OK; return NS_OK;
} }
else if (property == kNC_ServerType.get()) {
nsXPIDLCString serverTypeStr;
rv = GetServerType(server, getter_Copies(serverTypeStr));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIRDFLiteral> serverType;
rv = mRDFService->GetLiteral(NS_ConvertASCIItoUCS2((const char *)serverTypeStr).GetUnicode(), getter_AddRefs(serverType));
NS_ENSURE_SUCCESS(rv,rv);
nsISimpleEnumerator* result = new nsSingletonEnumerator(serverType);
if (!result) return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(result);
*targets = result;
return NS_OK;
}
else { else {
// do nothing // do nothing
} }
@ -366,6 +398,22 @@ nsSubscribeDataSource::Move(nsIRDFResource* aOldSource,
return NS_RDF_ASSERTION_REJECTED; return NS_RDF_ASSERTION_REJECTED;
} }
nsresult
nsSubscribeDataSource::GetServerType(nsISubscribableServer *server, char **serverType)
{
nsresult rv;
if (!server || !serverType) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIMsgIncomingServer> incomingServer(do_QueryInterface(server, &rv));
NS_ENSURE_SUCCESS(rv,rv);
if (!incomingServer) return NS_ERROR_FAILURE;
rv = incomingServer->GetType(serverType);
NS_ENSURE_SUCCESS(rv,rv);
return NS_OK;
}
nsresult nsresult
nsSubscribeDataSource::GetServerAndRelativePathFromResource(nsIRDFResource *source, nsISubscribableServer **server, char **relativePath) nsSubscribeDataSource::GetServerAndRelativePathFromResource(nsIRDFResource *source, nsISubscribableServer **server, char **relativePath)
{ {
@ -462,6 +510,10 @@ nsSubscribeDataSource::HasAssertion(nsIRDFResource *source,
// everything is subscribed or not // everything is subscribed or not
*hasAssertion = PR_TRUE; *hasAssertion = PR_TRUE;
} }
else if (property == kNC_ServerType.get()) {
// everything has a server type
*hasAssertion = PR_TRUE;
}
else { else {
// do nothing // do nothing
} }
@ -499,6 +551,7 @@ nsSubscribeDataSource::HasArcOut(nsIRDFResource *source, nsIRDFResource *aArc, P
} }
else if ((aArc == kNC_Subscribed.get()) || else if ((aArc == kNC_Subscribed.get()) ||
(aArc == kNC_LeafName.get()) || (aArc == kNC_LeafName.get()) ||
(aArc == kNC_ServerType.get()) ||
(aArc == kNC_Name.get())) { (aArc == kNC_Name.get())) {
*result = PR_TRUE; *result = PR_TRUE;
return NS_OK; return NS_OK;
@ -546,6 +599,7 @@ nsSubscribeDataSource::ArcLabelsOut(nsIRDFResource *source,
array->AppendElement(kNC_Subscribed); array->AppendElement(kNC_Subscribed);
array->AppendElement(kNC_Name); array->AppendElement(kNC_Name);
array->AppendElement(kNC_ServerType);
array->AppendElement(kNC_LeafName); array->AppendElement(kNC_LeafName);
PRBool hasChildren = PR_FALSE; PRBool hasChildren = PR_FALSE;

View File

@ -52,6 +52,7 @@ private:
nsCOMPtr <nsIRDFResource> kNC_Name; nsCOMPtr <nsIRDFResource> kNC_Name;
nsCOMPtr <nsIRDFResource> kNC_LeafName; nsCOMPtr <nsIRDFResource> kNC_LeafName;
nsCOMPtr <nsIRDFResource> kNC_Subscribed; nsCOMPtr <nsIRDFResource> kNC_Subscribed;
nsCOMPtr <nsIRDFResource> kNC_ServerType;
nsCOMPtr <nsIRDFLiteral> kTrueLiteral; nsCOMPtr <nsIRDFLiteral> kTrueLiteral;
nsCOMPtr <nsIRDFLiteral> kFalseLiteral; nsCOMPtr <nsIRDFLiteral> kFalseLiteral;
@ -60,6 +61,7 @@ private:
nsresult GetChildren(nsISubscribableServer *server, const char *relativePath, nsISimpleEnumerator** aResult); nsresult GetChildren(nsISubscribableServer *server, const char *relativePath, nsISimpleEnumerator** aResult);
nsresult GetServerAndRelativePathFromResource(nsIRDFResource *source, nsISubscribableServer **server, char **relativePath); nsresult GetServerAndRelativePathFromResource(nsIRDFResource *source, nsISubscribableServer **server, char **relativePath);
nsresult GetServerType(nsISubscribableServer *server, char **serverType);
static PRBool assertEnumFunc(nsISupports *aElement, void *aData); static PRBool assertEnumFunc(nsISupports *aElement, void *aData);
static PRBool unassertEnumFunc(nsISupports *aElement, void *aData); static PRBool unassertEnumFunc(nsISupports *aElement, void *aData);

View File

@ -25,3 +25,34 @@
.subscribedcol[value="true"] { .subscribedcol[value="true"] {
list-style-image: url("chrome://messenger/skin/check.gif"); list-style-image: url("chrome://messenger/skin/check.gif");
} }
/* icons (newsgroup or mail folder) for the tree */
.tree-cell-subscribe-icon
{
list-style-image: url("chrome://messenger/skin/folder-closed.gif");
}
.tree-cell-subscribe-icon[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/folder-newsgroup.gif");
}
/* for the server menu picker */
.subscribeMenuItem {
list-style-image: url("chrome://messenger/skin/server-mail.gif");
}
.subscribeMenuItem[ServerType="imap"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-remote-lock.gif");
}
.subscribeMenuItem[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/server-news.gif");
}
.subscribeMenuItem[ServerType="nntp"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-news-lock.gif");
}

View File

@ -25,3 +25,34 @@
.subscribedcol[value="true"] { .subscribedcol[value="true"] {
list-style-image: url("chrome://messenger/skin/check.gif"); list-style-image: url("chrome://messenger/skin/check.gif");
} }
/* icons (newsgroup or mail folder) for the tree */
.tree-cell-subscribe-icon
{
list-style-image: url("chrome://messenger/skin/folder-closed.gif");
}
.tree-cell-subscribe-icon[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/folder-newsgroup.gif");
}
/* for the server menu picker */
.subscribeMenuItem {
list-style-image: url("chrome://messenger/skin/server-mail.gif");
}
.subscribeMenuItem[ServerType="imap"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-remote-lock.gif");
}
.subscribeMenuItem[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/server-news.gif");
}
.subscribeMenuItem[ServerType="nntp"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-news-lock.gif");
}

View File

@ -25,3 +25,34 @@
.subscribedcol[value="true"] { .subscribedcol[value="true"] {
list-style-image: url("chrome://messenger/skin/check.gif"); list-style-image: url("chrome://messenger/skin/check.gif");
} }
/* icons (newsgroup or mail folder) for the tree */
.tree-cell-subscribe-icon
{
list-style-image: url("chrome://messenger/skin/folder-closed.gif");
}
.tree-cell-subscribe-icon[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/folder-newsgroup.gif");
}
/* for the server menu picker */
.subscribeMenuItem {
list-style-image: url("chrome://messenger/skin/server-mail.gif");
}
.subscribeMenuItem[ServerType="imap"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-remote-lock.gif");
}
.subscribeMenuItem[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/server-news.gif");
}
.subscribeMenuItem[ServerType="nntp"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-news-lock.gif");
}

View File

@ -25,3 +25,34 @@
.subscribedcol[value="true"] { .subscribedcol[value="true"] {
list-style-image: url("chrome://messenger/skin/check.gif"); list-style-image: url("chrome://messenger/skin/check.gif");
} }
/* icons (newsgroup or mail folder) for the tree */
.tree-cell-subscribe-icon
{
list-style-image: url("chrome://messenger/skin/folder-closed.gif");
}
.tree-cell-subscribe-icon[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/folder-newsgroup.gif");
}
/* for the server menu picker */
.subscribeMenuItem {
list-style-image: url("chrome://messenger/skin/server-mail.gif");
}
.subscribeMenuItem[ServerType="imap"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-remote-lock.gif");
}
.subscribeMenuItem[ServerType="nntp"] {
list-style-image: url("chrome://messenger/skin/server-news.gif");
}
.subscribeMenuItem[ServerType="nntp"][IsSecure="true"] {
list-style-image: url("chrome://messenger/skin/server-news-lock.gif");
}