/* -*- 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 _nsMsgSpecialViews_H_ #define _nsMsgSpecialViews_H_ #include "mozilla/Attributes.h" #include "nsMsgThreadedDBView.h" class nsMsgThreadsWithUnreadDBView : public nsMsgThreadedDBView { public: nsMsgThreadsWithUnreadDBView(); virtual ~nsMsgThreadsWithUnreadDBView(); virtual const char * GetViewName(void) override {return "ThreadsWithUnreadView"; } NS_IMETHOD CloneDBView(nsIMessenger *aMessengerInstance, nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCommandUpdater, nsIMsgDBView **_retval) override; NS_IMETHOD GetViewType(nsMsgViewTypeValue *aViewType) override; NS_IMETHOD GetNumMsgsInView(int32_t *aNumMsgs) override; virtual bool WantsThisThread(nsIMsgThread *threadHdr) override; protected: virtual nsresult AddMsgToThreadNotInView(nsIMsgThread *threadHdr, nsIMsgDBHdr *msgHdr, bool ensureListed) override; uint32_t m_totalUnwantedMessagesInView; }; class nsMsgWatchedThreadsWithUnreadDBView : public nsMsgThreadedDBView { public: nsMsgWatchedThreadsWithUnreadDBView (); NS_IMETHOD GetViewType(nsMsgViewTypeValue *aViewType) override; NS_IMETHOD CloneDBView(nsIMessenger *aMessengerInstance, nsIMsgWindow *aMsgWindow, nsIMsgDBViewCommandUpdater *aCommandUpdater, nsIMsgDBView **_retval) override; NS_IMETHOD GetNumMsgsInView(int32_t *aNumMsgs) override; virtual const char *GetViewName(void) override { return "WatchedThreadsWithUnreadView"; } virtual bool WantsThisThread(nsIMsgThread *threadHdr) override; protected: virtual nsresult AddMsgToThreadNotInView(nsIMsgThread *threadHdr, nsIMsgDBHdr *msgHdr, bool ensureListed) override; uint32_t m_totalUnwantedMessagesInView; }; #ifdef DOING_CACHELESS_VIEW // This view will initially be used for cacheless IMAP. class nsMsgCachelessView : public nsMsgDBView { public: nsMsgCachelessView(); NS_IMETHOD GetViewType(nsMsgViewTypeValue *aViewType); virtual ~nsMsgCachelessView(); virtual const char * GetViewName(void) {return "nsMsgCachelessView"; } NS_IMETHOD Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue viewType, int32_t *count); nsresult SetViewSize(int32_t setSize); // Override virtual nsresult AddNewMessages() ; virtual nsresult AddHdr(nsIMsgDBHdr *msgHdr); // for news, xover line, potentially, for IMAP, imap line... virtual nsresult AddHdrFromServerLine(char *line, nsMsgKey *msgId) ; virtual void SetInitialSortState(void); virtual nsresult Init(uint32_t *pCount); protected: void ClearPendingIds(); nsIMsgFolder *m_folder; nsMsgViewIndex m_curStartSeq; nsMsgViewIndex m_curEndSeq; bool m_sizeInitialized; }; #endif /* DOING_CACHELESS_VIEW */ #endif