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");
}
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 = {

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

@ -19,8 +19,6 @@ Communications Corporation. Portions created by Netscape are
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"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
@ -39,6 +37,7 @@ Rights Reserved.
onload="SubscribeOnLoad()"
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/subscribe.js"/>
@ -48,18 +47,22 @@ Rights Reserved.
<box orient="vertical" flex="100%">
<box orient="horizontal">
<text value="&server.label;"/>
<menulist oncommand="onServerClick(event);" id="serverMenu">
<menupopup rdf:datasources="rdf:msgaccountmanager"
<menulist oncommand="onServerClick(event);" id="serverMenu"
rdf:datasources="rdf:msgaccountmanager rdf:mailnewsfolders"
rdf:ignore="http://home.netscape.com/NC-rdf#MessageChild"
rdf:containment="http://home.netscape.com/NC-rdf#child"
ref="msgaccounts:/">
<template>
<menuitem uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name"/>
</template>
</menupopup>
<template>
<rule NC:CanSubscribe="true">
<menupopup>
<menuitem uri="..." value="rdf:http://home.netscape.com/NC-rdf#Name"/>
</menupopup>
</rule>
</template>
</menulist>
</box>
<box orient="horizontal" flex="100%">
<text class="label" value="&folders.label;" for="name"/>
<text id="foldertextlabel" class="label" value="..." for="name"/>
<textfield id="name"/>
</box>
</box>
@ -68,7 +71,7 @@ Rights Reserved.
<box orient="vertical" flex="100%">
<tree style="width:100px;" flex="100%"
class="inset"
class="inset"
id="subscribetree"
datasources="rdf:subscribe"
onclick="SubscribeOnClick(event);">
@ -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">
<treerow>
<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"/>
</treerow>
</treeitem>
@ -94,7 +97,7 @@ Rights Reserved.
<treehead>
<treerow id="headRow">
<treecell value="&foldersHeader.label;" />
<treecell id="foldersheaderlabel" value="..." />
<treecell value="&subscribedHeader.label;"/>
<treecell value="&messagesHeader.label;"/>
</treerow>

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

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

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

@ -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 \

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

@ -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)

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

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

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

@ -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");
}

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

@ -18,6 +18,11 @@
* Rights Reserved.
*
* 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>
*/
@ -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;
}

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

@ -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<nsIMsgLogonRedirector> m_logonRedirector;
nsCOMPtr <nsISubscribeListener> mSubscribeListener;
};

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

@ -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

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

@ -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);

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

@ -18,6 +18,8 @@
* Rights Reserved.
*
* Contributor(s):
* Seth Spitzer <sspitzer@netscape.com>
* David Bienvenu <bienvenu@netscape.com>
*/
#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<nsIRDFResource> newsgroupResource;
rv = rdfService->GetResource((const char *) groupUri, getter_AddRefs(newsgroupResource));
#ifdef DEBUG_sspitzer
printf("child=%s\n",(const char *)groupUri);
#endif
nsCOMPtr<nsIRDFLiteral> 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<nsINntpService> nntpService = do_GetService(kNntpServiceCID, &rv);
if (NS_FAILED(rv)) return rv;
if (!nntpService) return NS_ERROR_FAILURE;