27 #ifndef __SBLOCALDATABASECASCADEFILTERSET_H__
28 #define __SBLOCALDATABASECASCADEFILTERSET_H__
32 #include <nsAutoPtr.h>
34 #include <nsCOMArray.h>
35 #include <nsHashKeys.h>
36 #include <nsISerializable.h>
37 #include <nsIStringEnumerator.h>
38 #include <nsStringGlue.h>
40 #include <nsTHashtable.h>
42 #include <sbICascadeFilterSet.h>
43 #include <sbILocalDatabaseAsyncGUIDArray.h>
44 #include <sbIMediaListListener.h>
49 class nsIMutableArray;
50 class nsIObjectInputStream;
51 class nsIObjectOutputStream;
70 typedef nsTArray<nsString> sbStringArray;
74 NS_DECL_SBICASCADEFILTERSET
75 NS_DECL_SBIMEDIALISTLISTENER
98 nsresult
OnGetLength(PRUint32 aIndex, PRUint32 aLength);
103 struct sbFilterSpec {
107 invalidationPending(PR_FALSE)
113 sbStringArray propertyList;
114 sbStringArray values;
115 nsCOMPtr<sbILocalDatabaseAsyncGUIDArray>
array;
116 nsRefPtr<sbLocalDatabaseTreeView>
treeView;
117 nsRefPtr<sbLocalDatabaseCascadeFilterSetArrayListener> arrayListener;
118 PRUint32 cachedValueCount;
119 PRBool invalidationPending;
122 nsresult ConfigureArray(PRUint32 aIndex);
124 nsresult ConfigureFilterArray(sbFilterSpec* aSpec,
125 const nsAString& aSortProperty);
127 nsresult InvalidateFilter(sbFilterSpec& aFilter);
129 nsresult UpdateListener(PRBool aRemoveListener = PR_TRUE);
135 static PLDHashOperator PR_CALLBACK
136 OnValuesChangedCallback(nsISupportsHashKey* aKey,
140 nsRefPtr<sbLocalDatabaseLibrary> mLibrary;
147 nsCOMPtr<sbIMediaList> mMediaList;
150 nsCOMPtr<sbILocalDatabaseAsyncGUIDArray> mProtoArray;
153 nsTArray<sbFilterSpec> mFilters;
156 nsTHashtable<nsISupportsHashKey> mListeners;
170 NS_DECL_SBILOCALDATABASEASYNCGUIDARRAYLISTENER
175 nsCOMPtr<nsIWeakReference> mWeakCascadeFilterSet;
184 NS_DECL_NSISTRINGENUMERATOR
189 nsCOMPtr<sbILocalDatabaseAsyncGUIDArray> mArray;
196 typedef nsTArray<nsString> sbStringArray;
199 NS_DECL_NSISERIALIZABLE
nsresult AddConfiguration(sbILocalDatabaseGUIDArray *aArray)
[USER CODE SHOULD NOT REFERENCE THIS CLASS]
nsRefPtr< sbLocalDatabaseTreeViewState > treeViewState
nsresult AddFilters(sbILibraryConstraintBuilder *aBuilder, PRBool *aChanged)
NS_DECL_ISUPPORTS NS_DECL_SBICASCADEFILTERSET NS_DECL_SBIMEDIALISTLISTENER sbLocalDatabaseCascadeFilterSet(sbLocalDatabaseMediaListView *aMediaListView)
NS_DECL_ISUPPORTS NS_DECL_SBILOCALDATABASEASYNCGUIDARRAYLISTENER nsresult Init(sbLocalDatabaseCascadeFilterSet *aCascadeFilterSet)
Cascade filter management for a media list.
[USER CODE SHOULD NOT REFERENCE THIS CLASS]
nsresult GetState(sbLocalDatabaseCascadeFilterSetState **aState)
boolean isSearch(in unsigned short aIndex)
Determine if the filter at a given index is a search filter.
nsTArray< Spec > mFilters
void ClearMediaListView()
nsresult Init(sbLocalDatabaseLibrary *aLibrary, sbILocalDatabaseAsyncGUIDArray *aProtoArray, sbLocalDatabaseCascadeFilterSetState *aState)
An interface to carry around arrays of nsIProperty instances Note that implementations of the interfa...
[USER CODE SHOULD NOT REFERENCE THIS CLASS]
nsresult AddSearches(sbILibraryConstraintBuilder *aBuilder, PRBool *aChanged)
~sbLocalDatabaseCascadeFilterSet()
NS_DECL_ISUPPORTS NS_DECL_NSISTRINGENUMERATOR sbGUIDArrayPrimarySortEnumerator(sbILocalDatabaseAsyncGUIDArray *aArray)
NS_DECL_ISUPPORTS NS_DECL_NSISERIALIZABLE nsresult ToString(nsAString &aStr)
sbStringArray propertyList
[USER CODE SHOULD NOT REFERENCE THIS CLASS]
nsresult OnGetLength(PRUint32 aIndex, PRUint32 aLength)