From 02f1da358b1a62d741c808cd240682fc73ee4e27 Mon Sep 17 00:00:00 2001 From: "sspitzer%netscape.com" Date: Tue, 25 Apr 2000 01:30:30 +0000 Subject: [PATCH] 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. --- mailnews/base/resources/content/subscribe.js | 24 ++++++- mailnews/base/resources/content/subscribe.xul | 27 ++++---- mailnews/base/resources/locale/en-US/MANIFEST | 1 + .../base/resources/locale/en-US/Makefile.in | 1 + .../base/resources/locale/en-US/makefile.win | 1 + .../base/resources/locale/en-US/subscribe.dtd | 6 +- mailnews/base/resources/skin/subscribe.css | 6 +- mailnews/imap/src/nsImapIncomingServer.cpp | 66 +++++++++++-------- mailnews/imap/src/nsImapIncomingServer.h | 8 ++- mailnews/imap/src/nsImapMailFolder.cpp | 15 +++++ mailnews/imap/src/nsImapMailFolder.h | 1 + mailnews/news/src/nsNntpIncomingServer.cpp | 19 +++++- 12 files changed, 125 insertions(+), 50 deletions(-) diff --git a/mailnews/base/resources/content/subscribe.js b/mailnews/base/resources/content/subscribe.js index 9d10f8df7d6..59a3a90c1ed 100644 --- a/mailnews/base/resources/content/subscribe.js +++ b/mailnews/base/resources/content/subscribe.js @@ -11,11 +11,31 @@ function Stop() 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) { var item = event.target; gServerURI = item.id; + SetServerTypeSpecificTextValues(); SetUpTree(); } @@ -25,8 +45,10 @@ function SetUpServerMenu() var serverMenu = document.getElementById("serverMenu"); var menuitems = serverMenu.getElementsByAttribute("id", gServerURI); - + serverMenu.selectedItem = menuitems[0]; + + SetServerTypeSpecificTextValues(); } var MySubscribeListener = { diff --git a/mailnews/base/resources/content/subscribe.xul b/mailnews/base/resources/content/subscribe.xul index f362168af96..2e2ff50ede8 100644 --- a/mailnews/base/resources/content/subscribe.xul +++ b/mailnews/base/resources/content/subscribe.xul @@ -19,8 +19,6 @@ Communications Corporation. Portions created by Netscape are Rights Reserved. --> - - @@ -39,6 +37,7 @@ Rights Reserved. onload="SubscribeOnLoad()" style="padding:10px"> + @@ -48,18 +47,22 @@ Rights Reserved. - - - - + - + @@ -68,7 +71,7 @@ Rights Reserved. @@ -78,7 +81,7 @@ Rights Reserved. - + @@ -94,7 +97,7 @@ Rights Reserved. - + diff --git a/mailnews/base/resources/locale/en-US/MANIFEST b/mailnews/base/resources/locale/en-US/MANIFEST index d75760053ff..f111677292c 100644 --- a/mailnews/base/resources/locale/en-US/MANIFEST +++ b/mailnews/base/resources/locale/en-US/MANIFEST @@ -4,6 +4,7 @@ threadpane.dtd folderpane.dtd newFolderNameDialog.dtd subscribe.dtd +subscribe.properties subscribeDialog.dtd sidebar-messenger.dtd sidebar-messenger-rdf.dtd diff --git a/mailnews/base/resources/locale/en-US/Makefile.in b/mailnews/base/resources/locale/en-US/Makefile.in index 761505c590e..b63936da23b 100644 --- a/mailnews/base/resources/locale/en-US/Makefile.in +++ b/mailnews/base/resources/locale/en-US/Makefile.in @@ -35,6 +35,7 @@ EXPORT_RESOURCE_CONTENT = \ $(srcdir)/newFolderNameDialog.dtd \ $(srcdir)/subscribeDialog.dtd \ $(srcdir)/subscribe.dtd \ + $(srcdir)/subscribe.properties \ $(srcdir)/sidebar-messenger.dtd \ $(srcdir)/sidebar-messenger-rdf.dtd \ $(srcdir)/msgFolderPickerOverlay.dtd \ diff --git a/mailnews/base/resources/locale/en-US/makefile.win b/mailnews/base/resources/locale/en-US/makefile.win index 4bf370a0009..0ec15ba8f07 100644 --- a/mailnews/base/resources/locale/en-US/makefile.win +++ b/mailnews/base/resources/locale/en-US/makefile.win @@ -34,6 +34,7 @@ install:: $(MAKE_INSTALL) newFolderNameDialog.dtd $(LOCALEDIR) $(MAKE_INSTALL) subscribeDialog.dtd $(LOCALEDIR) $(MAKE_INSTALL) subscribe.dtd $(LOCALEDIR) + $(MAKE_INSTALL) subscribe.properties $(LOCALEDIR) $(MAKE_INSTALL) sidebar-messenger.dtd $(LOCALEDIR) $(MAKE_INSTALL) sidebar-messenger-rdf.dtd $(LOCALEDIR) $(MAKE_INSTALL) msgFolderPickerOverlay.dtd $(LOCALEDIR) diff --git a/mailnews/base/resources/locale/en-US/subscribe.dtd b/mailnews/base/resources/locale/en-US/subscribe.dtd index 6b16080480e..c6f56ba3c49 100644 --- a/mailnews/base/resources/locale/en-US/subscribe.dtd +++ b/mailnews/base/resources/locale/en-US/subscribe.dtd @@ -22,8 +22,6 @@ Rights Reserved. - - - - + + diff --git a/mailnews/base/resources/skin/subscribe.css b/mailnews/base/resources/skin/subscribe.css index 6313f9f171e..bddfd4994dd 100644 --- a/mailnews/base/resources/skin/subscribe.css +++ b/mailnews/base/resources/skin/subscribe.css @@ -18,10 +18,12 @@ * 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"); } -treeitem[Subscribed="true"] > treerow > treecell.subscribedcol > .tree-button { +.subscribedcol[value="true"] { list-style-image: url("chrome://messenger/skin/check.gif"); } diff --git a/mailnews/imap/src/nsImapIncomingServer.cpp b/mailnews/imap/src/nsImapIncomingServer.cpp index 178761bf897..101b06c1040 100644 --- a/mailnews/imap/src/nsImapIncomingServer.cpp +++ b/mailnews/imap/src/nsImapIncomingServer.cpp @@ -18,6 +18,11 @@ * Rights Reserved. * * Contributor(s): + * David Bienvenu + * Jeff Tsai + * Scott MacGregor + * Seth Spitzer + * Alecf Flett * Pierre Phaneuf */ @@ -66,33 +71,13 @@ static NS_DEFINE_CID(kMsgLogonRedirectorServiceCID, NS_MSGLOGONREDIRECTORSERVICE NS_IMPL_ADDREF_INHERITED(nsImapIncomingServer, nsMsgIncomingServer) NS_IMPL_RELEASE_INHERITED(nsImapIncomingServer, nsMsgIncomingServer) -NS_IMETHODIMP nsImapIncomingServer::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (!aInstancePtr) return NS_ERROR_NULL_POINTER; - *aInstancePtr = nsnull; +NS_INTERFACE_MAP_BEGIN(nsImapIncomingServer) + NS_INTERFACE_MAP_ENTRY(nsIImapServerSink) + NS_INTERFACE_MAP_ENTRY(nsIImapIncomingServer) + NS_INTERFACE_MAP_ENTRY(nsIMsgLogonRedirectionRequester) + NS_INTERFACE_MAP_ENTRY(nsISubscribableServer) +NS_INTERFACE_MAP_END_INHERITING(nsMsgIncomingServer) - if (aIID.Equals(NS_GET_IID(nsIImapServerSink))) - { - *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() { NS_INIT_REFCNT(); @@ -1762,3 +1747,32 @@ NS_IMETHODIMP nsImapIncomingServer::OnLogonRedirectionReply(const PRUnichar *pHo 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; +} diff --git a/mailnews/imap/src/nsImapIncomingServer.h b/mailnews/imap/src/nsImapIncomingServer.h index 368bce74308..dcbfea01858 100644 --- a/mailnews/imap/src/nsImapIncomingServer.h +++ b/mailnews/imap/src/nsImapIncomingServer.h @@ -30,12 +30,14 @@ #include "nsIImapServerSink.h" #include "nsIStringBundle.h" #include "nsIMsgLogonRedirector.h" +#include "nsISubscribableServer.h" /* get some implementation from nsMsgIncomingServer */ class nsImapIncomingServer : public nsMsgIncomingServer, public nsIImapIncomingServer, public nsIImapServerSink, - public nsIMsgLogonRedirectionRequester + public nsIMsgLogonRedirectionRequester, + public nsISubscribableServer { public: @@ -51,7 +53,8 @@ public: NS_DECL_NSIIMAPINCOMINGSERVER NS_DECL_NSIIMAPSERVERSINK NS_DECL_NSIMSGLOGONREDIRECTIONREQUESTER - + NS_DECL_NSISUBSCRIBABLESERVER + NS_IMETHOD PerformBiff(); NS_IMETHOD CloseCachedConnections(); @@ -82,6 +85,7 @@ private: PRBool m_waitingForConnectionInfo; PRInt32 m_redirectedLogonRetries; nsCOMPtr m_logonRedirector; + nsCOMPtr mSubscribeListener; }; diff --git a/mailnews/imap/src/nsImapMailFolder.cpp b/mailnews/imap/src/nsImapMailFolder.cpp index cbcd18c778c..9f606548db5 100644 --- a/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mailnews/imap/src/nsImapMailFolder.cpp @@ -1081,6 +1081,21 @@ nsImapMailFolder::GetCanCreateSubfolders(PRBool *aResult) 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) { // look for matching imap folders, then pop folders diff --git a/mailnews/imap/src/nsImapMailFolder.h b/mailnews/imap/src/nsImapMailFolder.h index 9c93064b7cb..da67afb692c 100644 --- a/mailnews/imap/src/nsImapMailFolder.h +++ b/mailnews/imap/src/nsImapMailFolder.h @@ -140,6 +140,7 @@ public: NS_IMETHOD GetSizeOnDisk(PRUint32 * size); NS_IMETHOD GetCanCreateSubfolders(PRBool *aResult); + NS_IMETHOD GetCanSubscribe(PRBool *aResult); NS_IMETHOD UserNeedsToAuthenticateForFolder(PRBool displayOnly, PRBool *authenticate); NS_IMETHOD RememberPassword(const char *password); diff --git a/mailnews/news/src/nsNntpIncomingServer.cpp b/mailnews/news/src/nsNntpIncomingServer.cpp index c535ff67da8..9c35e40e0b1 100644 --- a/mailnews/news/src/nsNntpIncomingServer.cpp +++ b/mailnews/news/src/nsNntpIncomingServer.cpp @@ -18,6 +18,8 @@ * Rights Reserved. * * Contributor(s): + * Seth Spitzer + * David Bienvenu */ #include "nsNntpIncomingServer.h" @@ -517,7 +519,7 @@ nsNntpIncomingServer::SetNewsgroupAsSubscribed(const char *aName) NS_ASSERTION(aName,"newsgroup with no name"); if (!aName) return NS_ERROR_FAILURE; -#ifdef DEBUG_NEWS +#ifdef DEBUG_sspitzer printf("SetNewsgroupAsSubscribed(%s)\n",aName); #endif nsXPIDLCString serverUri; @@ -602,7 +604,10 @@ nsNntpIncomingServer::AddNewNewsgroup(const char *aName) nsCOMPtr newsgroupResource; rv = rdfService->GetResource((const char *) groupUri, getter_AddRefs(newsgroupResource)); - +#ifdef DEBUG_sspitzer + printf("child=%s\n",(const char *)groupUri); +#endif + nsCOMPtr nameLiteral; nsAutoString nameString; nameString.AssignWithConversion(aName); rv = rdfService->GetLiteral(nameString.GetUnicode(), getter_AddRefs(nameLiteral)); @@ -641,11 +646,17 @@ nsNntpIncomingServer::AddNewNewsgroup(const char *aName) if (dotpos > slashpos) { groupUri.Truncate(dotpos); - + +#ifdef DEBUG_sspitzer + printf("parent=%s\n\n",(const char *)groupUri); +#endif rv = rdfService->GetResource((const char *)groupUri, getter_AddRefs(parent)); if(NS_FAILED(rv)) return rv; } else { +#ifdef DEBUG_sspitzer + printf("parent=%s\n\n",(const char *)serverUri); +#endif rv = rdfService->GetResource((const char *)serverUri, getter_AddRefs(parent)); if(NS_FAILED(rv)) return rv; } @@ -848,7 +859,9 @@ NS_IMETHODIMP nsNntpIncomingServer::PopulateSubscribeDatasource(nsIMsgWindow *aMsgWindow) { nsresult rv; +#ifdef DEBUG_sspitzer printf("in PopulateSubscribeDatasource()\n"); +#endif nsCOMPtr nntpService = do_GetService(kNntpServiceCID, &rv); if (NS_FAILED(rv)) return rv; if (!nntpService) return NS_ERROR_FAILURE;