diff options
Diffstat (limited to 'mailnews/base/src/nsMsgRDFDataSource.h')
-rw-r--r-- | mailnews/base/src/nsMsgRDFDataSource.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/mailnews/base/src/nsMsgRDFDataSource.h b/mailnews/base/src/nsMsgRDFDataSource.h new file mode 100644 index 000000000..636ebb60a --- /dev/null +++ b/mailnews/base/src/nsMsgRDFDataSource.h @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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 __nsMsgRDFDataSource_h +#define __nsMsgRDFDataSource_h + +#include "nsCOMPtr.h" +#include "nsIRDFDataSource.h" +#include "nsIRDFService.h" +#include "nsIServiceManager.h" +#include "nsCOMArray.h" +#include "nsIObserver.h" +#include "nsITransactionManager.h" +#include "nsIMsgWindow.h" +#include "nsIMsgRDFDataSource.h" +#include "nsWeakReference.h" +#include "nsCycleCollectionParticipant.h" + +class nsMsgRDFDataSource : public nsIRDFDataSource, + public nsIObserver, + public nsSupportsWeakReference, + public nsIMsgRDFDataSource +{ + public: + nsMsgRDFDataSource(); + virtual nsresult Init(); + + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsMsgRDFDataSource, + nsIRDFDataSource) + NS_DECL_NSIMSGRDFDATASOURCE + NS_DECL_NSIRDFDATASOURCE + NS_DECL_NSIOBSERVER + + // called to reset the datasource to an empty state + // if you need to release yourself as an observer/listener, do it here + virtual void Cleanup(); + + protected: + virtual ~nsMsgRDFDataSource(); + nsIRDFService *getRDFService(); + static bool assertEnumFunc(nsIRDFObserver *aObserver, void *aData); + static bool unassertEnumFunc(nsIRDFObserver *aObserver, void *aData); + static bool changeEnumFunc(nsIRDFObserver *aObserver, void *aData); + nsresult NotifyObservers(nsIRDFResource *subject, nsIRDFResource *property, + nsIRDFNode *newObject, nsIRDFNode *oldObject, + bool assert, bool change); + + virtual nsresult NotifyPropertyChanged(nsIRDFResource *resource, + nsIRDFResource *propertyResource, nsIRDFNode *newNode, + nsIRDFNode *oldNode = nullptr); + + nsCOMPtr<nsIMsgWindow> mWindow; + + bool m_shuttingDown; + bool mInitialized; + + private: + nsCOMPtr<nsIRDFService> mRDFService; + nsCOMArray<nsIRDFObserver> mObservers; +}; + +#endif |