diff options
Diffstat (limited to '')
-rw-r--r-- | comm/mailnews/base/src/nsMsgXFVirtualFolderDBView.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/comm/mailnews/base/src/nsMsgXFVirtualFolderDBView.h b/comm/mailnews/base/src/nsMsgXFVirtualFolderDBView.h new file mode 100644 index 0000000000..5b8b627347 --- /dev/null +++ b/comm/mailnews/base/src/nsMsgXFVirtualFolderDBView.h @@ -0,0 +1,70 @@ +/* -*- 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 _nsMsgXFVirtualFolderDBView_H_ +#define _nsMsgXFVirtualFolderDBView_H_ + +#include "mozilla/Attributes.h" +#include "nsMsgSearchDBView.h" +#include "nsIMsgCopyServiceListener.h" +#include "nsIMsgSearchNotify.h" +#include "nsCOMArray.h" + +class nsMsgGroupThread; + +class nsMsgXFVirtualFolderDBView : public nsMsgSearchDBView { + public: + nsMsgXFVirtualFolderDBView(); + virtual ~nsMsgXFVirtualFolderDBView(); + + // we override all the methods, currently. Might change... + NS_DECL_NSIMSGSEARCHNOTIFY + + virtual const char* GetViewName(void) override { + return "XFVirtualFolderView"; + } + NS_IMETHOD Open(nsIMsgFolder* folder, nsMsgViewSortTypeValue sortType, + nsMsgViewSortOrderValue sortOrder, + nsMsgViewFlagsTypeValue viewFlags, int32_t* pCount) override; + NS_IMETHOD CloneDBView(nsIMessenger* aMessengerInstance, + nsIMsgWindow* aMsgWindow, + nsIMsgDBViewCommandUpdater* aCmdUpdater, + nsIMsgDBView** _retval) override; + NS_IMETHOD CopyDBView(nsMsgDBView* aNewMsgDBView, + nsIMessenger* aMessengerInstance, + nsIMsgWindow* aMsgWindow, + nsIMsgDBViewCommandUpdater* aCmdUpdater) override; + NS_IMETHOD Close() override; + NS_IMETHOD GetViewType(nsMsgViewTypeValue* aViewType) override; + NS_IMETHOD DoCommand(nsMsgViewCommandTypeValue command) override; + NS_IMETHOD SetViewFlags(nsMsgViewFlagsTypeValue aViewFlags) override; + NS_IMETHOD OnHdrPropertyChanged(nsIMsgDBHdr* aHdrToChange, + const nsACString& property, bool aPreChange, + uint32_t* aStatus, + nsIDBChangeListener* aInstigator) override; + NS_IMETHOD GetMsgFolder(nsIMsgFolder** aMsgFolder) override; + + virtual nsresult OnNewHeader(nsIMsgDBHdr* newHdr, nsMsgKey parentKey, + bool ensureListed) override; + void UpdateCacheAndViewForPrevSearchedFolders(nsIMsgFolder* curSearchFolder); + void UpdateCacheAndViewForFolder(nsIMsgFolder* folder, + nsTArray<nsMsgKey> const& newHits); + void RemovePendingDBListeners(); + + protected: + virtual nsresult GetMessageEnumerator(nsIMsgEnumerator** enumerator) override; + + nsCOMArray<nsIMsgFolder> m_foldersSearchingOver; + nsCOMArray<nsIMsgDBHdr> m_hdrHits; + nsCOMPtr<nsIMsgFolder> m_curFolderGettingHits; + // keeps track of the index of the first hit from the cur folder + uint32_t m_curFolderStartKeyIndex; + bool m_curFolderHasCachedHits; + bool m_doingSearch; + // Are we doing a quick search on top of the virtual folder search? + bool m_doingQuickSearch; +}; + +#endif |