diff options
Diffstat (limited to 'mailnews/imap/src/nsImapUtils.h')
-rw-r--r-- | mailnews/imap/src/nsImapUtils.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mailnews/imap/src/nsImapUtils.h b/mailnews/imap/src/nsImapUtils.h new file mode 100644 index 000000000..b24a38a00 --- /dev/null +++ b/mailnews/imap/src/nsImapUtils.h @@ -0,0 +1,77 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef NS_IMAPUTILS_H +#define NS_IMAPUTILS_H + +#include "nsStringGlue.h" +#include "nsIMsgIncomingServer.h" +#include "MailNewsTypes.h" +#include "nsTArray.h" +#include "nsIMailboxSpec.h" +#include "nsCOMPtr.h" + +class nsImapFlagAndUidState; +class nsImapProtocol; + +static const char kImapRootURI[] = "imap:/"; +static const char kImapMessageRootURI[] = "imap-message:/"; +static const char kModSeqPropertyName[] = "highestModSeq"; +static const char kHighestRecordedUIDPropertyName[] = "highestRecordedUID"; +static const char kDeletedHdrCountPropertyName[] = "numDeletedHeaders"; + +extern nsresult +nsImapURI2FullName(const char* rootURI, const char* hostname, const char* uriStr, + char **name); + +extern nsresult +nsParseImapMessageURI(const char* uri, nsCString& folderURI, uint32_t *key, char **part); + +extern nsresult +nsBuildImapMessageURI(const char *baseURI, uint32_t key, nsCString& uri); + +extern nsresult +nsCreateImapBaseMessageURI(const nsACString& baseURI, nsCString& baseMessageURI); + +void AllocateImapUidString(uint32_t *msgUids, uint32_t &msgCount, nsImapFlagAndUidState *flagState, nsCString &returnString); +void ParseUidString(const char *uidString, nsTArray<nsMsgKey> &keys); +void AppendUid(nsCString &msgIds, uint32_t uid); + +class nsImapMailboxSpec : public nsIMailboxSpec +{ +public: + nsImapMailboxSpec(); + + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIMAILBOXSPEC + + nsImapMailboxSpec& operator= (const nsImapMailboxSpec& aCopy); + + nsCOMPtr<nsIImapFlagAndUidState> mFlagState; + nsIMAPNamespace *mNamespaceForFolder; + + uint32_t mBoxFlags; + uint32_t mSupportedUserFlags; + int32_t mFolder_UIDVALIDITY; + uint64_t mHighestModSeq; + int32_t mNumOfMessages; + int32_t mNumOfUnseenMessages; + int32_t mNumOfRecentMessages; + int32_t mNextUID; + nsCString mAllocatedPathName; + nsCString mHostName; + nsString mUnicharPathName; + char mHierarchySeparator; + bool mFolderSelected; + bool mDiscoveredFromLsub; + bool mOnlineVerified; + + nsImapProtocol *mConnection; // do we need this? It seems evil + +private: + virtual ~nsImapMailboxSpec(); +}; + +#endif //NS_IMAPUTILS_H |