1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef _nsMsgQuickSearchDBView_H_ 7 #define _nsMsgQuickSearchDBView_H_ 8 9 #include "mozilla/Attributes.h" 10 #include "nsMsgThreadedDBView.h" 11 #include "nsIMsgSearchNotify.h" 12 #include "nsIMsgSearchSession.h" 13 #include "nsCOMArray.h" 14 #include "nsIMsgHdr.h" 15 #include "nsIWeakReferenceUtils.h" 16 17 class nsMsgQuickSearchDBView : public nsMsgThreadedDBView, 18 public nsIMsgSearchNotify { 19 public: 20 nsMsgQuickSearchDBView(); 21 22 NS_DECL_ISUPPORTS_INHERITED 23 NS_DECL_NSIMSGSEARCHNOTIFY 24 GetViewName(void)25 virtual const char* GetViewName(void) override { return "QuickSearchView"; } 26 NS_IMETHOD Open(nsIMsgFolder* folder, nsMsgViewSortTypeValue sortType, 27 nsMsgViewSortOrderValue sortOrder, 28 nsMsgViewFlagsTypeValue viewFlags, int32_t* pCount) override; 29 NS_IMETHOD OpenWithHdrs(nsIMsgEnumerator* aHeaders, 30 nsMsgViewSortTypeValue aSortType, 31 nsMsgViewSortOrderValue aSortOrder, 32 nsMsgViewFlagsTypeValue aViewFlags, 33 int32_t* aCount) override; 34 NS_IMETHOD CloneDBView(nsIMessenger* aMessengerInstance, 35 nsIMsgWindow* aMsgWindow, 36 nsIMsgDBViewCommandUpdater* aCommandUpdater, 37 nsIMsgDBView** _retval) override; 38 NS_IMETHOD CopyDBView(nsMsgDBView* aNewMsgDBView, 39 nsIMessenger* aMessengerInstance, 40 nsIMsgWindow* aMsgWindow, 41 nsIMsgDBViewCommandUpdater* aCmdUpdater) override; 42 NS_IMETHOD DoCommand(nsMsgViewCommandTypeValue aCommand) override; 43 NS_IMETHOD GetViewType(nsMsgViewTypeValue* aViewType) override; 44 NS_IMETHOD SetViewFlags(nsMsgViewFlagsTypeValue aViewFlags) override; 45 NS_IMETHOD SetSearchSession(nsIMsgSearchSession* aSearchSession) override; 46 NS_IMETHOD GetSearchSession(nsIMsgSearchSession** aSearchSession) override; 47 NS_IMETHOD OnHdrFlagsChanged(nsIMsgDBHdr* aHdrChanged, uint32_t aOldFlags, 48 uint32_t aNewFlags, 49 nsIDBChangeListener* aInstigator) override; 50 NS_IMETHOD OnHdrPropertyChanged(nsIMsgDBHdr* aHdrToChange, bool aPreChange, 51 uint32_t* aStatus, 52 nsIDBChangeListener* aInstigator) override; 53 NS_IMETHOD OnHdrDeleted(nsIMsgDBHdr* aHdrDeleted, nsMsgKey aParentKey, 54 int32_t aFlags, 55 nsIDBChangeListener* aInstigator) override; 56 NS_IMETHOD GetNumMsgsInView(int32_t* aNumMsgs) override; 57 58 protected: 59 virtual ~nsMsgQuickSearchDBView(); 60 nsWeakPtr m_searchSession; 61 nsTArray<nsMsgKey> m_origKeys; 62 bool m_usingCachedHits; 63 bool m_cacheEmpty; 64 nsCOMArray<nsIMsgDBHdr> m_hdrHits; 65 virtual nsresult AddHdr(nsIMsgDBHdr* msgHdr, 66 nsMsgViewIndex* resultIndex = nullptr) override; 67 virtual nsresult OnNewHeader(nsIMsgDBHdr* newHdr, nsMsgKey aParentKey, 68 bool ensureListed) override; 69 virtual nsresult DeleteMessages(nsIMsgWindow* window, 70 nsTArray<nsMsgViewIndex> const& selection, 71 bool deleteStorage) override; 72 virtual nsresult SortThreads(nsMsgViewSortTypeValue sortType, 73 nsMsgViewSortOrderValue sortOrder) override; 74 virtual nsresult GetFirstMessageHdrToDisplayInThread( 75 nsIMsgThread* threadHdr, nsIMsgDBHdr** result) override; 76 virtual nsresult ExpansionDelta(nsMsgViewIndex index, 77 int32_t* expansionDelta) override; 78 virtual nsresult ListCollapsedChildren( 79 nsMsgViewIndex viewIndex, 80 nsTArray<RefPtr<nsIMsgDBHdr>>& messageArray) override; 81 virtual nsresult ListIdsInThread(nsIMsgThread* threadHdr, 82 nsMsgViewIndex startOfThreadViewIndex, 83 uint32_t* pNumListed) override; 84 virtual nsresult ListIdsInThreadOrder(nsIMsgThread* threadHdr, 85 nsMsgKey parentKey, uint32_t level, 86 nsMsgViewIndex* viewIndex, 87 uint32_t* pNumListed) override; 88 virtual nsresult ListIdsInThreadOrder(nsIMsgThread* threadHdr, 89 nsMsgKey parentKey, uint32_t level, 90 uint32_t callLevel, nsMsgKey keyToSkip, 91 nsMsgViewIndex* viewIndex, 92 uint32_t* pNumListed); 93 virtual nsresult GetMessageEnumerator(nsIMsgEnumerator** enumerator) override; 94 void SavePreSearchInfo(); 95 void ClearPreSearchInfo(); 96 }; 97 98 #endif 99