mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-15 04:39:31 +00:00
Added flag functions.
This commit is contained in:
parent
b5294bc4cb
commit
e7895f5f2a
@ -15,8 +15,8 @@
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* DO NOT EDIT. THIS FILE IS GENERATED FROM nsIMsgFolder.idl
|
||||
*/
|
||||
|
||||
@ -212,6 +212,21 @@ class nsIMsgFolder : public nsIRDFResource {
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD GetFlag(PRInt32 flag, PRBool *_retval) = 0;
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD ToggleFlag(PRInt32 flag) = 0;
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD OnFlagChange(PRInt32 flag) = 0;
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD GetFlags(PRInt32 *_retval) = 0;
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD GetFoldersWithFlag(PRInt32 flags, nsIMsgFolder **result, PRInt32 resultsize, PRInt32 *numFolders) = 0;
|
||||
|
||||
/* <IDL> */
|
||||
NS_IMETHOD GetExpansionArray(const nsISupportsArray *expansionArray) = 0;
|
||||
};
|
||||
|
||||
#endif /* __gen_nsIMsgFolder_h__ */
|
||||
|
@ -103,6 +103,16 @@ interface nsIMsgFolder : nsIRDFResource {
|
||||
void SetFlag(in long flag);
|
||||
void ClearFlag(in long flag);
|
||||
boolean GetFlag(in long flag);
|
||||
|
||||
void ToggleFlag (in long flag);
|
||||
void OnFlagChange (in long flag);
|
||||
long GetFlags();
|
||||
|
||||
void GetFoldersWithFlag(in long flags, out nsIMsgFolder result,
|
||||
in long resultsize, out long numFolders);
|
||||
|
||||
void GetExpansionArray(in nsISupportsArray expansionArray);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "nsISupports.h"
|
||||
#include "nsIRDFNode.h"
|
||||
#include "nsIRDFResourceFactory.h"
|
||||
#include "nsMsgFolderFlags.h"
|
||||
|
||||
/* use these macros to define a class IID for our component. */
|
||||
static NS_DEFINE_IID(kIMsgFolderIID, NS_IMSGFOLDER_IID);
|
||||
@ -1049,59 +1050,143 @@ NS_IMETHODIMP nsMsgFolder::GetLastMessageLoaded()
|
||||
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::SetFlag (PRInt32 which)
|
||||
NS_IMETHODIMP nsMsgFolder::SetFlag(PRInt32 flag)
|
||||
{
|
||||
// OnFlagChange can be expensive, so don't call it if we don't need to
|
||||
PRBool flagSet;
|
||||
nsresult rv;
|
||||
|
||||
if(!NS_SUCCEEDED(rv = GetFlag(flag, &flagSet)))
|
||||
return rv;
|
||||
|
||||
if (!flagSet)
|
||||
{
|
||||
mFlags |= flag;
|
||||
OnFlagChange(flag);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::ClearFlag (PRInt32 which)
|
||||
NS_IMETHODIMP nsMsgFolder::ClearFlag(PRInt32 flag)
|
||||
{
|
||||
// OnFlagChange can be expensive, so don't call it if we don't need to
|
||||
PRBool flagSet;
|
||||
nsresult rv;
|
||||
|
||||
if(!NS_SUCCEEDED(rv = GetFlag(flag, &flagSet)))
|
||||
return rv;
|
||||
|
||||
if (!flagSet)
|
||||
{
|
||||
mFlags &= ~flag;
|
||||
OnFlagChange (flag);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetFlag(PRInt32 flag, PRBool *_retval)
|
||||
{
|
||||
*_retval = ((mFlags & flag) != 0);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::ToggleFlag(PRInt32 flag)
|
||||
{
|
||||
mFlags ^= flag;
|
||||
OnFlagChange (flag);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::OnFlagChange(PRInt32 flag)
|
||||
{
|
||||
//Still need to implement
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetFlags(PRInt32 *_retval)
|
||||
{
|
||||
*_retval = mFlags;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetFoldersWithFlag(PRInt32 flags, nsIMsgFolder **result,
|
||||
PRInt32 resultsize, PRInt32 *numFolders)
|
||||
{
|
||||
int num = 0;
|
||||
if ((flags & mFlags) == flags) {
|
||||
if (result && (num < resultsize)) {
|
||||
result[num] = this;
|
||||
}
|
||||
num++;
|
||||
}
|
||||
|
||||
nsIMsgFolder *folder = nsnull;
|
||||
for (int i=0; i < mSubFolders->Count(); i++) {
|
||||
nsISupports *supports = mSubFolders->ElementAt(i);
|
||||
if(NS_SUCCEEDED(supports->QueryInterface(kIMsgFolderIID, (void**)&folder)))
|
||||
{
|
||||
// CAREFUL! if NULL ise passed in for result then the caller
|
||||
// still wants the full count! Otherwise, the result should be at most the
|
||||
// number that the caller asked for.
|
||||
int numSubFolders;
|
||||
|
||||
if (!result)
|
||||
{
|
||||
folder->GetFoldersWithFlag(flags, NULL, 0, &numSubFolders);
|
||||
num += numSubFolders;
|
||||
}
|
||||
else if (num < resultsize)
|
||||
{
|
||||
folder->GetFoldersWithFlag(flags, result + num, resultsize - num, &numSubFolders);
|
||||
num += numSubFolders;
|
||||
}
|
||||
else
|
||||
{
|
||||
NS_RELEASE(folder);
|
||||
NS_RELEASE(supports);
|
||||
break;
|
||||
}
|
||||
NS_RELEASE(folder);
|
||||
}
|
||||
NS_RELEASE(supports);
|
||||
}
|
||||
|
||||
*numFolders = num;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetExpansionArray(const nsISupportsArray *expansionArray)
|
||||
{
|
||||
// the application of flags in GetExpansionArray is subtly different
|
||||
// than in GetFoldersWithFlag
|
||||
|
||||
for (int i = 0; i < mSubFolders->Count(); i++)
|
||||
{
|
||||
nsISupports *supports = mSubFolders->ElementAt(i);
|
||||
nsIMsgFolder *folder = nsnull;
|
||||
|
||||
if(NS_SUCCEEDED(supports->QueryInterface(kIMsgFolderIID, (void**)&folder)))
|
||||
{
|
||||
((nsISupportsArray*)expansionArray)->InsertElementAt(folder, expansionArray->Count());
|
||||
PRInt32 flags;
|
||||
folder->GetFlags(&flags);
|
||||
if (!(flags & MSG_FOLDER_FLAG_ELIDED))
|
||||
folder->GetExpansionArray(expansionArray);
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#ifdef HAVE_FLAGS
|
||||
NS_IMETHODIMP nsMsgFolder::GetFlags(PRUint32 *flags) const
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::ToggleFlag (PRUint32 which)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::OnFlagChange (PRUint32 which)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::SetFlagInAllFolderPanes(PRUInt32 which)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::TestFlag (PRUint32 which, PRBool *result)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetFoldersWithFlag(PRUint32 flags, nsIMsgFolder** result,
|
||||
PRInt32 resultsize, PRInt32 *numFolders)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetExpansionArray (nsISupportsArray ** expansionArray )
|
||||
{
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NET
|
||||
|
@ -198,22 +198,18 @@ public:
|
||||
NS_IMETHOD ClearFlag (PRInt32 which);
|
||||
NS_IMETHOD GetFlag(PRInt32 flag, PRBool *_retval);
|
||||
|
||||
#ifdef HAVE_FLAGS
|
||||
NS_IMETHOD ToggleFlag (PRUint32 which);
|
||||
NS_IMETHOD OnFlagChange (PRUint32 which);
|
||||
NS_IMETHOD GetFlags(PRUint32 *flags) const;
|
||||
NS_IMETHOD ToggleFlag (PRInt32 which);
|
||||
NS_IMETHOD OnFlagChange (PRInt32 which);
|
||||
NS_IMETHOD GetFlags(PRInt32 *flags);
|
||||
|
||||
NS_IMETHOD SetFlagInAllFolderPanes(PRUInt32 which);
|
||||
#ifdef HAVE_PANE
|
||||
NS_IMETHOD SetFlagInAllFolderPanes(PRInt32 which);
|
||||
#endif
|
||||
|
||||
|
||||
NS_IMETHOD TestFlag (PRUint32 which, PRBool *result){ return (mFlags & which) != 0; } // Type conversion to char-sized XP_Bool
|
||||
|
||||
NS_IMETHOD GetFoldersWithFlag(PRUint32 flags, nsIMsgFolder** result,
|
||||
NS_IMETHOD GetFoldersWithFlag(PRInt32 flags, nsIMsgFolder** result,
|
||||
PRInt32 resultsize, PRInt32 *numFolders);
|
||||
|
||||
// for everyone else...
|
||||
NS_IMETHOD GetExpansionArray (nsISupportsArray ** expansionArray );
|
||||
#endif
|
||||
NS_IMETHOD GetExpansionArray(const nsISupportsArray *expansionArray);
|
||||
|
||||
#ifdef HAVE_NET
|
||||
NS_IMETHOD EscapeMessageId(const char *messageId, const char **escapeMessageID);
|
||||
|
Loading…
x
Reference in New Issue
Block a user