more checkins for the new subscribe dialog.

make it so only subscribable servers show up in the server picker.
make it so "newsgroup" turns to "folder" if subscribing to imap.
do the basic wiring to imap servers are hooked in.
clean up my css.
This commit is contained in:
sspitzer%netscape.com 2000-04-25 01:30:30 +00:00
Родитель a76d125ae2
Коммит 02f1da358b
12 изменённых файлов: 125 добавлений и 50 удалений

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

@ -11,11 +11,31 @@ function Stop()
dump("we need to stop the news url that is running.\n"); dump("we need to stop the news url that is running.\n");
} }
var Bundle = srGetStrBundle("chrome://messenger/locale/subscribe.properties");
function SetServerTypeSpecificTextValues()
{
var serverType = GetMsgFolderFromUri(gServerURI).server.type;
dump("serverType="+serverType+"\n");
/* set the server specific ui elements */
var element = document.getElementById("foldertextlabel");
var stringName = "foldertextfor-" + serverType;
var stringval = Bundle.GetStringFromName(stringName);
element.setAttribute('value',stringval);
stringName = "foldersheaderfor-" + serverType;
stringval = Bundle.GetStringFromName(stringName);
element = document.getElementById("foldersheaderlabel");
element.setAttribute('value',stringval);
}
function onServerClick(event) function onServerClick(event)
{ {
var item = event.target; var item = event.target;
gServerURI = item.id; gServerURI = item.id;
SetServerTypeSpecificTextValues();
SetUpTree(); SetUpTree();
} }
@ -27,6 +47,8 @@ function SetUpServerMenu()
var menuitems = serverMenu.getElementsByAttribute("id", gServerURI); var menuitems = serverMenu.getElementsByAttribute("id", gServerURI);
serverMenu.selectedItem = menuitems[0]; serverMenu.selectedItem = menuitems[0];
SetServerTypeSpecificTextValues();
} }
var MySubscribeListener = { var MySubscribeListener = {

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

@ -19,8 +19,6 @@ Communications Corporation. Portions created by Netscape are
Rights Reserved. Rights Reserved.
--> -->
<?xml-stylesheet href="chrome://messenger/skin/messenger.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/folderPane.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/subscribe.css" type="text/css"?> <?xml-stylesheet href="chrome://messenger/skin/subscribe.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?> <?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
@ -39,6 +37,7 @@ Rights Reserved.
onload="SubscribeOnLoad()" onload="SubscribeOnLoad()"
style="padding:10px"> style="padding:10px">
<html:script language="JavaScript" src="chrome://global/content/strres.js"/>
<html:script language="JavaScript" src="chrome://messenger/content/widgetglue.js"/> <html:script language="JavaScript" src="chrome://messenger/content/widgetglue.js"/>
<html:script language="JavaScript" src="chrome://messenger/content/subscribe.js"/> <html:script language="JavaScript" src="chrome://messenger/content/subscribe.js"/>
@ -48,18 +47,22 @@ Rights Reserved.
<box orient="vertical" flex="100%"> <box orient="vertical" flex="100%">
<box orient="horizontal"> <box orient="horizontal">
<text value="&server.label;"/> <text value="&server.label;"/>
<menulist oncommand="onServerClick(event);" id="serverMenu"> <menulist oncommand="onServerClick(event);" id="serverMenu"
<menupopup rdf:datasources="rdf:msgaccountmanager" rdf:datasources="rdf:msgaccountmanager rdf:mailnewsfolders"
rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild"
rdf:containment="http://home.netscape.com/NC-rdf#child" rdf:containment="http://home.netscape.com/NC-rdf#child"
ref="msgaccounts:/"> ref="msgaccounts:/">
<template> <template>
<rule NC:CanSubscribe="true">
<menupopup>
<menuitem uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name"/> <menuitem uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name"/>
</template>
</menupopup> </menupopup>
</rule>
</template>
</menulist> </menulist>
</box> </box>
<box orient="horizontal" flex="100%"> <box orient="horizontal" flex="100%">
<text class="label" value="&folders.label;" for="name"/> <text id="foldertextlabel" class="label" value="..." for="name"/>
<textfield id="name"/> <textfield id="name"/>
</box> </box>
</box> </box>
@ -78,7 +81,7 @@ Rights Reserved.
<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">
<treerow> <treerow>
<treecell indent="true" class="treecell-indent" value="rdf:http://home.netscape.com/NC-rdf#Name"/> <treecell indent="true" class="treecell-indent" value="rdf:http://home.netscape.com/NC-rdf#Name"/>
<treecell allowevents="true" class="subscribedcol image" onclick="return top.ReverseStateFromNode(event.target.parentNode.parentNode.parentNode)"/> <treecell class="treecell-image subscribedcol" allowevents="true" onclick="return top.ReverseStateFromNode(event.target.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>
</treeitem> </treeitem>
@ -94,7 +97,7 @@ Rights Reserved.
<treehead> <treehead>
<treerow id="headRow"> <treerow id="headRow">
<treecell value="&foldersHeader.label;" /> <treecell id="foldersheaderlabel" value="..." />
<treecell value="&subscribedHeader.label;"/> <treecell value="&subscribedHeader.label;"/>
<treecell value="&messagesHeader.label;"/> <treecell value="&messagesHeader.label;"/>
</treerow> </treerow>

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

@ -4,6 +4,7 @@ threadpane.dtd
folderpane.dtd folderpane.dtd
newFolderNameDialog.dtd newFolderNameDialog.dtd
subscribe.dtd subscribe.dtd
subscribe.properties
subscribeDialog.dtd subscribeDialog.dtd
sidebar-messenger.dtd sidebar-messenger.dtd
sidebar-messenger-rdf.dtd sidebar-messenger-rdf.dtd

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

@ -35,6 +35,7 @@ EXPORT_RESOURCE_CONTENT = \
$(srcdir)/newFolderNameDialog.dtd \ $(srcdir)/newFolderNameDialog.dtd \
$(srcdir)/subscribeDialog.dtd \ $(srcdir)/subscribeDialog.dtd \
$(srcdir)/subscribe.dtd \ $(srcdir)/subscribe.dtd \
$(srcdir)/subscribe.properties \
$(srcdir)/sidebar-messenger.dtd \ $(srcdir)/sidebar-messenger.dtd \
$(srcdir)/sidebar-messenger-rdf.dtd \ $(srcdir)/sidebar-messenger-rdf.dtd \
$(srcdir)/msgFolderPickerOverlay.dtd \ $(srcdir)/msgFolderPickerOverlay.dtd \

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

@ -34,6 +34,7 @@ install::
$(MAKE_INSTALL) newFolderNameDialog.dtd $(LOCALEDIR) $(MAKE_INSTALL) newFolderNameDialog.dtd $(LOCALEDIR)
$(MAKE_INSTALL) subscribeDialog.dtd $(LOCALEDIR) $(MAKE_INSTALL) subscribeDialog.dtd $(LOCALEDIR)
$(MAKE_INSTALL) subscribe.dtd $(LOCALEDIR) $(MAKE_INSTALL) subscribe.dtd $(LOCALEDIR)
$(MAKE_INSTALL) subscribe.properties $(LOCALEDIR)
$(MAKE_INSTALL) sidebar-messenger.dtd $(LOCALEDIR) $(MAKE_INSTALL) sidebar-messenger.dtd $(LOCALEDIR)
$(MAKE_INSTALL) sidebar-messenger-rdf.dtd $(LOCALEDIR) $(MAKE_INSTALL) sidebar-messenger-rdf.dtd $(LOCALEDIR)
$(MAKE_INSTALL) msgFolderPickerOverlay.dtd $(LOCALEDIR) $(MAKE_INSTALL) msgFolderPickerOverlay.dtd $(LOCALEDIR)

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

@ -22,8 +22,6 @@ Rights Reserved.
<!ENTITY unsubscribeButton.label "Unsubscribe"> <!ENTITY unsubscribeButton.label "Unsubscribe">
<!ENTITY refreshButton.label "Refresh"> <!ENTITY refreshButton.label "Refresh">
<!ENTITY stopButton.label "Stop"> <!ENTITY stopButton.label "Stop">
<!ENTITY folders.label "Newsgroup:">
<!ENTITY server.label "Server:"> <!ENTITY server.label "Server:">
<!ENTITY foldersHeader.label "newsgroup"> <!ENTITY subscribedHeader.label "Subscribe">
<!ENTITY subscribedHeader.label "subscribed"> <!ENTITY messagesHeader.label "Messages">
<!ENTITY messagesHeader.label "messages">

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

@ -18,10 +18,12 @@
* Rights Reserved. * Rights Reserved.
*/ */
treeitem[Subscribed="false"] > treerow > treecell.subscribedcol > .tree-button { @import url(chrome://global/skin/global.css);
.subscribedcol {
list-style-image: url("chrome://messenger/skin/dot.gif"); list-style-image: url("chrome://messenger/skin/dot.gif");
} }
treeitem[Subscribed="true"] > treerow > treecell.subscribedcol > .tree-button { .subscribedcol[value="true"] {
list-style-image: url("chrome://messenger/skin/check.gif"); list-style-image: url("chrome://messenger/skin/check.gif");
} }

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

@ -18,6 +18,11 @@
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* David Bienvenu <bienvenu@netscape.com>
* Jeff Tsai <jefft@netscape.com>
* Scott MacGregor <mscott@netscape.com>
* Seth Spitzer <sspitzer@netscape.com>
* Alecf Flett <alecf@netscape.com>
* Pierre Phaneuf <pp@ludusdesign.com> * Pierre Phaneuf <pp@ludusdesign.com>
*/ */
@ -66,32 +71,12 @@ static NS_DEFINE_CID(kMsgLogonRedirectorServiceCID, NS_MSGLOGONREDIRECTORSERVICE
NS_IMPL_ADDREF_INHERITED(nsImapIncomingServer, nsMsgIncomingServer) NS_IMPL_ADDREF_INHERITED(nsImapIncomingServer, nsMsgIncomingServer)
NS_IMPL_RELEASE_INHERITED(nsImapIncomingServer, nsMsgIncomingServer) NS_IMPL_RELEASE_INHERITED(nsImapIncomingServer, nsMsgIncomingServer)
NS_IMETHODIMP nsImapIncomingServer::QueryInterface(REFNSIID aIID, void** aInstancePtr) NS_INTERFACE_MAP_BEGIN(nsImapIncomingServer)
{ NS_INTERFACE_MAP_ENTRY(nsIImapServerSink)
if (!aInstancePtr) return NS_ERROR_NULL_POINTER; NS_INTERFACE_MAP_ENTRY(nsIImapIncomingServer)
*aInstancePtr = nsnull; NS_INTERFACE_MAP_ENTRY(nsIMsgLogonRedirectionRequester)
NS_INTERFACE_MAP_ENTRY(nsISubscribableServer)
if (aIID.Equals(NS_GET_IID(nsIImapServerSink))) NS_INTERFACE_MAP_END_INHERITING(nsMsgIncomingServer)
{
*aInstancePtr = NS_STATIC_CAST(nsIImapServerSink*, this);
}
else if(aIID.Equals(NS_GET_IID(nsIImapIncomingServer)))
{
*aInstancePtr = NS_STATIC_CAST(nsIImapIncomingServer*, this);
}
else if (aIID.Equals(NS_GET_IID(nsIMsgLogonRedirectionRequester)))
{
*aInstancePtr = NS_STATIC_CAST(nsIMsgLogonRedirectionRequester*, this);
}
if(*aInstancePtr)
{
AddRef();
return NS_OK;
}
return nsMsgIncomingServer::QueryInterface(aIID, aInstancePtr);
}
nsImapIncomingServer::nsImapIncomingServer() nsImapIncomingServer::nsImapIncomingServer()
{ {
@ -1762,3 +1747,32 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionReply(const PRUnichar *pHo
return rv; return rv;
} }
NS_IMETHODIMP
nsImapIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow)
{
nsresult rv;
#ifdef DEBUG_sspitzer
printf("in PopulateSubscribeDatasource()\n");
#endif
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::SetSubscribeListener(nsISubscribeListener *aListener)
{
if (!aListener) return NS_ERROR_NULL_POINTER;
mSubscribeListener = aListener;
return NS_OK;
}
NS_IMETHODIMP
nsImapIncomingServer::GetSubscribeListener(nsISubscribeListener **aListener)
{
if (!aListener) return NS_ERROR_NULL_POINTER;
if (mSubscribeListener) {
*aListener = mSubscribeListener;
NS_ADDREF(*aListener);
}
return NS_OK;
}

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

@ -30,12 +30,14 @@
#include "nsIImapServerSink.h" #include "nsIImapServerSink.h"
#include "nsIStringBundle.h" #include "nsIStringBundle.h"
#include "nsIMsgLogonRedirector.h" #include "nsIMsgLogonRedirector.h"
#include "nsISubscribableServer.h"
/* get some implementation from nsMsgIncomingServer */ /* get some implementation from nsMsgIncomingServer */
class nsImapIncomingServer : public nsMsgIncomingServer, class nsImapIncomingServer : public nsMsgIncomingServer,
public nsIImapIncomingServer, public nsIImapIncomingServer,
public nsIImapServerSink, public nsIImapServerSink,
public nsIMsgLogonRedirectionRequester public nsIMsgLogonRedirectionRequester,
public nsISubscribableServer
{ {
public: public:
@ -51,6 +53,7 @@ public:
NS_DECL_NSIIMAPINCOMINGSERVER NS_DECL_NSIIMAPINCOMINGSERVER
NS_DECL_NSIIMAPSERVERSINK NS_DECL_NSIIMAPSERVERSINK
NS_DECL_NSIMSGLOGONREDIRECTIONREQUESTER NS_DECL_NSIMSGLOGONREDIRECTIONREQUESTER
NS_DECL_NSISUBSCRIBABLESERVER
NS_IMETHOD PerformBiff(); NS_IMETHOD PerformBiff();
NS_IMETHOD CloseCachedConnections(); NS_IMETHOD CloseCachedConnections();
@ -82,6 +85,7 @@ private:
PRBool m_waitingForConnectionInfo; PRBool m_waitingForConnectionInfo;
PRInt32 m_redirectedLogonRetries; PRInt32 m_redirectedLogonRetries;
nsCOMPtr<nsIMsgLogonRedirector> m_logonRedirector; nsCOMPtr<nsIMsgLogonRedirector> m_logonRedirector;
nsCOMPtr <nsISubscribeListener> mSubscribeListener;
}; };

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

@ -1081,6 +1081,21 @@ nsImapMailFolder::GetCanCreateSubfolders(PRBool *aResult)
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP
nsImapMailFolder::GetCanSubscribe(PRBool *aResult)
{
NS_ENSURE_ARG_POINTER(aResult);
*aResult = PR_FALSE;
PRBool isImapServer = PR_FALSE;
nsresult rv = GetIsServer(&isImapServer);
if (NS_FAILED(rv)) return rv;
// you can only subscribe to imap servers, not imap folders
*aResult = isImapServer;
return NS_OK;
}
nsresult nsImapMailFolder::GetServerKey(char **serverKey) nsresult nsImapMailFolder::GetServerKey(char **serverKey)
{ {
// look for matching imap folders, then pop folders // look for matching imap folders, then pop folders

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

@ -140,6 +140,7 @@ public:
NS_IMETHOD GetSizeOnDisk(PRUint32 * size); NS_IMETHOD GetSizeOnDisk(PRUint32 * size);
NS_IMETHOD GetCanCreateSubfolders(PRBool *aResult); NS_IMETHOD GetCanCreateSubfolders(PRBool *aResult);
NS_IMETHOD GetCanSubscribe(PRBool *aResult);
NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *authenticate); NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *authenticate);
NS_IMETHOD RememberPassword(const char *password); NS_IMETHOD RememberPassword(const char *password);

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

@ -18,6 +18,8 @@
* Rights Reserved. * Rights Reserved.
* *
* Contributor(s): * Contributor(s):
* Seth Spitzer <sspitzer@netscape.com>
* David Bienvenu <bienvenu@netscape.com>
*/ */
#include "nsNntpIncomingServer.h" #include "nsNntpIncomingServer.h"
@ -517,7 +519,7 @@ nsNntpIncomingServer::SetNewsgroupAsSubscribed(const char *aName)
NS_ASSERTION(aName,"newsgroup with no name"); NS_ASSERTION(aName,"newsgroup with no name");
if (!aName) return NS_ERROR_FAILURE; if (!aName) return NS_ERROR_FAILURE;
#ifdef DEBUG_NEWS #ifdef DEBUG_sspitzer
printf("SetNewsgroupAsSubscribed(%s)\n",aName); printf("SetNewsgroupAsSubscribed(%s)\n",aName);
#endif #endif
nsXPIDLCString serverUri; nsXPIDLCString serverUri;
@ -602,6 +604,9 @@ nsNntpIncomingServer::AddNewNewsgroup(const char *aName)
nsCOMPtr<nsIRDFResource> newsgroupResource; nsCOMPtr<nsIRDFResource> newsgroupResource;
rv = rdfService->GetResource((const char *) groupUri, getter_AddRefs(newsgroupResource)); rv = rdfService->GetResource((const char *) groupUri, getter_AddRefs(newsgroupResource));
#ifdef DEBUG_sspitzer
printf("child=%s\n",(const char *)groupUri);
#endif
nsCOMPtr<nsIRDFLiteral> nameLiteral; nsCOMPtr<nsIRDFLiteral> nameLiteral;
nsAutoString nameString; nameString.AssignWithConversion(aName); nsAutoString nameString; nameString.AssignWithConversion(aName);
@ -642,10 +647,16 @@ nsNntpIncomingServer::AddNewNewsgroup(const char *aName)
if (dotpos > slashpos) { if (dotpos > slashpos) {
groupUri.Truncate(dotpos); groupUri.Truncate(dotpos);
#ifdef DEBUG_sspitzer
printf("parent=%s\n\n",(const char *)groupUri);
#endif
rv = rdfService->GetResource((const char *)groupUri, getter_AddRefs(parent)); rv = rdfService->GetResource((const char *)groupUri, getter_AddRefs(parent));
if(NS_FAILED(rv)) return rv; if(NS_FAILED(rv)) return rv;
} }
else { else {
#ifdef DEBUG_sspitzer
printf("parent=%s\n\n",(const char *)serverUri);
#endif
rv = rdfService->GetResource((const char *)serverUri, getter_AddRefs(parent)); rv = rdfService->GetResource((const char *)serverUri, getter_AddRefs(parent));
if(NS_FAILED(rv)) return rv; if(NS_FAILED(rv)) return rv;
} }
@ -848,7 +859,9 @@ NS_IMETHODIMP
nsNntpIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow) nsNntpIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow)
{ {
nsresult rv; nsresult rv;
#ifdef DEBUG_sspitzer
printf("in PopulateSubscribeDatasource()\n"); printf("in PopulateSubscribeDatasource()\n");
#endif
nsCOMPtr<nsINntpService> nntpService = do_GetService(kNntpServiceCID, &rv); nsCOMPtr<nsINntpService> nntpService = do_GetService(kNntpServiceCID, &rv);
if (NS_FAILED(rv)) return rv; if (NS_FAILED(rv)) return rv;
if (!nntpService) return NS_ERROR_FAILURE; if (!nntpService) return NS_ERROR_FAILURE;