author Ian Neal <>
Sun, 28 Oct 2012 23:01:37 +0000
changeset 14133 2f982f997c225f2365ab88451859207d742ad225
parent 13324 3f9b812e72471c2172bfde0ebbeeb210bf5f1a95
child 16152 63ae3d6b6984b649228a8a2d5d1586238a4c2ea0
permissions -rw-r--r--
Bug 803914 - Port |Bug 791305 Use libjpeg's color conversion code instead of our own| to comm-central r=Callek

/* -*- 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 */


#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
  virtual ~nsImapMailboxSpec();
  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