Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
nsMsgNewsFolder Class Reference

#include <nsNewsFolder.h>

Inheritance diagram for nsMsgNewsFolder:
Inheritance graph
[legend]
Collaboration diagram for nsMsgNewsFolder:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 nsMsgNewsFolder (void)
virtual ~nsMsgNewsFolder (void)
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIMSGNEWSFOLDER
NS_IMETHOD 
Enumerate (nsIEnumerator **result)
NS_IMETHOD OnStopRunningUrl (nsIURI *aUrl, nsresult aExitCode)
NS_IMETHOD GetSubFolders (nsIEnumerator **result)
NS_IMETHOD GetMessages (nsIMsgWindow *aMsgWindow, nsISimpleEnumerator **result)
NS_IMETHOD UpdateFolder (nsIMsgWindow *aWindow)
NS_IMETHOD CreateSubfolder (const PRUnichar *folderName, nsIMsgWindow *msgWindow)
NS_IMETHOD Delete ()
NS_IMETHOD Rename (const PRUnichar *newName, nsIMsgWindow *msgWindow)
NS_IMETHOD GetAbbreviatedName (PRUnichar **aAbbreviatedName)
NS_IMETHOD GetFolderURL (char **url)
NS_IMETHOD UpdateSummaryTotals (PRBool force)
NS_IMETHOD GetExpungedBytesCount (PRUint32 *count)
NS_IMETHOD GetDeletable (PRBool *deletable)
NS_IMETHOD GetRequiresCleanup (PRBool *requiresCleanup)
NS_IMETHOD GetSizeOnDisk (PRUint32 *size)
NS_IMETHOD GetDBFolderInfoAndDB (nsIDBFolderInfo **folderInfo, nsIMsgDatabase **db)
NS_IMETHOD DeleteMessages (nsISupportsArray *messages, nsIMsgWindow *msgWindow, PRBool deleteStorage, PRBool isMove, nsIMsgCopyServiceListener *listener, PRBool allowUndo)
NS_IMETHOD GetNewMessages (nsIMsgWindow *aWindow, nsIUrlListener *aListener)
NS_IMETHOD GetCanSubscribe (PRBool *aResult)
NS_IMETHOD GetCanFileMessages (PRBool *aResult)
NS_IMETHOD GetCanDeleteMessages (PRBool *aCanDeleteMessages)
NS_IMETHOD GetCanCreateSubfolders (PRBool *aResult)
NS_IMETHOD GetCanRename (PRBool *aResult)
NS_IMETHOD GetCanCompact (PRBool *aResult)
NS_IMETHOD OnReadChanged (nsIDBChangeListener *aInstigator)
NS_IMETHOD DownloadMessagesForOffline (nsISupportsArray *messages, nsIMsgWindow *window)
NS_IMETHOD Compact (nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow)
NS_IMETHOD DownloadAllForOffline (nsIUrlListener *listener, nsIMsgWindow *msgWindow)
NS_IMETHOD GetSortOrder (PRInt32 *order)
NS_IMETHOD SetSortOrder (PRInt32 order)
NS_IMETHOD GetPersistElided (PRBool *aPersistElided)
NS_IMETHOD Shutdown (PRBool shutdownChildren)
NS_IMETHOD GetFilterList (nsIMsgWindow *aMsgWindow, nsIMsgFilterList **aFilterList)
NS_IMETHOD SetFilterList (nsIMsgFilterList *aFilterList)
NS_IMETHOD ApplyRetentionSettings ()
virtual PRInt32 HandleLine (char *line, PRUint32 line_size)
string getGroupPasswordWithUI (in wstring aPromptString, in wstring aPromptTitle, in nsIMsgWindow aMsgWindow)
string getGroupUsernameWithUI (in wstring aPromptString, in wstring aPromptTitle, in nsIMsgWindow aMsgWindow)
void forgetGroupUsername ()
void forgetGroupPassword ()
nsIMsgFolder addNewsgroup (in AUTF8String newsgroupName, in string setStr)
void setReadSetFromStr (in string setStr)
void SetNewsrcHasChanged (in boolean newsrcHasChanged)
void updateSummaryFromNNTPInfo (in long oldest, in long youngest, in long total)
void removeMessage (in nsMsgKey key)
void cancelComplete ()
void cancelFailed ()
string getMessageIdForKey (in nsMsgKey key)
void getNextNMessages (in nsIMsgWindow aMsgWindow)
void notifyDownloadedLine (in string line, in nsMsgKey key)
void notifyFinishedDownloadinghdrs ()

Public Attributes

attribute string groupUsername
attribute string groupPassword
readonly attribute AString unicodeName
readonly attribute ACString rawName
 |rawName| is an 8-bit string to represent the name of a newsgroup used by a news server.
readonly attribute
nsINntpIncomingServer 
nntpServer
attribute boolean saveArticleOffline
readonly attribute string newsrcLine
readonly attribute string optionLines
readonly attribute string unsubscribedNewsgroupLines

Protected Member Functions

nsresult AbbreviatePrettyName (PRUnichar **prettyName, PRInt32 fullwords)
nsresult ParseFolder (nsFileSpec &path)
nsresult CreateSubFolders (nsFileSpec &path)
nsresult AddDirectorySeparator (nsFileSpec &path)
nsresult GetDatabase (nsIMsgWindow *aMsgWindow)
nsresult LoadNewsrcFileAndCreateNewsgroups ()
PRInt32 RememberLine (const char *line)
nsresult RememberUnsubscribedGroup (const char *newsgroup, const char *setStr)
nsresult ForgetLine (void)
nsresult GetNewsMessages (nsIMsgWindow *aMsgWindow, PRBool getOld, nsIUrlListener *aListener)
PRInt32 HandleNewsrcLine (char *line, PRUint32 line_size)
virtual const char * GetIncomingServerType ()
virtual nsresult CreateBaseMessageURI (const char *aURI)

Protected Attributes

nsByteArray m_newsrcInputStream
PRUint32 mExpungedBytes
PRPackedBool mGettingNews
PRPackedBool mInitialized
PRPackedBool m_downloadMessageForOfflineUse
PRPackedBool m_downloadingMultipleMessages
nsCString mOptionLines
nsCString mUnsubscribedNewsgroupLines
nsMsgKeySet * mReadSet
nsCOMPtr< nsIFileSpecmNewsrcFilePath
char * mGroupUsername
char * mGroupPassword
nsCString mPrevUsername
nsCString mPrevPassword
nsCString mRawName
PRInt32 mSortOrder

Private Member Functions

nsresult CreateNewsgroupUsernameUrlForSignon (const char *inUriStr, char **result)
nsresult CreateNewsgroupPasswordUrlForSignon (const char *inUriStr, char **result)
nsresult CreateNewsgroupUrlForSignon (const char *inUriStr, const char *ref, char **result)

Private Attributes

nsCOMPtr< nsIFileSpecmFilterFile
nsCOMPtr< nsIMsgFilterListmFilterList

Detailed Description

Definition at line 59 of file nsNewsFolder.h.


Constructor & Destructor Documentation

Definition at line 120 of file nsNewsFolder.cpp.

                                     : nsMsgLineBuffer(nsnull, PR_FALSE),
     mExpungedBytes(0), mGettingNews(PR_FALSE),
    mInitialized(PR_FALSE), mOptionLines(""), mUnsubscribedNewsgroupLines(""), 
    m_downloadMessageForOfflineUse(PR_FALSE), m_downloadingMultipleMessages(PR_FALSE), 
    mReadSet(nsnull), mGroupUsername(nsnull), mGroupPassword(nsnull)
{
  MOZ_COUNT_CTOR(nsNewsFolder); // double count these for now.
  /* we're parsing the newsrc file, and the line breaks are platform specific.
   * if MSG_LINEBREAK != CRLF, then we aren't looking for CRLF 
   */
  if (PL_strcmp(MSG_LINEBREAK, CRLF))
    SetLookingForCRLF(PR_FALSE);
}

Definition at line 134 of file nsNewsFolder.cpp.


Member Function Documentation

nsresult nsMsgNewsFolder::AbbreviatePrettyName ( PRUnichar **  prettyName,
PRInt32  fullwords 
) [protected]

Definition at line 685 of file nsNewsFolder.cpp.

{
  if (!prettyName)
    return NS_ERROR_NULL_POINTER;
  
  nsAutoString name(*prettyName);
  PRInt32 totalwords = 0; // total no. of words
  
  // get the total no. of words
  PRInt32 pos = 0;
  while(1)
  {
    pos = name.FindChar('.', pos);
    if(pos == -1)
    {
      totalwords++;
      break;
    }
    else
    {
      totalwords++;
      pos++;
    }
  }
  
  // get the no. of words to abbreviate
  PRInt32 abbrevnum = totalwords - fullwords;
  if (abbrevnum < 1)
    return NS_OK; // nothing to abbreviate
  
  // build the ellipsis
  nsAutoString out;
  
  out += name[0];
  
  PRInt32    length = name.Length();
  PRInt32    newword = 0;     // == 2 if done with all abbreviated words
  
  fullwords = 0;
  PRUnichar currentChar;
  for (PRInt32 i = 1; i < length; i++) {
    // this temporary assignment is needed to fix an intel mac compiler bug.
    // See Bug #327037 for details.
    currentChar = name[i]; 
    if (newword < 2) {
      switch (currentChar) {
      case '.':
        fullwords++;
        // check if done with all abbreviated words...
        if (fullwords == abbrevnum)
          newword = 2;
        else
          newword = 1;
        break;
      case '-':
        newword = 1;
        break;
      default:
        if (newword)
          newword = 0;
        else
          continue;
      }
    }
    out += currentChar;
  }

  if (!prettyName)
    return NS_ERROR_NULL_POINTER;
  // we are going to set *prettyName to something else, so free what was there
  
  PR_Free(*prettyName);
  *prettyName = ToNewUnicode(out);
  
  return (*prettyName) ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 304 of file nsNewsFolder.cpp.

{
    nsresult rv = NS_OK;
    if (mURI.Equals(kNewsRootURI)) 
    {
    // don't concat the full separator with .sbd
    }
    else 
    {
      // see if there's a dir with the same name ending with .sbd
      // unfortunately we can't just say:
      //          path += sep;
      // here because of the way nsFileSpec concatenates
      nsAutoString str;
      str.AssignWithConversion(nsFilePath(path));
#if 0
      nsAutoString sep;
      rv = nsGetNewsFolderSeparator(sep);
      if (NS_FAILED(rv)) return rv;
      str += sep;
#endif

      path = nsFilePath(str);
    }

    return rv;
}
nsIMsgFolder nsIMsgNewsFolder::addNewsgroup ( in AUTF8String  newsgroupName,
in string  setStr 
) [inherited]

Definition at line 1814 of file nsNewsFolder.cpp.

Here is the caller graph for this function:

Definition at line 1803 of file nsNewsFolder.cpp.

{
  nsresult rv;

  rv = GetDatabase(nsnull);
  if (mDatabase)
    ApplyRetentionSettings();
  return rv;
}

Here is the call graph for this function:

nsresult nsMsgNewsFolder::CreateBaseMessageURI ( const char *  aURI) [protected, virtual]

Definition at line 1497 of file nsNewsFolder.cpp.

{
  nsresult rv;

  rv = nsCreateNewsBaseMessageURI(aURI, &mBaseMessageURI);
  return rv;
}

Here is the call graph for this function:

nsresult nsMsgNewsFolder::CreateNewsgroupPasswordUrlForSignon ( const char *  inUriStr,
char **  result 
) [private]

Definition at line 1238 of file nsNewsFolder.cpp.

{
    return CreateNewsgroupUrlForSignon(inUriStr, "password", result);
}

Here is the call graph for this function:

nsresult nsMsgNewsFolder::CreateNewsgroupUrlForSignon ( const char *  inUriStr,
const char *  ref,
char **  result 
) [private]

Definition at line 1243 of file nsNewsFolder.cpp.

{
    nsresult rv;
    PRInt32 port = 0;

    nsCOMPtr<nsIURL> url = do_CreateInstance(NS_STANDARDURL_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv,rv);

    nsCOMPtr<nsIMsgIncomingServer> server;
    rv = GetServer(getter_AddRefs(server));
    if (NS_FAILED(rv)) return rv;

    nsCOMPtr<nsINntpIncomingServer> nntpServer;
    rv = GetNntpServer(getter_AddRefs(nntpServer));
    if (NS_FAILED(rv)) return rv;

    PRBool singleSignon = PR_TRUE;
    rv = nntpServer->GetSingleSignon(&singleSignon);

    if (singleSignon)
    {

      nsXPIDLCString serverURI;
      rv = server->GetServerURI(getter_Copies(serverURI));
      if (NS_FAILED(rv)) return rv;

      rv = url->SetSpec(serverURI);
      if (NS_FAILED(rv)) return rv;
    }
    else
    {
    rv = url->SetSpec(nsDependentCString(inUriStr));
    if (NS_FAILED(rv)) return rv;
    }

    rv = url->GetPort(&port);
    if (NS_FAILED(rv)) return rv;

    if (port <= 0) 
    {
        nsCOMPtr<nsIMsgIncomingServer> server;
        rv = GetServer(getter_AddRefs(server));
        if (NS_FAILED(rv)) return rv;

        PRBool isSecure = PR_FALSE;
        rv = server->GetIsSecure(&isSecure);
        if (NS_FAILED(rv)) return rv;

        rv = url->SetPort((isSecure) ? SECURE_NEWS_PORT: NEWS_PORT);
        if (NS_FAILED(rv)) return rv;
    }

    rv = url->SetRef(nsDependentCString(ref));
    if (NS_FAILED(rv)) return rv;

    nsCAutoString spec;
    rv = url->GetSpec(spec);
    if (NS_FAILED(rv)) return rv;

    *result = ToNewCString(spec);
    return *result ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}

Here is the call graph for this function:

Here is the caller graph for this function:

nsresult nsMsgNewsFolder::CreateNewsgroupUsernameUrlForSignon ( const char *  inUriStr,
char **  result 
) [private]

Definition at line 1233 of file nsNewsFolder.cpp.

{
    return CreateNewsgroupUrlForSignon(inUriStr, "username", result);
}

Here is the call graph for this function:

Definition at line 557 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;
  
  NS_ENSURE_ARG_POINTER(newsgroupName);
  if (!*newsgroupName) return NS_ERROR_FAILURE;
  
  nsCOMPtr<nsIMsgFolder> child;
  
  // Create an empty database for this mail folder, set its name from the user  
  nsCOMPtr<nsIMsgDatabase> newsDBFactory;
  nsCOMPtr <nsIMsgDatabase> newsDB;
  
  //Now let's create the actual new folder
  rv = AddNewsgroup(NS_ConvertUTF16toUTF8(newsgroupName), "",
                    getter_AddRefs(child));
  
  if (NS_SUCCEEDED(rv))
    SetNewsrcHasChanged(PR_TRUE); // subscribe UI does this - but maybe we got here through auto-subscribe

  if(NS_SUCCEEDED(rv) && child){
    nsCOMPtr <nsINntpIncomingServer> nntpServer;
    rv = GetNntpServer(getter_AddRefs(nntpServer));
    if (NS_FAILED(rv)) return rv;
    
    nsCAutoString dataCharset;
    rv = nntpServer->GetCharset(dataCharset);
    if (NS_FAILED(rv)) return rv;

    child->SetCharset(dataCharset.get());
    NotifyItemAdded(child);
  }
  return rv;
}

Here is the call graph for this function:

Definition at line 166 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;

  PRBool isNewsServer = PR_FALSE;
  rv = GetIsServer(&isNewsServer);
  if (NS_FAILED(rv)) return rv;

  if (isNewsServer) 
  {  
    nsCOMPtr<nsINntpIncomingServer> nntpServer;
    rv = GetNntpServer(getter_AddRefs(nntpServer));
    if (NS_FAILED(rv)) return rv;
  
    rv = nntpServer->GetNewsrcFilePath(getter_AddRefs(mNewsrcFilePath));
    if (NS_FAILED(rv)) return rv;
      
    rv = LoadNewsrcFileAndCreateNewsgroups();
    if (NS_FAILED(rv)) return rv;
  }
  else 
  {
    // is not a host, so it has no newsgroups.  (what about categories??)
    rv = NS_OK;
  }
  
  return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 593 of file nsNewsFolder.cpp.

{
  nsresult rv = GetDatabase(nsnull);
  
  if(NS_SUCCEEDED(rv)) 
  {
    mDatabase->ForceClosed();
    mDatabase = nsnull;
  }
  
  nsCOMPtr<nsIFileSpec> pathSpec;
  rv = GetPath(getter_AddRefs(pathSpec));
  if (NS_FAILED(rv)) return rv;
  
  nsFileSpec path;
  rv = pathSpec->GetFileSpec(&path);
  if (NS_FAILED(rv)) return rv;
  
  // delete local store, if it exists
  if (path.Exists())
    path.Delete(PR_FALSE);
  // Remove summary file.   
  nsNewsSummarySpec summarySpec(path);
  summarySpec.Delete(PR_FALSE);
 
  nsCOMPtr <nsINntpIncomingServer> nntpServer;
  rv = GetNntpServer(getter_AddRefs(nntpServer));
  if (NS_FAILED(rv)) return rv;
  
  nsAutoString name;
  rv = GetUnicodeName(name);
  NS_ENSURE_SUCCESS(rv,rv);
  
  rv = nntpServer->RemoveNewsgroup(name);
  NS_ENSURE_SUCCESS(rv,rv);
  
  rv = SetNewsrcHasChanged(PR_TRUE);
  NS_ENSURE_SUCCESS(rv,rv);
  return rv;
}

Here is the call graph for this function:

NS_IMETHODIMP nsMsgNewsFolder::DeleteMessages ( nsISupportsArray messages,
nsIMsgWindow msgWindow,
PRBool  deleteStorage,
PRBool  isMove,
nsIMsgCopyServiceListener listener,
PRBool  allowUndo 
)

Definition at line 894 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;
 
  NS_ENSURE_ARG_POINTER(messages);
  NS_ENSURE_ARG_POINTER(aMsgWindow);
 
  PRUint32 count = 0;
  rv = messages->Count(&count);
  NS_ENSURE_SUCCESS(rv,rv);
  
  if (count != 1) 
  {
    nsCOMPtr<nsIStringBundleService> bundleService = do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);

    nsCOMPtr<nsIStringBundle> bundle;
    rv = bundleService->CreateBundle(NEWS_MSGS_URL, getter_AddRefs(bundle));
    NS_ENSURE_SUCCESS(rv, rv);

    nsXPIDLString alertText;
    rv = bundle->GetStringFromName(NS_LITERAL_STRING("onlyCancelOneMessage").get(), getter_Copies(alertText));
    NS_ENSURE_SUCCESS(rv, rv);

    nsCOMPtr<nsIPrompt> dialog;
    rv = aMsgWindow->GetPromptDialog(getter_AddRefs(dialog));
    NS_ENSURE_SUCCESS(rv,rv);

    if (dialog) 
    {
      rv = dialog->Alert(nsnull, (const PRUnichar *) alertText);
      NS_ENSURE_SUCCESS(rv,rv);
    }
    // return failure, since the cancel failed
    return NS_ERROR_FAILURE;
  }
  
  nsCOMPtr <nsINntpService> nntpService = do_GetService(NS_NNTPSERVICE_CONTRACTID, &rv);
  NS_ENSURE_SUCCESS(rv,rv);

  nsCOMPtr<nsIMsgDBHdr> msgHdr(do_QueryElementAt(messages, 0));

  // for cancel, we need to
  // turn "newsmessage://sspitzer@news.mozilla.org/netscape.test#5428"
  // into "news://sspitzer@news.mozilla.org/23423@netscape.com"

  nsCOMPtr <nsIMsgIncomingServer> server;
  rv = GetServer(getter_AddRefs(server));
  NS_ENSURE_SUCCESS(rv,rv);

  nsXPIDLCString serverURI;
  rv = server->GetServerURI(getter_Copies(serverURI));
  NS_ENSURE_SUCCESS(rv,rv);

  nsXPIDLCString messageID;
  rv = msgHdr->GetMessageId(getter_Copies(messageID));
  NS_ENSURE_SUCCESS(rv,rv);
  
  // we need to escape the message ID, 
  // it might contain characters which will mess us up later, like #
  // see bug #120502
  char *escapedMessageID = nsEscape(messageID.get(), url_Path);
  if (!escapedMessageID)
    return NS_ERROR_OUT_OF_MEMORY;

  nsCAutoString cancelURL((const char *)serverURI);
  cancelURL += '/';
  cancelURL += escapedMessageID;
  cancelURL += "?cancel";

  PR_Free(escapedMessageID);

  nsXPIDLCString messageURI;
  rv = GetUriForMsg(msgHdr, getter_Copies(messageURI));
  NS_ENSURE_SUCCESS(rv,rv);

  rv = nntpService->CancelMessage(cancelURL.get(), messageURI, nsnull /* consumer */, nsnull, aMsgWindow, nsnull);
  NS_ENSURE_SUCCESS(rv,rv);
  
  return rv;
}

Here is the call graph for this function:

Definition at line 1686 of file nsNewsFolder.cpp.

{
  nsMsgKeyArray srcKeyArray;

  SetSaveArticleOffline(PR_TRUE); 
  nsresult rv;

  // build up message keys.
  if (mDatabase)
  {
    nsCOMPtr <nsISimpleEnumerator> enumerator;
    rv = mDatabase->EnumerateMessages(getter_AddRefs(enumerator));
    if (NS_SUCCEEDED(rv) && enumerator)
    {
      PRBool hasMore;

      while (NS_SUCCEEDED(rv = enumerator->HasMoreElements(&hasMore)) && hasMore) 
      {
        nsCOMPtr <nsIMsgDBHdr> pHeader;
        rv = enumerator->GetNext(getter_AddRefs(pHeader));
        NS_ASSERTION(NS_SUCCEEDED(rv), "nsMsgDBEnumerator broken");
        if (pHeader && NS_SUCCEEDED(rv))
        {
          PRBool shouldStoreMsgOffline = PR_FALSE;
          nsMsgKey msgKey;
          pHeader->GetMessageKey(&msgKey);
          MsgFitsDownloadCriteria(msgKey, &shouldStoreMsgOffline);
          if (shouldStoreMsgOffline)
            srcKeyArray.Add(msgKey);
        }
      }
    }
  }
  DownloadNewsArticlesToOfflineStore *downloadState = new DownloadNewsArticlesToOfflineStore(msgWindow, mDatabase, this);
  if (!downloadState)
    return NS_ERROR_OUT_OF_MEMORY;

  m_downloadingMultipleMessages = PR_TRUE;

  return downloadState->DownloadArticles(msgWindow, this, &srcKeyArray);
}

Here is the call graph for this function:

Definition at line 1728 of file nsNewsFolder.cpp.

{
  nsMsgKeyArray srcKeyArray;

  SetSaveArticleOffline(PR_TRUE); // ### TODO need to clear this when we've finished
  PRUint32 count = 0;
  PRUint32 i;
  nsresult rv = messages->Count(&count);
  NS_ENSURE_SUCCESS(rv, rv);

  // build up message keys.
  for (i = 0; i < count; i++)
  {
    nsMsgKey key;
    nsCOMPtr <nsIMsgDBHdr> msgDBHdr = do_QueryElementAt(messages, i, &rv);
    if (msgDBHdr)
      rv = msgDBHdr->GetMessageKey(&key);
    if (NS_SUCCEEDED(rv))
      srcKeyArray.Add(key);
  }
  DownloadNewsArticlesToOfflineStore *downloadState = new DownloadNewsArticlesToOfflineStore(window, mDatabase, this);
  if (!downloadState)
    return NS_ERROR_OUT_OF_MEMORY;

  m_downloadingMultipleMessages = PR_TRUE;

  return downloadState->DownloadArticles(window, this, &srcKeyArray);
}

Here is the call graph for this function:

Definition at line 280 of file nsNewsFolder.cpp.

{
#if 0
  nsresult rv = NS_OK;
  // for now, news folders contain both messages and folders
  // server is a folder, and it contains folders
  // newsgroup is a folder, and it contains messages
  //
  // eventually the top level server will not be a folder
  // and news folders will only contain messages
  nsIEnumerator* folders;
  nsIEnumerator* messages;
  rv = GetSubFolders(&folders);
  if (NS_FAILED(rv)) return rv;
  rv = GetMessages(nsnull, &messages);
  if (NS_FAILED(rv)) return rv;
  return NS_NewConjoiningEnumerator(folders, messages, 
                                    (nsIBidirectionalEnumerator**)result);
#endif
  NS_ASSERTION(PR_FALSE, "obsolete, right?");
  return NS_ERROR_FAILURE;
}

Here is the call graph for this function:

Definition at line 1170 of file nsNewsFolder.cpp.

{
  mOptionLines = "";
  return NS_OK;
}

Definition at line 640 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;

  if (!aAbbreviatedName)
    return NS_ERROR_NULL_POINTER;

  rv = nsMsgDBFolder::GetPrettyName(aAbbreviatedName);
  if(NS_FAILED(rv)) return rv;

  // only do this for newsgroup names, not for newsgroup hosts.
  PRBool isNewsServer = PR_FALSE;
  rv = GetIsServer(&isNewsServer);
  if (NS_FAILED(rv)) return rv;
  
  if (!isNewsServer) {  
    nsCOMPtr<nsINntpIncomingServer> nntpServer;
    rv = GetNntpServer(getter_AddRefs(nntpServer));
    if (NS_FAILED(rv)) return rv;
    
    PRBool abbreviate = PR_TRUE;
    rv = nntpServer->GetAbbreviate(&abbreviate);
    if (NS_FAILED(rv)) return rv;
    
    if (abbreviate) {
      rv = AbbreviatePrettyName(aAbbreviatedName, 1 /* hardcoded for now */);
    }
  }

  return rv;
}

Here is the call graph for this function:

Definition at line 496 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = PR_FALSE;
  // you can't compact a news server or a news group
  return NS_OK;
}

Definition at line 478 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = PR_FALSE;
  // you can't create subfolders on a news server or a news group
  return NS_OK;
}

Definition at line 470 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aCanDeleteMessages);
  *aCanDeleteMessages = PR_FALSE;
  return NS_OK;
}

Definition at line 461 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aResult);
  // you can't file messages into a news server or news group
  *aResult = PR_FALSE;
  return NS_OK;
}

Definition at line 487 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = PR_FALSE;
  // you can't rename a news server or a news group
  return NS_OK;
}

Definition at line 446 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = PR_FALSE;

  PRBool isNewsServer = PR_FALSE;
  nsresult rv = GetIsServer(&isNewsServer);
  if (NS_FAILED(rv)) return rv;
 
  // you can only subscribe to news servers, not news groups
  *aResult = isNewsServer;
  return NS_OK;
}
nsresult nsMsgNewsFolder::GetDatabase ( nsIMsgWindow aMsgWindow) [protected]

Definition at line 368 of file nsNewsFolder.cpp.

{
  nsresult rv;
  if (!mDatabase)
  {
    nsCOMPtr<nsIFileSpec> pathSpec;
    rv = GetPath(getter_AddRefs(pathSpec));
    if (NS_FAILED(rv)) return rv;
    
    nsCOMPtr<nsIMsgDBService> msgDBService = do_GetService(NS_MSGDB_SERVICE_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv,rv);

    nsresult folderOpen = msgDBService->OpenFolderDB(this, PR_TRUE, PR_FALSE, getter_AddRefs(mDatabase));
    
    if (NS_FAILED(folderOpen) && folderOpen != NS_MSG_ERROR_FOLDER_SUMMARY_MISSING)
      folderOpen = msgDBService->OpenFolderDB(this, PR_TRUE, PR_TRUE, getter_AddRefs(mDatabase));

    if (NS_FAILED(folderOpen) && folderOpen != NS_MSG_ERROR_FOLDER_SUMMARY_MISSING)
      return folderOpen;

    if(mAddListener)
      rv = mDatabase->AddListener(this);
      
    nsCOMPtr<nsINewsDatabase> db = do_QueryInterface(mDatabase, &rv);
    if (NS_FAILED(rv)) 
      return rv;        
      
    rv = db->SetReadSet(mReadSet);
    if (NS_FAILED(rv)) 
      return rv;        

    rv = UpdateSummaryTotals(PR_TRUE);
    if (NS_FAILED(rv)) 
      return rv;
  }
  return NS_OK;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 764 of file nsNewsFolder.cpp.

{

  nsresult openErr;
  if(!db || !folderInfo)
    return NS_ERROR_NULL_POINTER; 

  openErr = GetDatabase(nsnull);
  *db = mDatabase;
  if (mDatabase) {
    NS_ADDREF(*db);
    if (NS_SUCCEEDED(openErr))
      openErr = (*db)->GetDBFolderInfo(folderInfo);
  }

  return openErr;
}

Here is the call graph for this function:

Definition at line 874 of file nsNewsFolder.cpp.

{
//  NS_ASSERTION(0,"GetDeletable() not implemented");
  return NS_ERROR_NOT_IMPLEMENTED;
}

Definition at line 864 of file nsNewsFolder.cpp.

{
  if(!count)
    return NS_ERROR_NULL_POINTER;

  *count = mExpungedBytes;

  return NS_OK;
}

Definition at line 1911 of file nsNewsFolder.cpp.

{
  if (mIsServer)
  {
    nsCOMPtr<nsIMsgIncomingServer> server;
    nsresult rv = GetServer(getter_AddRefs(server));
    NS_ENSURE_SUCCESS(rv,rv);
    return server->GetFilterList(aMsgWindow, aResult);
  }

  if (!mFilterList) 
  {
    nsCOMPtr<nsIFileSpec> thisFolder;
    nsresult rv = GetPath(getter_AddRefs(thisFolder));
    NS_ENSURE_SUCCESS(rv, rv);
    
    mFilterFile = do_CreateInstance(NS_FILESPEC_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);
    
    // in 4.x, the news filter file was
    // C:\Program Files\Netscape\Users\meer\News\host-news.mcom.com\mcom.test.dat
    // where the summary file was 
    // C:\Program Files\Netscape\Users\meer\News\host-news.mcom.com\mcom.test.snm
    // we make the rules file ".dat" in mozilla, so that migration works.
    rv = mFilterFile->FromFileSpec(thisFolder);
    NS_ENSURE_SUCCESS(rv, rv);
    
    // NOTE:
    // we don't we need to call NS_MsgHashIfNecessary()
    // it's already been hashed, if necessary
    nsXPIDLCString filterFileName;
    rv = mFilterFile->GetLeafName(getter_Copies(filterFileName));
    NS_ENSURE_SUCCESS(rv,rv);
    
    filterFileName.Append(".dat");
    
    rv = mFilterFile->SetLeafName(filterFileName.get());
    NS_ENSURE_SUCCESS(rv,rv);
    
    nsCOMPtr<nsIMsgFilterService> filterService =
      do_GetService(NS_MSGFILTERSERVICE_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);
    
    rv = filterService->OpenFilterList(mFilterFile, this, aMsgWindow, getter_AddRefs(mFilterList));
    NS_ENSURE_SUCCESS(rv, rv);
  }
  
  NS_IF_ADDREF(*aResult = mFilterList);
  return NS_OK;
}

Here is the call graph for this function:

Definition at line 516 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(url);

  nsXPIDLCString hostName;
  nsresult rv = GetHostname(getter_Copies(hostName));
  nsXPIDLString groupName;
  rv = GetName(getter_Copies(groupName));
  NS_ENSURE_SUCCESS(rv, rv);

  nsCOMPtr<nsIMsgIncomingServer> server;
  rv = GetServer(getter_AddRefs(server));
  NS_ENSURE_SUCCESS(rv, rv);

  PRInt32 port;
  PRBool isSecure = PR_FALSE;
  rv = server->GetIsSecure(&isSecure);
  NS_ENSURE_SUCCESS(rv, rv);
  rv = server->GetPort(&port);
  NS_ENSURE_SUCCESS(rv, rv);
  const char *newsScheme = (isSecure) ? SNEWS_SCHEME : NEWS_SCHEME;
  nsXPIDLCString escapedName;
  rv = NS_MsgEscapeEncodeURLPath(groupName, escapedName);
  NS_ENSURE_SUCCESS(rv, rv);
  *url = PR_smprintf("%s//%s:%ld/%s", newsScheme, hostName.get(), port,
                     escapedName.get());
  return NS_OK;

}

Here is the call graph for this function:

string nsIMsgNewsFolder::getGroupPasswordWithUI ( in wstring  aPromptString,
in wstring  aPromptTitle,
in nsIMsgWindow  aMsgWindow 
) [inherited]
string nsIMsgNewsFolder::getGroupUsernameWithUI ( in wstring  aPromptString,
in wstring  aPromptTitle,
in nsIMsgWindow  aMsgWindow 
) [inherited]
virtual const char* nsMsgNewsFolder::GetIncomingServerType ( ) [inline, protected, virtual]

Definition at line 142 of file nsNewsFolder.h.

{return "nntp";}

Definition at line 505 of file nsNewsFolder.cpp.

{
  nsresult rv = GetDatabase(aMsgWindow);
  *result = nsnull;
    
  if(NS_SUCCEEDED(rv))
    rv = mDatabase->EnumerateMessages(result);

  return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 978 of file nsNewsFolder.cpp.

{
  return GetNewsMessages(aMsgWindow, PR_FALSE, aListener);
}

Here is the call graph for this function:

Here is the caller graph for this function:

nsresult nsMsgNewsFolder::GetNewsMessages ( nsIMsgWindow aMsgWindow,
PRBool  getOld,
nsIUrlListener aListener 
) [protected]

Definition at line 988 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;

  PRBool isNewsServer = PR_FALSE;
  rv = GetIsServer(&isNewsServer);
  if (NS_FAILED(rv)) return rv;
  
  if (isNewsServer) 
    // get new messages only works on a newsgroup, not a news server
    return NS_OK;

  nsCOMPtr <nsINntpService> nntpService = do_GetService(NS_NNTPSERVICE_CONTRACTID, &rv);
  NS_ENSURE_SUCCESS(rv,rv);
  
  nsCOMPtr<nsINntpIncomingServer> nntpServer;
  rv = GetNntpServer(getter_AddRefs(nntpServer));
  if (NS_FAILED(rv)) return rv;
  
  nsCOMPtr <nsIURI> resultUri;
  rv = nntpService->GetNewNews(nntpServer, mURI.get(), aGetOld, this,
                               aMsgWindow, getter_AddRefs(resultUri));
  if (aUrlListener && NS_SUCCEEDED(rv) && resultUri)
  {
    nsCOMPtr<nsIMsgMailNewsUrl> msgUrl (do_QueryInterface(resultUri));
    if (msgUrl)
      msgUrl->RegisterListener(aUrlListener);
  }
  return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1847 of file nsNewsFolder.cpp.

{
  nsresult rv;

  PRBool isNewsServer = PR_FALSE;
  rv = GetIsServer(&isNewsServer);
  NS_ENSURE_SUCCESS(rv,rv);
 
  // persist the open / closed state, if not a server
  // this doesn't matter right now, but it will if we ever add categories
  if (!isNewsServer) 
  {
    *aPersistElided = PR_TRUE;
    return NS_OK;
  }

  nsCOMPtr<nsIPrefBranch> prefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
  NS_ENSURE_SUCCESS(rv,rv);

  rv = prefBranch->GetBoolPref("news.persist_server_open_state_in_folderpane", aPersistElided);
  NS_ENSURE_SUCCESS(rv,rv);
  return rv;
}

Here is the call graph for this function:

Definition at line 880 of file nsNewsFolder.cpp.

{
//  NS_ASSERTION(0,"GetRequiresCleanup not implemented");
  return NS_ERROR_NOT_IMPLEMENTED;
}

Definition at line 886 of file nsNewsFolder.cpp.

{
//  NS_ASSERTION(0, "GetSizeOnDisk not implemented");
  return NS_ERROR_NOT_IMPLEMENTED;
}

Definition at line 1840 of file nsNewsFolder.cpp.

{
  NS_ENSURE_ARG_POINTER(order);
  *order = mSortOrder;
  return NS_OK;
}

Definition at line 333 of file nsNewsFolder.cpp.

{
  nsresult rv;
  
  if (!mInitialized) 
  {
    // do this first, so we make sure to do it, even on failure.
    // see bug #70494
    mInitialized = PR_TRUE;
    
    nsCOMPtr<nsIFileSpec> pathSpec;
    rv = GetPath(getter_AddRefs(pathSpec));
    if (NS_FAILED(rv)) return rv;
    
    nsFileSpec path;
    rv = pathSpec->GetFileSpec(&path);
    if (NS_FAILED(rv)) return rv;
    
    nsFileSpec tempPath(path.GetNativePathCString(), PR_TRUE);
    
    rv = CreateSubFolders(path);
    if (NS_FAILED(rv)) return rv;

    // force ourselves to get initialized from cache
    // Don't care if it fails.  this will fail the first time after 
    // migration, but we continue on.  see #66018
    (void)UpdateSummaryTotals(PR_FALSE);
  }

  rv = mSubFolders->Enumerate(result);
  return rv;
}

Here is the call graph for this function:

Here is the caller graph for this function:

PRInt32 nsMsgNewsFolder::HandleLine ( char *  line,
PRUint32  line_size 
) [virtual]

Definition at line 1067 of file nsNewsFolder.cpp.

{
       return HandleNewsrcLine(line, line_size);
}

Here is the call graph for this function:

PRInt32 nsMsgNewsFolder::HandleNewsrcLine ( char *  line,
PRUint32  line_size 
) [protected]

Definition at line 1073 of file nsNewsFolder.cpp.

{
  nsresult rv;
  
  /* guard against blank line lossage */
  if (line[0] == '#' || line[0] == nsCRT::CR || line[0] == nsCRT::LF) return 0;
  
  line[line_size] = 0;
  
  if ((line[0] == 'o' || line[0] == 'O') &&
    !PL_strncasecmp (line, "options", 7)) 
    return RememberLine(line);
  
  char *s = nsnull;
  char *setStr = nsnull;
  char *end = line + line_size;
  
  for (s = line; s < end; s++)
    if ((*s == ':') || (*s == '!'))
      break;
    
    if (*s == 0)
      /* What is this?? Well, don't just throw it away... */
      return RememberLine(line);
    
    PRBool subscribed = (*s == ':');
    setStr = s+1;
    *s = '\0';
    
    if (*line == '\0') 
      return 0;
    
  // previous versions of Communicator poluted the
  // newsrc files with articles
  // (this would happen when you clicked on a link like
  // news://news.mozilla.org/3746EF3F.6080309@netscape.com)
  //
  // legal newsgroup names can't contain @ or %
  // 
  // News group names are structured into parts separated by dots, 
  // for example "netscape.public.mozilla.mail-news". 
  // Each part may be up to 14 characters long, and should consist 
  // only of letters, digits, "+" and "-", with at least one letter
  //
  // @ indicates an article and %40 is @ escaped.
  // previous versions of Communicator also dumped
  // the escaped version into the newsrc file
  //
  // So lines like this in a newsrc file should be ignored:
  // 3746EF3F.6080309@netscape.com:
  // 3746EF3F.6080309%40netscape.com:
  if (PL_strstr(line,"@") || PL_strstr(line,"%40")) 
    // skipping, it contains @ or %40
    subscribed = PR_FALSE;

  if (subscribed) 
  {
    // we're subscribed, so add it
    nsCOMPtr <nsIMsgFolder> child;
    
    rv = AddNewsgroup(nsDependentCString(line), setStr, getter_AddRefs(child));
    
    if (NS_FAILED(rv)) return -1;
  }
  else {
    rv = RememberUnsubscribedGroup(line, setStr);
    if (NS_FAILED(rv)) return -1;
  }

  return 0;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1020 of file nsNewsFolder.cpp.

{
  nsresult rv = NS_OK;
  if (!mNewsrcFilePath) return NS_ERROR_FAILURE;

  PRBool exists = PR_FALSE;

  rv = mNewsrcFilePath->Exists(&exists);
  if (NS_FAILED(rv)) return rv;

  if (!exists)
       // it is ok for the newsrc file to not exist yet
       return NS_OK;

  char *buffer = nsnull;
  rv = mNewsrcFilePath->OpenStreamForReading();
  NS_ENSURE_SUCCESS(rv,rv);

  PRInt32 numread = 0;

  if (NS_FAILED(m_newsrcInputStream.GrowBuffer(NEWSRC_FILE_BUFFER_SIZE))) 
    return NS_ERROR_FAILURE;

       
  while (1) 
  {
    buffer = m_newsrcInputStream.GetBuffer();
    rv = mNewsrcFilePath->Read(&buffer, NEWSRC_FILE_BUFFER_SIZE, &numread);
    NS_ENSURE_SUCCESS(rv,rv);
    if (numread == 0) {
      break;
    }
    else {
      rv = BufferInput(m_newsrcInputStream.GetBuffer(), numread);
      if (NS_FAILED(rv)) {
        break;
      }
    }
  }

  mNewsrcFilePath->CloseStream();
  
  return rv;
}

Here is the caller graph for this function:

Definition at line 1580 of file nsNewsFolder.cpp.

Here is the call graph for this function:

Definition at line 1963 of file nsNewsFolder.cpp.

{
 if (m_tempMessageStream)
  {
    m_tempMessageStream->Close();
    m_tempMessageStream = nsnull;
  }
  m_downloadingMultipleMessages = PR_FALSE;
  return nsMsgDBFolder::OnStopRunningUrl(aUrl, aExitCode);
}

Definition at line 273 of file nsNewsFolder.cpp.

{
  NS_ASSERTION(0,"ParseFolder not implemented");
       return NS_ERROR_NOT_IMPLEMENTED;
}
PRInt32 nsMsgNewsFolder::RememberLine ( const char *  line) [protected]

Definition at line 1162 of file nsNewsFolder.cpp.

Here is the caller graph for this function:

nsresult nsMsgNewsFolder::RememberUnsubscribedGroup ( const char *  newsgroup,
const char *  setStr 
) [protected]

Definition at line 1147 of file nsNewsFolder.cpp.

{
  if (newsgroup) 
  {
    mUnsubscribedNewsgroupLines += newsgroup;
    mUnsubscribedNewsgroupLines += "! ";
    if (setStr) 
      mUnsubscribedNewsgroupLines += setStr;
    else
      mUnsubscribedNewsgroupLines += MSG_LINEBREAK;
  }
  return NS_OK;
}

Here is the caller graph for this function:

Definition at line 634 of file nsNewsFolder.cpp.

{
  NS_ASSERTION(0,"Rename not implemented");
  return NS_ERROR_NOT_IMPLEMENTED;
}

Definition at line 1896 of file nsNewsFolder.cpp.

{
  if (mIsServer)
  {
    nsCOMPtr<nsIMsgIncomingServer> server;
    nsresult rv = GetServer(getter_AddRefs(server));
    NS_ENSURE_SUCCESS(rv,rv);
    return server->SetFilterList(aFilterList);
  }

  mFilterList = aFilterList;
  return NS_OK;
}

Here is the call graph for this function:

void nsIMsgNewsFolder::SetNewsrcHasChanged ( in boolean  newsrcHasChanged) [inherited]

Here is the caller graph for this function:

Definition at line 1834 of file nsNewsFolder.cpp.

{
  mSortOrder = order;
  return NS_OK;
}

Definition at line 1871 of file nsNewsFolder.cpp.

{
  if (mFilterList) 
  {
    // close the filter log stream
    nsresult rv = mFilterList->SetLogStream(nsnull);
    NS_ENSURE_SUCCESS(rv,rv);
    mFilterList = nsnull;
  }

  mInitialized = PR_FALSE;
  if (mReadSet) {
    // the nsINewsDatabase holds a weak ref to the readset,
    // and we outlive the db, so it's safe to delete it here.
    nsCOMPtr<nsINewsDatabase> db = do_QueryInterface(mDatabase);
    if (db)
      db->SetReadSet(nsnull);
    delete mReadSet;
    mReadSet = nsnull;
  }

  return nsMsgDBFolder::Shutdown(shutdownChildren);
}

Here is the call graph for this function:

Definition at line 407 of file nsNewsFolder.cpp.

{
  // Get news.get_messages_on_select pref
  nsresult rv;
  PRBool getMessagesOnSelect = PR_TRUE;
  nsCOMPtr<nsIPrefBranch> prefBranch = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
  if NS_SUCCEEDED(rv)
    prefBranch->GetBoolPref("news.get_messages_on_select", &getMessagesOnSelect);
  
  // Only if news.get_messages_on_select is true do we get new messages automatically
  if (getMessagesOnSelect) 
  { 
    rv = GetDatabase(aWindow);     // want this cached...
    if (NS_SUCCEEDED(rv))
    { 
      if (mDatabase)
      {
        nsCOMPtr<nsIMsgRetentionSettings> retentionSettings;
        nsresult rv = GetRetentionSettings(getter_AddRefs(retentionSettings));
        if (NS_SUCCEEDED(rv))
          rv = mDatabase->ApplyRetentionSettings(retentionSettings, PR_FALSE);
      }
      rv = AutoCompact(aWindow);
      NS_ENSURE_SUCCESS(rv,rv);
      // GetNewMessages has to be the last rv set before we get to the next check, so
      // that we'll have rv set to NS_MSG_ERROR_OFFLINE when offline and send
      // a folder loaded notification to the front end.
      rv = GetNewMessages(aWindow, nsnull);
    } 
    if (rv != NS_MSG_ERROR_OFFLINE)
      return rv;
  } 
  // We're not getting messages because either get_messages_on_select is
  // false or we're offline. Send an immediate folder loaded notification.
  NotifyFolderEvent(mFolderLoadedAtom);
  return NS_OK;
}

Here is the call graph for this function:

void nsIMsgNewsFolder::updateSummaryFromNNTPInfo ( in long  oldest,
in long  youngest,
in long  total 
) [inherited]

Definition at line 840 of file nsNewsFolder.cpp.

{
  if (!mNotifyCountChanges)
    return NS_OK;
  
  PRInt32 oldUnreadMessages = mNumUnreadMessages;
  PRInt32 oldTotalMessages = mNumTotalMessages;
  //We need to read this info from the database
  nsresult ret = ReadDBFolderInfo(force);
  
  if (NS_SUCCEEDED(ret))
  {
    //Need to notify listeners that total count changed.
    if(oldTotalMessages != mNumTotalMessages) 
      NotifyIntPropertyChanged(kTotalMessagesAtom, oldTotalMessages, mNumTotalMessages);
    
    if(oldUnreadMessages != mNumUnreadMessages) 
      NotifyIntPropertyChanged(kTotalUnreadMessagesAtom, oldUnreadMessages, mNumUnreadMessages);
    
    FlushToFolderCache();
  }
  return ret;
}

Here is the caller graph for this function:


Member Data Documentation

Definition at line 47 of file nsIMsgNewsFolder.idl.

Definition at line 46 of file nsIMsgNewsFolder.idl.

Definition at line 152 of file nsNewsFolder.h.

Definition at line 151 of file nsNewsFolder.h.

nsByteArray nsMsgNewsFolder::m_newsrcInputStream [protected]

Definition at line 145 of file nsNewsFolder.h.

Definition at line 148 of file nsNewsFolder.h.

Definition at line 176 of file nsNewsFolder.h.

Definition at line 177 of file nsNewsFolder.h.

Definition at line 149 of file nsNewsFolder.h.

Definition at line 162 of file nsNewsFolder.h.

Definition at line 161 of file nsNewsFolder.h.

Definition at line 150 of file nsNewsFolder.h.

Definition at line 158 of file nsNewsFolder.h.

Definition at line 154 of file nsNewsFolder.h.

Definition at line 165 of file nsNewsFolder.h.

Definition at line 164 of file nsNewsFolder.h.

Definition at line 168 of file nsNewsFolder.h.

nsMsgKeySet* nsMsgNewsFolder::mReadSet [protected]

Definition at line 156 of file nsNewsFolder.h.

Definition at line 169 of file nsNewsFolder.h.

Definition at line 155 of file nsNewsFolder.h.

Definition at line 74 of file nsIMsgNewsFolder.idl.

Definition at line 61 of file nsIMsgNewsFolder.idl.

Definition at line 75 of file nsIMsgNewsFolder.idl.

readonly attribute ACString nsIMsgNewsFolder::rawName [inherited]

|rawName| is an 8-bit string to represent the name of a newsgroup used by a news server.

It's offered for the convenience of callers so that they don't have to convert |unicodeName| to the server-side name when communicating with a news server. It's US-ASCII except for some 'stand-alone' Chinese news servers that use GB2312 for newsgroup names violating RFC 1036. For those servers, it's GB2312. However, it can be any other single and multibyte encoding in principle. The encoding of this string is stored in |nsINntpIncomingServer| because that's a server-wide property.

Definition at line 60 of file nsIMsgNewsFolder.idl.

Definition at line 62 of file nsIMsgNewsFolder.idl.

readonly attribute AString nsIMsgNewsFolder::unicodeName [inherited]

Definition at line 49 of file nsIMsgNewsFolder.idl.

Definition at line 76 of file nsIMsgNewsFolder.idl.


The documentation for this class was generated from the following files: