|
1 /* |
|
2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Media item |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 #ifndef C_GLXMEDIA_H |
|
22 #define C_GLXMEDIA_H |
|
23 |
|
24 #include <e32base.h> |
|
25 #include <glxmediageneraldefs.h> |
|
26 #include <mpxmediageneraldefs.h> |
|
27 |
|
28 #include "glxmediaid.h" |
|
29 #include "glxthumbnailinfo.h" |
|
30 |
|
31 class CGlxMedia; |
|
32 class CGlxMediaList; |
|
33 class CGlxThumbnailAttribute; |
|
34 class CGlxUstringConverter; |
|
35 class MGlxMediaUser; |
|
36 class TCoordinate; |
|
37 /** |
|
38 * TGlxMedia |
|
39 * |
|
40 * Reference to a media item in the item pool. |
|
41 * |
|
42 * @ingroup mlm_media_list_manager_design |
|
43 */ |
|
44 NONSHARABLE_CLASS( TGlxMedia ) |
|
45 { |
|
46 friend class CGlxMediaList; // To avoid exposing a SetProperties(...) interface |
|
47 //Only to access AttributeTypeId to get the MPX attribute type |
|
48 friend class GlxUStringConverter; |
|
49 public: |
|
50 inline TGlxMedia( const TGlxMediaId& aId ) : iId( aId ) { iItem = NULL; }; |
|
51 inline TGlxMedia( const TGlxMediaId& aId, CGlxMedia* aProperties ) : iId( aId ) { iItem = aProperties; }; |
|
52 inline TGlxMedia( const TGlxMedia& aItem ) : iId( aItem.iId ) { iItem = aItem.iItem; }; |
|
53 |
|
54 /** |
|
55 * Constructor |
|
56 * Not inlined as not intended to be used outside the dll |
|
57 * Only intended to be used for static items |
|
58 * @param aMedia Media object from which to take the id, and to which to point |
|
59 */ |
|
60 TGlxMedia( CGlxMedia& aMedia ); |
|
61 |
|
62 /** |
|
63 * @return Id of this media item |
|
64 */ |
|
65 inline TGlxMediaId Id() const { return iId; }; |
|
66 |
|
67 /** |
|
68 * @return Properties object of this media item |
|
69 * @note May return NULL if the properties are not yet available |
|
70 */ |
|
71 inline const CGlxMedia* Properties() const { return iItem; }; |
|
72 |
|
73 /** |
|
74 * Compare two media items by id |
|
75 * This can be used in array's Find etc. methods |
|
76 */ |
|
77 IMPORT_C static TBool MatchById(const TGlxMedia& aMedia1, const TGlxMedia& aMedia2); |
|
78 |
|
79 /** |
|
80 * Tests to see if the Media is a static. |
|
81 * returns False if item is not static |
|
82 * True is item is static |
|
83 */ |
|
84 IMPORT_C TBool IsStatic() const; |
|
85 |
|
86 /** |
|
87 * Get the command associated with a static media item. |
|
88 * @param aCmd Reference to variable into which to place the command |
|
89 * @return EFalse if unable to get command - aCmd is unchanged. |
|
90 * ETrue if command successfully put in aCmd. |
|
91 */ |
|
92 IMPORT_C TBool GetStaticItemCommand(TInt& aCmd) const; |
|
93 |
|
94 /** |
|
95 * Get the date associated with the media. |
|
96 * @param aDate Reference to variable into which to place the date |
|
97 * @return EFalse if unable to get date - aDate is unchanged. |
|
98 * ETrue if date successfully put in aDate. |
|
99 */ |
|
100 IMPORT_C TBool GetDate(TTime& aDate) const; |
|
101 |
|
102 /** |
|
103 * Get the date associated with the media. |
|
104 * @param aDate Reference to variable into which to place the date |
|
105 * @return EFalse if unable to get date - aDate is unchanged. |
|
106 * ETrue if date successfully put in aDate. |
|
107 */ |
|
108 IMPORT_C TBool GetLastModifiedDate(TTime& aDate) const; |
|
109 |
|
110 /** |
|
111 * Get the general category associated with the media. |
|
112 * @param aCategory Reference to variable into which to place the category |
|
113 * @return The category or EMPXNoCategory if unsuccessful. |
|
114 */ |
|
115 IMPORT_C TMPXGeneralCategory Category() const; |
|
116 |
|
117 /** |
|
118 * Get the dimensions associated with the media. |
|
119 * @param aSize Reference to variable into which to place the dimensions |
|
120 * @return EFalse if unable to get dimensions - aSize is unchanged. |
|
121 * ETrue if dimensions successfully put in aSize. |
|
122 */ |
|
123 IMPORT_C TBool GetDimensions(TSize& aSize) const; |
|
124 |
|
125 /** |
|
126 * Get the (file) size associated with the media. |
|
127 * @param aSize Reference to variable into which to place the (file) size |
|
128 * @return EFalse if unable to get size - aSize is unchanged. |
|
129 * ETrue if size successfully put in aSize. |
|
130 */ |
|
131 IMPORT_C TBool GetSize(TInt& aSize) const; |
|
132 |
|
133 /** |
|
134 * Get the duration associated with the media. |
|
135 * @param aDuration Reference to variable into which to place the duration |
|
136 * @return EFalse if unable to get size - aDuration is unchanged. |
|
137 * ETrue if duration successfully put in aDuration. |
|
138 */ |
|
139 IMPORT_C TBool GetDuration(TReal32& aDuration) const; |
|
140 |
|
141 /** |
|
142 * Get the frame count associated with the media. |
|
143 * @param aFrameCount Reference to variable into which to place count |
|
144 * @return EFalse if unable to get count - aFrameCount is unchanged. |
|
145 * ETrue if count successfully put in aFrameCount. |
|
146 */ |
|
147 IMPORT_C TBool GetFrameCount(TInt& aFrameCount) const; |
|
148 |
|
149 /** |
|
150 * Get the general count associated with the media. |
|
151 * @param aGeneralCount Reference to variable into which to place count |
|
152 * @return EFalse if unable to get count - aGeneralCount is unchanged. |
|
153 * ETrue if count successfully put in aGeneralCount. |
|
154 */ |
|
155 IMPORT_C TBool GetContainedItemCount(TInt& aGeneralCount) const; |
|
156 |
|
157 /** |
|
158 * Get the general count associated with the media. |
|
159 * @param aGeneralCount Reference to variable into which to place count |
|
160 * @return EFalse if unable to get count - aGeneralCount is unchanged. |
|
161 * ETrue if count successfully put in aGeneralCount. |
|
162 */ |
|
163 IMPORT_C TBool GetSlideshowPlayableContainedItemCount(TInt& aGeneralCount) const; |
|
164 |
|
165 /** |
|
166 * Get the coordinate associated with the media. |
|
167 * @param aCoordinate Reference to variable into which to place the coordinate |
|
168 * @return EFalse if unable to get coordinate - aCoordinate is unchanged. |
|
169 * ETrue if coordinate successfully put in aCoordinate. |
|
170 */ |
|
171 IMPORT_C TBool GetCoordinate(TCoordinate& aCoordinate) const; |
|
172 |
|
173 /** |
|
174 * Get the Icon Info associated with the media. |
|
175 * @param aInfo Reference to variable into which to place the icon Info |
|
176 * @return EFalse if unable to get info - aInfo is unchanged. |
|
177 * ETrue if info successfully put in aInfo. |
|
178 */ |
|
179 IMPORT_C TBool GetIconInfo(TIconInfo& aInfo) const; |
|
180 |
|
181 /** |
|
182 * Returns the DRM protection indication associated with the media. |
|
183 * @return EFalse if not protected. |
|
184 * ETrue if protected (also by default). |
|
185 */ |
|
186 IMPORT_C TBool IsDrmProtected() const; |
|
187 |
|
188 /** |
|
189 * Get the DRM protection indicator associated with the media. |
|
190 * @param aIsProtected Reference to variable into which to place the DRM indicator |
|
191 * @return EFalse if unable to get indicator - aIsProtected is unchanged. |
|
192 * ETrue if indicator successfully put in aIsProtected. |
|
193 */ |
|
194 IMPORT_C TBool GetDrmProtected(TBool& aIsProtected) const; |
|
195 |
|
196 /** |
|
197 * Get the DRM protection indicator associated with the media. |
|
198 * @param aIsProtected Reference to variable into which to place the DRM indicator |
|
199 * @return EFalse if unable to get indicator - aIsProtected is unchanged. |
|
200 * ETrue if indicator successfully put in aIsProtected. |
|
201 */ |
|
202 IMPORT_C TBool GetDrmValidity(TGlxMediaGeneralRightsValidity& aIsValid) const; |
|
203 |
|
204 /** |
|
205 * Get the System Item indicator associated with the media. |
|
206 * @param aIsSystemItem Reference to variable into which to place the SI indicator |
|
207 * @return EFalse if unable to get indicator - aIsSystemItem is unchanged. |
|
208 * ETrue if indicator successfully put in aIsSystemItem. |
|
209 */ |
|
210 IMPORT_C TBool GetSystemItem(TBool& aIsSystemItem) const; |
|
211 |
|
212 /** |
|
213 * Get the title associated with the media. |
|
214 * @return descriptor reference to title if found, else to an empty descriptor. |
|
215 */ |
|
216 IMPORT_C const TDesC& Title() const; |
|
217 |
|
218 /** |
|
219 * Get the subtitle associated with the media. |
|
220 * @return descriptor reference to subtitle if found, else to an empty descriptor. |
|
221 */ |
|
222 IMPORT_C const TDesC& SubTitle() const; |
|
223 |
|
224 /** |
|
225 * Get the comment associated with the media. |
|
226 * @return descriptor reference to comment if found, else to the NULL descriptor. |
|
227 */ |
|
228 IMPORT_C const TDesC& Comment() const; |
|
229 |
|
230 /** |
|
231 * Get the URI associated with the media. |
|
232 * @return Uri for success or KNullDesC for failure |
|
233 */ |
|
234 IMPORT_C const TDesC& Uri() const; |
|
235 |
|
236 /** |
|
237 * Get the MimeType associated with the media. |
|
238 * @return MimeType for success or KNullDesC for failure |
|
239 */ |
|
240 IMPORT_C const TDesC& MimeType() const; |
|
241 |
|
242 /** |
|
243 * Get a thumbnail attribute associated with the media. |
|
244 * @param aAttribute The attribute to obtain |
|
245 * @return A pointer to the thumbnail attribute or NULL if unsuccessful. |
|
246 */ |
|
247 IMPORT_C const CGlxThumbnailAttribute* TGlxMedia::ThumbnailAttribute( |
|
248 TMPXAttribute& aAttribute) const; |
|
249 |
|
250 /** |
|
251 * Find the closest available thumbnail to a given size. |
|
252 * @param aAttribute Set to the closest available thumbnail, if any |
|
253 * @param aDesiredSize Size of thumbnail required |
|
254 * @param aDrmValid If false, the function will not return a thumbnail |
|
255 bigger than the requested size |
|
256 * @return EFalse if no thumbnails available. |
|
257 * ETrue if aAttribute has been set. |
|
258 */ |
|
259 IMPORT_C TBool GetClosestThumbnail( TMPXAttribute& aAttribute, |
|
260 const TSize& aDesiredSize, TBool aDrmValid ) const; |
|
261 |
|
262 /** |
|
263 * Can the media be played in slideshow |
|
264 * @return EFalse if not playable. |
|
265 * ETrue if playable. |
|
266 */ |
|
267 IMPORT_C TBool IsSlideShowPlayableContent() const; |
|
268 |
|
269 /** |
|
270 * Returns the IdSpaceId associated with the media. |
|
271 * @return TGlxIdSpaceId of the media |
|
272 */ |
|
273 IMPORT_C TGlxIdSpaceId IdSpaceId() const; |
|
274 |
|
275 /** |
|
276 * Set media object pointer |
|
277 * not inlined, since will not be exported |
|
278 * @param aMedia Media object, or NULL |
|
279 * @param aMediaUser User of media |
|
280 * @param aIndex Index of media object in media list user |
|
281 */ |
|
282 void SetMedia( CGlxMedia* Media, MGlxMediaUser& aMediaUser, TInt aIndex = KErrNotFound); |
|
283 |
|
284 /** |
|
285 * Update media object |
|
286 * Used to update the index into the media list user |
|
287 * @param aMediaUser User of media |
|
288 * @param aIndex Index of media object in media list user |
|
289 */ |
|
290 void UpdateMedia( MGlxMediaUser& aMediaUser, TInt aIndex ); |
|
291 |
|
292 IMPORT_C void DeleteLocationAttribute(); |
|
293 |
|
294 private: |
|
295 /** |
|
296 * Unique identifier of this media item |
|
297 */ |
|
298 TGlxMediaId iId; |
|
299 |
|
300 /** |
|
301 * Pointer to the shared instance of media item properties |
|
302 * Not owned |
|
303 */ |
|
304 CGlxMedia* iItem; |
|
305 }; |
|
306 |
|
307 /** |
|
308 * CGlxMedia |
|
309 * |
|
310 * Basic properties for a media item |
|
311 * |
|
312 * @lib glxmedialists.lib |
|
313 */ |
|
314 NONSHARABLE_CLASS( CGlxMedia ) : public CBase |
|
315 { |
|
316 public: |
|
317 |
|
318 /** |
|
319 * Constructor |
|
320 * @param aId media item ID |
|
321 */ |
|
322 IMPORT_C CGlxMedia( const TGlxMediaId& aId ); |
|
323 |
|
324 /** |
|
325 * Destructor |
|
326 */ |
|
327 IMPORT_C ~CGlxMedia(); |
|
328 |
|
329 /** |
|
330 * @param aId New Id for this media item. |
|
331 */ |
|
332 inline void SetId(const TGlxMediaId& aId) { iId = aId; } // TEMPORARY, merge to attribute array |
|
333 |
|
334 /** |
|
335 * @return Id of this media item |
|
336 */ |
|
337 inline TGlxMediaId Id() const { return iId; }; // TEMPORARY, merge to attribute array |
|
338 |
|
339 public: |
|
340 |
|
341 /** |
|
342 * The attributes provided in this media object |
|
343 * |
|
344 * @return array of attributes indicating the attributes for the values contained |
|
345 * in this object |
|
346 */ |
|
347 inline const TArray<TMPXAttribute> Attributes() const; |
|
348 |
|
349 /** |
|
350 * Does this object contain the value for a given attribute |
|
351 * |
|
352 * @param aAttribute, the specified attribute |
|
353 * @return whether supported or not |
|
354 */ |
|
355 inline TBool IsSupported(const TMPXAttribute& aAttribute) const; |
|
356 |
|
357 /** |
|
358 * The number of attribute values provided in this media object |
|
359 * |
|
360 * @return count of attribute values in this object |
|
361 */ |
|
362 inline TInt Count() const; |
|
363 |
|
364 /** |
|
365 * The attribute for a specific index |
|
366 * |
|
367 * @param aIndex the index from 0 to Count()-1, covering all the values |
|
368 * provided in this object |
|
369 * @return the attribute corresponding to the value at the specified index |
|
370 */ |
|
371 inline const TMPXAttribute& Attribute(TInt aIndex) const; |
|
372 |
|
373 /** |
|
374 * The index of a given attribute |
|
375 * |
|
376 * @param aAttribute the specified attribute |
|
377 * @return the index, or KErrNotFound if not present in this object |
|
378 */ |
|
379 inline TInt Index(const TMPXAttribute& aAttribute) const; |
|
380 |
|
381 /** |
|
382 * The value for a specific attribute |
|
383 * |
|
384 * @param aAttribute, the attribute whose value is queried |
|
385 * @return value of the attribute |
|
386 */ |
|
387 template<typename T> |
|
388 inline T ValueTObject(const TMPXAttribute& aAttribute) const; |
|
389 |
|
390 /** |
|
391 * Get the value for a specific attribute, indicating success |
|
392 * |
|
393 * @param aValue, reference to object into which to place the value |
|
394 * @param aAttribute, the attribute whose value is queried |
|
395 * @return EFalse if unable to get value - aValue is unchanged. |
|
396 * ETrue if value successfully put in aValue. |
|
397 */ |
|
398 template<typename T> |
|
399 inline TBool GetValueTObject(T& aValue, const TMPXAttribute& aAttribute) const; |
|
400 |
|
401 |
|
402 /** |
|
403 * The value for a specific attribute |
|
404 * |
|
405 * @param aAttribute, the attribute whose value is queried |
|
406 * @return value of the attribute |
|
407 */ |
|
408 IMPORT_C const TDesC& ValueText(const TMPXAttribute& aAttribute) const; |
|
409 |
|
410 /** |
|
411 * Get the text for a specific attribute, indicating success |
|
412 * |
|
413 * @param aText, reference to object into which to place a pointer to the text |
|
414 * @param aAttribute, the attribute whose value is queried |
|
415 * @return EFalse if unable to get text - aText is unchanged. |
|
416 * ETrue if pointer to text successfully put in aText. |
|
417 */ |
|
418 IMPORT_C TBool GetValueText(TPtrC& aText, |
|
419 const TMPXAttribute& aAttribute) const; |
|
420 |
|
421 |
|
422 /** |
|
423 * The value for a specific attribute |
|
424 * |
|
425 * @param aAttribute, the attribute whose value is queried |
|
426 * @return value of the attribute |
|
427 */ |
|
428 IMPORT_C const CBase* ValueCObject(const TMPXAttribute& aAttribute) const; |
|
429 |
|
430 /** |
|
431 * Clears all the attributes and values |
|
432 */ |
|
433 IMPORT_C void Reset(); |
|
434 |
|
435 /** |
|
436 * Add a new attribute value to this object, or modifies existing |
|
437 * value if already present |
|
438 * |
|
439 * @param aAttribute the attribute whose value is added/modified |
|
440 * @return value of the attribute |
|
441 */ |
|
442 IMPORT_C void SetTextValueL(const TMPXAttribute& aAttribute, |
|
443 const TDesC& aValue); |
|
444 |
|
445 /** |
|
446 * Add a new attribute value to this object, or modifies existing |
|
447 * value if already present |
|
448 * |
|
449 * @param aAttribute the attribute whose value is added/modified |
|
450 * @return value of the attribute |
|
451 */ |
|
452 template<typename T> |
|
453 inline void SetTObjectValueL(const TMPXAttribute& aAttribute, T aValue); |
|
454 |
|
455 /** |
|
456 * Add a new attribute value to this object, or modifies existing |
|
457 * value if already present |
|
458 * |
|
459 * @param aAttribute the attribute whose value is added/modified |
|
460 * Takes ownership, unless leaves. |
|
461 * @return value of the attribute |
|
462 */ |
|
463 IMPORT_C void SetCObjectValueL(const TMPXAttribute& aAttribute, CBase* aValue_TakesOwnership); |
|
464 |
|
465 /** |
|
466 * Delete an attribute of the media item |
|
467 * @param aAttribute The attribute that is deleted |
|
468 */ |
|
469 IMPORT_C void DeleteAttribute(const TMPXAttribute& aAttribute); |
|
470 |
|
471 /** |
|
472 * Delete an attribute of the media item |
|
473 * @param aAttributeIndex index of the attribute to delete |
|
474 */ |
|
475 void DeleteAttribute( TInt aAttributeIndex ); |
|
476 |
|
477 /** |
|
478 * Handles modification of item |
|
479 * |
|
480 * @param aAttributes Attributes that have been modified |
|
481 */ |
|
482 IMPORT_C void HandleModified(const RArray<TMPXAttribute>& aAttributes); |
|
483 |
|
484 /** |
|
485 * Add a new attribute value to this object, or modifies existing |
|
486 * value if already present |
|
487 * |
|
488 * @param aAttribute the attribute whose value is added/modified |
|
489 * @param aValue value of the attribute |
|
490 * @param aType type of the attribute |
|
491 */ |
|
492 IMPORT_C void SetValueL(const TMPXAttribute& aAttribute, TAny* aValue, TMPXAttributeType aType); |
|
493 |
|
494 public: // Media-list-manager-internal management interface |
|
495 /** |
|
496 * Reserve space for users to be added, so AddUser can be called with |
|
497 * danger of failure |
|
498 * This should not be exported |
|
499 * @param aReservationCount space is allocated for this number of users |
|
500 */ |
|
501 void ReserveUsersL( TInt aReservationCount ); |
|
502 |
|
503 /** |
|
504 * Add the list as a user of the media object |
|
505 * The index into list is also stored, to allow clients that |
|
506 * are processing users of a media, to index directly into the list |
|
507 * This should not be exported |
|
508 * Reservation must have been made before calling this |
|
509 * @param aUser the object to be added as a user |
|
510 * @param aIndex the index into the media list user |
|
511 */ |
|
512 void AddUser( MGlxMediaUser& aUser, TInt aIndex ); |
|
513 |
|
514 /** |
|
515 * Remove the list as a user list of the media object |
|
516 * This should not be exported |
|
517 * @param aUser the user to be removed |
|
518 */ |
|
519 void RemoveUser( const MGlxMediaUser& aUser ); |
|
520 |
|
521 /** |
|
522 * Determines if the list is a user |
|
523 * This should not be exported |
|
524 * @return ETrue if the object is a user of this media object |
|
525 */ |
|
526 TBool IsUser( const MGlxMediaUser& aUser ) const; |
|
527 |
|
528 /** |
|
529 * Count of user lists |
|
530 * This should not be exported |
|
531 * @return The number of users of this media object |
|
532 */ |
|
533 TInt UserCount() const; |
|
534 |
|
535 /** |
|
536 * User by index |
|
537 * This should not be exported |
|
538 * @param aIndex index of the user |
|
539 * @return User by index |
|
540 */ |
|
541 MGlxMediaUser& User(TInt aIndex) const; |
|
542 |
|
543 /** |
|
544 * Index in the media list user |
|
545 * This should not be exported |
|
546 * @param aIndex index of the user |
|
547 * @return Index in the media list user |
|
548 */ |
|
549 TInt IndexInUser(TInt aIndex) const; |
|
550 |
|
551 /** |
|
552 * Update index in the media list user |
|
553 * This should not be exported |
|
554 * @param aUser the user to be updated |
|
555 * @param aIndex the index into the media list user |
|
556 */ |
|
557 void UpdateUser( MGlxMediaUser& aUser, TInt aIndex ); |
|
558 |
|
559 /** |
|
560 * Returns the TMPXAttributeType corresponding to TMPXAttribute |
|
561 * @param aAttribute the attribute whose type is required |
|
562 */ |
|
563 TMPXAttributeType AttributeTypeId(const TMPXAttribute& aAttribute) const; |
|
564 |
|
565 private: |
|
566 struct TValue |
|
567 { |
|
568 inline TValue(TAny* aValue, TMPXAttributeType aType); |
|
569 TAny* iValue; |
|
570 TMPXAttributeType iType; |
|
571 }; |
|
572 |
|
573 /** |
|
574 * Deletes a value in the right way, depending on its type |
|
575 */ |
|
576 void Delete(TValue& aValue); |
|
577 |
|
578 private: |
|
579 struct TMediaUser |
|
580 { |
|
581 /** |
|
582 * Find match by MGlxMediaUser |
|
583 */ |
|
584 static TBool MatchUser(const TMediaUser& aUser1, |
|
585 const TMediaUser& aUser2); |
|
586 |
|
587 /** |
|
588 * Constructor |
|
589 */ |
|
590 TMediaUser(MGlxMediaUser* aMediaUser, TInt aIndex = KErrNotFound); |
|
591 |
|
592 MGlxMediaUser* iMediaUser; |
|
593 TInt iIndex; |
|
594 }; |
|
595 |
|
596 private: |
|
597 RArray<TValue> iValues; // Array index corresponds to iAttributes |
|
598 RArray<TMPXAttribute> iAttributes; // Array index corresponds to iValues |
|
599 |
|
600 /** |
|
601 * Media item id |
|
602 */ |
|
603 TGlxMediaId iId; // TEMPORARY, merge to attribute array |
|
604 |
|
605 /** |
|
606 * Objects by which this object is used by. When the array is empty, |
|
607 * the item does not have any users (and can be deleted). |
|
608 * Only exposed to CGlxMediaListManager |
|
609 */ |
|
610 RArray< TMediaUser > iUsers; // TEMPORARY, merge to attribute array |
|
611 |
|
612 /// Number of users currently reserved on iUsers |
|
613 __DEBUG_ONLY( TInt _iUserReservationCount; ) |
|
614 |
|
615 __DECLARE_TEST; |
|
616 }; |
|
617 |
|
618 #include "glxmedia.inl" |
|
619 |
|
620 #endif // C_GLXMEDIA_H |