32 #include <nsAutoPtr.h>
34 #include <nsIClassInfoImpl.h>
35 #include <nsIStringEnumerator.h>
36 #include <nsStringGlue.h>
40 #include <sbIFilterableMediaListView.h>
41 #include <sbILibraryConstraints.h>
52 static PRLogModuleInfo* gScriptableFilterResultLog = nsnull;
56 #define LOG(args) PR_LOG(gScriptableFilterResultLog, PR_LOG_WARN, args)
57 #define TRACE(args) PR_LOG(gScriptableFilterResultLog, PR_LOG_DEBUG, args)
66 : mListView(aMediaListView),
67 mPlayer(aRemotePlayer)
70 if (!gScriptableFilterResultLog) {
71 gScriptableFilterResultLog = PR_NewLogModule(
"sbScriptableFilterResult" );
74 TRACE((
"sbScriptableFilterResult::sbScriptableFilterResult()"));
77 sbScriptableFilterResult::~sbScriptableFilterResult()
90 LOG((
"sbScriptableFilterResult::GetArtists()"));
92 nsRefPtr<sbScriptableFilter>
filter =
96 NS_ENSURE_TRUE( filter, NS_ERROR_OUT_OF_MEMORY );
98 NS_ADDREF( *aArtists = filter );
104 LOG((
"sbScriptableFilterResult::GetAlbums()"));
106 nsRefPtr<sbScriptableFilter> filter =
110 NS_ENSURE_TRUE( filter, NS_ERROR_OUT_OF_MEMORY );
112 NS_ADDREF( *aAlbums = filter );
118 LOG((
"sbScriptableFilterResult::GetGenres()"));
120 nsRefPtr<sbScriptableFilter> filter =
124 NS_ENSURE_TRUE( filter, NS_ERROR_OUT_OF_MEMORY );
126 NS_ADDREF( *aGenres = filter );
132 LOG((
"sbScriptableFilterResult::GetYears()"));
134 nsRefPtr<sbScriptableFilter> filter =
138 NS_ENSURE_TRUE( filter, NS_ERROR_OUT_OF_MEMORY );
140 NS_ADDREF( *aYears = filter );
144 NS_IMETHODIMP sbScriptableFilterResult::GetItems(
nsISupports * *aItems)
146 NS_ENSURE_ARG_POINTER(aItems);
147 nsRefPtr<sbScriptableFilterItems>
items =
150 return CallQueryInterface( items.get(), aItems );
161 NS_ENSURE_ARG_POINTER(aClassName);
163 NS_NAMED_LITERAL_CSTRING( kClassName,
"sbScriptableFilterResult" );
164 *aClassName = ToNewCString(kClassName);
165 return aClassName ?
NS_OK : NS_ERROR_OUT_OF_MEMORY;
171 NS_ENSURE_ARG_POINTER(aScriptableFlags);
175 *aScriptableFlags = DONT_ENUM_STATIC_PROPS |
176 DONT_ENUM_QUERY_INTERFACE |
177 DONT_REFLECT_INTERFACE_NAMES |
178 CLASSINFO_INTERFACES_ONLY |
179 USE_JSSTUB_FOR_ADDPROPERTY |
190 LOG((
"sbScriptableFilterResult::Equality()"));
192 NS_ENSURE_ARG_POINTER(_retval);
193 NS_ENSURE_ARG_POINTER(obj);
194 NS_ENSURE_ARG_POINTER(wrapper);
198 if ( !JSVAL_IS_OBJECT(val) ) {
201 JSObject* otherObj = JSVAL_TO_OBJECT(val);
203 nsCOMPtr<nsIXPConnect> xpc;
204 rv = wrapper->GetXPConnect( getter_AddRefs(xpc) );
205 NS_ENSURE_SUCCESS( rv, rv );
207 nsCOMPtr<nsIXPConnectWrappedNative> otherWrapper;
208 rv = xpc->GetWrappedNativeOfJSObject( cx, otherObj, getter_AddRefs(otherWrapper) );
209 if ( NS_FAILED(rv) ) {
214 nsCOMPtr<sbIScriptableFilterResult> otherIface;
215 otherIface = do_QueryInterface( otherWrapper->Native(), &rv );
216 if ( NS_FAILED(rv) ) {
222 rv =
mListView->GetFilterConstraint( getter_AddRefs(constraint) );
223 NS_ENSURE_SUCCESS( rv, rv );
224 NS_ENSURE_STATE(constraint);
226 nsCOMPtr<sbILibraryConstraint> otherConstraint;
227 rv = otherIface->GetConstraint( getter_AddRefs(otherConstraint) );
228 NS_ENSURE_SUCCESS( rv, rv );
230 rv = constraint->Equals( otherConstraint, _retval );
231 NS_ENSURE_SUCCESS( rv, rv );
239 rv =
mListView->GetFilterConstraint(aConstraint);
240 NS_ENSURE_SUCCESS( rv, rv );
241 NS_ENSURE_STATE(aConstraint);
256 NS_IMETHODIMP sbScriptableFilterResult::CanCreateWrapper(
const nsIID * iid,
259 TRACE((
"sbScriptableFilterResult::CanCreateWrapper()"));
261 NS_ENSURE_ARG_POINTER(_retval);
262 *_retval = ToNewCString( NS_LITERAL_CSTRING(
"AllAccess") );
266 NS_IMETHODIMP sbScriptableFilterResult::CanCallMethod(
const nsIID * iid,
267 const PRUnichar *methodName,
270 TRACE((
"sbScriptableFilterResult::CanCallMethod() - %s",
271 NS_LossyConvertUTF16toASCII(methodName).BeginReading()));
273 NS_ENSURE_ARG_POINTER(_retval);
274 *_retval = ToNewCString( NS_LITERAL_CSTRING(
"AllAccess") );
278 NS_IMETHODIMP sbScriptableFilterResult::CanGetProperty(
const nsIID * iid,
279 const PRUnichar *propertyName,
282 TRACE((
"sbScriptableFilterResult::CanGetProperty() - %s",
283 NS_LossyConvertUTF16toASCII(propertyName).BeginReading()));
285 NS_ENSURE_ARG_POINTER(_retval);
286 *_retval = ToNewCString( NS_LITERAL_CSTRING(
"AllAccess") );
290 NS_IMETHODIMP sbScriptableFilterResult::CanSetProperty(
const nsIID * iid,
291 const PRUnichar *propertyName,
294 TRACE((
"sbScriptableFilterResult::CanSetProperty() - %s",
295 NS_LossyConvertUTF16toASCII(propertyName).BeginReading()));
297 NS_ENSURE_ARG_POINTER(_retval);
298 *_retval = ToNewCString( NS_LITERAL_CSTRING(
"NoAccess") );
readonly attribute sbILibraryConstraint constraint
NS_DECL_ISUPPORTS NS_DECL_NSICLASSINFO NS_DECL_NSISECURITYCHECKEDCOMPONENT NS_DECL_SBISCRIPTABLEFILTERRESULT NS_IMETHOD GetClassName(char **aClassName)
nsISecurityCheckedComponent
NS_IMETHOD GetScriptableFlags(PRUint32 *aScriptableFlags)
nsRefPtr< sbRemotePlayer > mPlayer
#define SB_PROPERTY_GENRE
this _dialogInput val(dateText)
The result of a filtering expression in a library.
#define SB_PROPERTY_ARTISTNAME
NS_IMETHOD Equality(nsIXPConnectWrappedNative *wrapper, JSContext *cx, JSObject *obj, jsval val, PRBool *_retval)
NS_IMPL_ISUPPORTS3_CI(sbScriptableFilterResult, sbIScriptableFilterResult, nsISecurityCheckedComponent, nsIXPCScriptable) sbScriptableFilterResult
#define SB_PROPERTY_ALBUMNAME
nsCOMPtr< sbIFilterableMediaListView > mListView
#define SB_IMPL_CLASSINFO_INTERFACES_ONLY(_class)
Array filter(tab.attributes, function(aAttr){return(_this.xulAttributes.indexOf(aAttr.name) >-1);}).forEach(tab.removeAttribute
readonly attribute nsISupports items