videocollection/mpxmyvideoscollection/inc/vcxmyvideosmdsalbums.h
author hgs
Fri, 16 Apr 2010 18:13:14 +0300
changeset 36 8aed59de29f9
parent 35 3738fe97f027
child 38 ff53afa8ad05
permissions -rw-r--r--
201015
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Provides albums support from MDS*
hgs
parents:
diff changeset
    15
*/
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef VCXMYVIDEOSMDSALBUMS_H
hgs
parents:
diff changeset
    20
#define VCXMYVIDEOSMDSALBUMS_H
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// INCLUDES
hgs
parents:
diff changeset
    23
#include <mdequery.h>
hgs
parents:
diff changeset
    24
#include <mpxmedia.h>
hgs
parents:
diff changeset
    25
#include "vcxmyvideosalbum.h"
hgs
parents:
diff changeset
    26
#include "vcxmyvideosmdsdb.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    29
class CMPXMedia;
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// CONSTANTS
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// CLASS DECLARATION
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
* Provides albums support, uses MDS.
hgs
parents:
diff changeset
    37
*
hgs
parents:
diff changeset
    38
* @lib mpxmyvideoscollectionplugin.lib
hgs
parents:
diff changeset
    39
*/
hgs
parents:
diff changeset
    40
NONSHARABLE_CLASS(CVcxMyVideosMdsAlbums) :
hgs
parents:
diff changeset
    41
        public CActive,
hgs
parents:
diff changeset
    42
        public MMdEQueryObserver,
hgs
parents:
diff changeset
    43
        public MMdERelationItemObserver
36
hgs
parents: 35
diff changeset
    44
#if 0
34
hgs
parents:
diff changeset
    45
        ,
hgs
parents:
diff changeset
    46
        public MMdERelationObserver
hgs
parents:
diff changeset
    47
#endif
hgs
parents:
diff changeset
    48
    {    
hgs
parents:
diff changeset
    49
    public: // Constructors and destructor
hgs
parents:
diff changeset
    50
        
hgs
parents:
diff changeset
    51
        friend class CVcxMyVideosMdsCmdQueue;
35
hgs
parents: 34
diff changeset
    52
        friend class CVcxMyVideosMdsDb;
hgs
parents: 34
diff changeset
    53
        
34
hgs
parents:
diff changeset
    54
        enum TVcxAsyncOperation
hgs
parents:
diff changeset
    55
            {
hgs
parents:
diff changeset
    56
            EVcxNone,
hgs
parents:
diff changeset
    57
            EVcxAddVideosToAlbum,
hgs
parents:
diff changeset
    58
            EVcxRemoveRelations,
hgs
parents:
diff changeset
    59
            EVcxRemoveAlbums
hgs
parents:
diff changeset
    60
            };
hgs
parents:
diff changeset
    61
        
hgs
parents:
diff changeset
    62
        /**
hgs
parents:
diff changeset
    63
        * Constructor.
hgs
parents:
diff changeset
    64
        * 
hgs
parents:
diff changeset
    65
        * @param aMdsDb    Owner of this object.
hgs
parents:
diff changeset
    66
        * @param aObserver Object which is listening album related events. If NULL, then
hgs
parents:
diff changeset
    67
        *                  no observer is set.
hgs
parents:
diff changeset
    68
        */
hgs
parents:
diff changeset
    69
        static CVcxMyVideosMdsAlbums* NewL( CVcxMyVideosMdsDb& aMdsDb,
hgs
parents:
diff changeset
    70
                MVcxMyVideosMdsAlbumsObserver* aObserver );
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
        /**
hgs
parents:
diff changeset
    73
        * Destructor
hgs
parents:
diff changeset
    74
        */
hgs
parents:
diff changeset
    75
        virtual ~CVcxMyVideosMdsAlbums();
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    public: // new methods
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
        /**
36
hgs
parents: 35
diff changeset
    80
         * From CActive.
34
hgs
parents:
diff changeset
    81
         * Cancels possible ongoing asynchronous request.
hgs
parents:
diff changeset
    82
         * 
hgs
parents:
diff changeset
    83
         * @param aType Defines what kind of request is cancelled.
hgs
parents:
diff changeset
    84
         */
36
hgs
parents: 35
diff changeset
    85
        void DoCancel( CVcxMyVideosMdsDb::TRequestType aType = CVcxMyVideosMdsDb::EAll );
34
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
        /**
36
hgs
parents: 35
diff changeset
    88
         * Cancels queries.
hgs
parents: 35
diff changeset
    89
         *
hgs
parents: 35
diff changeset
    90
         * @param aType Defines what kind of request is cancelled.
hgs
parents: 35
diff changeset
    91
         */
hgs
parents: 35
diff changeset
    92
        void CancelQueries( CVcxMyVideosMdsDb::TRequestType aType = CVcxMyVideosMdsDb::EAll );
hgs
parents: 35
diff changeset
    93
        
hgs
parents: 35
diff changeset
    94
        /**
34
hgs
parents:
diff changeset
    95
        * Gets My Videos albums from MDS asynchronously.
hgs
parents:
diff changeset
    96
        * HandleGetAlbumsResp() callback function is called when ready.
hgs
parents:
diff changeset
    97
        * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
    98
        *
hgs
parents:
diff changeset
    99
        * @param aAlbumList  Album list is written here. Caller owns this, ownership
hgs
parents:
diff changeset
   100
        *                    does not move.
hgs
parents:
diff changeset
   101
        * @param aClient     Response call is done to this object.
hgs
parents:
diff changeset
   102
        */
hgs
parents:
diff changeset
   103
        void GetAlbumsL( CMPXMedia* aAlbumList, MVcxMyVideosMdsAlbumsObserver& aClient );
35
hgs
parents: 34
diff changeset
   104
hgs
parents: 34
diff changeset
   105
        /**
hgs
parents: 34
diff changeset
   106
         * Gets album from MDS synchronously.
hgs
parents: 34
diff changeset
   107
         * 
hgs
parents: 34
diff changeset
   108
         * @param aId  MDS ID of the album to be fetched.
hgs
parents: 34
diff changeset
   109
         * @returm     MPX media containing album data. Ownership
hgs
parents: 34
diff changeset
   110
         *             moves to caller. NULL if not found.
hgs
parents: 34
diff changeset
   111
         */
hgs
parents: 34
diff changeset
   112
        CMPXMedia* GetAlbumL( TUint32 aId );
hgs
parents: 34
diff changeset
   113
34
hgs
parents:
diff changeset
   114
        /**
hgs
parents:
diff changeset
   115
         * Gets album content IDs asynchronously.
hgs
parents:
diff changeset
   116
         * HandleGetAlbumContentIdsResp() callback function is called when ready.
hgs
parents:
diff changeset
   117
         * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
   118
         *
hgs
parents:
diff changeset
   119
         * @param aAlbumId      Album ID.
hgs
parents:
diff changeset
   120
         * @param aContentArray Item IDs which belog to aAlbum are written here. Caller must
hgs
parents:
diff changeset
   121
         *                      keep aContentArray available until HandleGetAlbumContentIdsResp
hgs
parents:
diff changeset
   122
         *                      has been called.
hgs
parents:
diff changeset
   123
        * @param aClient        Response call is done to this object.
hgs
parents:
diff changeset
   124
         */
hgs
parents:
diff changeset
   125
        void GetAlbumContentIdsL( TUint32 aAlbumId, RArray<TVcxMyVideosAlbumVideo>& aContentArray,
hgs
parents:
diff changeset
   126
                MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   127
        
hgs
parents:
diff changeset
   128
        /**
hgs
parents:
diff changeset
   129
         * Gets album content videos asynchronously.
hgs
parents:
diff changeset
   130
         * HandleGetAlbumContentVideosResp() callback function is called when ready.
hgs
parents:
diff changeset
   131
         * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
   132
         * 
hgs
parents:
diff changeset
   133
         * @param aAlbumId    Album ID.
hgs
parents:
diff changeset
   134
         * @param aVideoList  Media containing media array. Video media objects are added to media array.
hgs
parents:
diff changeset
   135
         *                    Caller must keep aVideoList available until callback has been called.
hgs
parents:
diff changeset
   136
         * @param aClient     Response call is done to this object.
hgs
parents:
diff changeset
   137
         */
hgs
parents:
diff changeset
   138
        void GetAlbumContentVideosL( TUint32 aAlbumId, CMPXMedia& aVideoList,
hgs
parents:
diff changeset
   139
                MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   140
        
hgs
parents:
diff changeset
   141
        /**
hgs
parents:
diff changeset
   142
         * Adds videos to album asynchronously. HandleAddVideosToAlbumResp() callback function
hgs
parents:
diff changeset
   143
         * is called when operation finishes.
hgs
parents:
diff changeset
   144
         * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
   145
         *
hgs
parents:
diff changeset
   146
         * @param aMpxCmd    Media containing command parameters: album ID and video ID list.
hgs
parents:
diff changeset
   147
         *                   Results are also written to this object. See media structure and
hgs
parents:
diff changeset
   148
         *                   used attributes from vcxmyvideosdef.c file,
hgs
parents:
diff changeset
   149
         *                   KVcxCommandMyVideosAddToAlbum command. Ownership does not move.
hgs
parents:
diff changeset
   150
         *                   
hgs
parents:
diff changeset
   151
         * @param aClient    Response call is done to this object.
hgs
parents:
diff changeset
   152
         */
hgs
parents:
diff changeset
   153
        void AddVideosToAlbumL( CMPXMedia* aMpxCmd, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   154
        
hgs
parents:
diff changeset
   155
        /**
hgs
parents:
diff changeset
   156
         * Removes relations asynchronously.
hgs
parents:
diff changeset
   157
         * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
   158
         * 
hgs
parents:
diff changeset
   159
         * @param aRelationIds  Relations which are removed.
hgs
parents:
diff changeset
   160
         * @param aResults      In sync with aRelationIds. Result codes, KErrNone if successful,
hgs
parents:
diff changeset
   161
         *                      KErrGeneral if failed.
hgs
parents:
diff changeset
   162
         * @param aClient       Response call is done to this object.
hgs
parents:
diff changeset
   163
         */
hgs
parents:
diff changeset
   164
        void RemoveRelationsL( RArray<TUint32>& aRelationIds,
hgs
parents:
diff changeset
   165
                RArray<TUint32>& aResults, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   166
 
hgs
parents:
diff changeset
   167
        /**
hgs
parents:
diff changeset
   168
         * Adds album to MDS. aAlbum should have KMPXMediaGeneralTitle attribute
hgs
parents:
diff changeset
   169
         * set. The MDS item ID of the created album is written to KMPXMediaGeneralId
hgs
parents:
diff changeset
   170
         * attribute.
hgs
parents:
diff changeset
   171
         * 
hgs
parents:
diff changeset
   172
         * @param aAlbum  Album which is added to database. 
hgs
parents:
diff changeset
   173
         */
hgs
parents:
diff changeset
   174
        void AddAlbumL( CMPXMedia& aAlbum );
hgs
parents:
diff changeset
   175
        
hgs
parents:
diff changeset
   176
        /**
hgs
parents:
diff changeset
   177
         * Removes albums asynchronously. HandleRemoveAlbumsResp() callback function
hgs
parents:
diff changeset
   178
         * is called when operation finishes.
hgs
parents:
diff changeset
   179
         * Utilizes CVcxMyVideosMdsCmdQueue.
hgs
parents:
diff changeset
   180
         *
hgs
parents:
diff changeset
   181
         * @param aMpxCmd    Media containing command parameters: media array containing album IDs.
hgs
parents:
diff changeset
   182
         *                   Results are also written to this object. See media structure and
hgs
parents:
diff changeset
   183
         *                   used attributes from vcxmyvideosdef.c file,
hgs
parents:
diff changeset
   184
         *                   KVcxCommandMyVideosRemoveAlbums command. Ownership does not move.
hgs
parents:
diff changeset
   185
         *                   
hgs
parents:
diff changeset
   186
         * @param aClient    Response call is done to this object.
hgs
parents:
diff changeset
   187
         */        
hgs
parents:
diff changeset
   188
        void RemoveAlbumsL( CMPXMedia* aMpxCmd, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   189
        
35
hgs
parents: 34
diff changeset
   190
        /**
hgs
parents: 34
diff changeset
   191
         * Sets album attributes.
hgs
parents: 34
diff changeset
   192
         * 
hgs
parents: 34
diff changeset
   193
         * @param aVideo  Values from aVideo are written to MDS.
hgs
parents: 34
diff changeset
   194
         */
hgs
parents: 34
diff changeset
   195
        void SetAlbumL( CMPXMedia& aVideo );
hgs
parents: 34
diff changeset
   196
        
34
hgs
parents:
diff changeset
   197
    protected:
hgs
parents:
diff changeset
   198
        
hgs
parents:
diff changeset
   199
        /**
hgs
parents:
diff changeset
   200
        * From CActive.
hgs
parents:
diff changeset
   201
        * Called when operation completes.
hgs
parents:
diff changeset
   202
        */
hgs
parents:
diff changeset
   203
        void RunL();
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        /**
hgs
parents:
diff changeset
   206
        * From CActive.
hgs
parents:
diff changeset
   207
        * Actual implementation for cancelling.
hgs
parents:
diff changeset
   208
        */
hgs
parents:
diff changeset
   209
        void DoCancel();
hgs
parents:
diff changeset
   210
        
hgs
parents:
diff changeset
   211
    private:
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
        /**
hgs
parents:
diff changeset
   214
        * Constructor
hgs
parents:
diff changeset
   215
        */
hgs
parents:
diff changeset
   216
        CVcxMyVideosMdsAlbums( CVcxMyVideosMdsDb& aMdsDb,
hgs
parents:
diff changeset
   217
                MVcxMyVideosMdsAlbumsObserver* aObserver );
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
        /**
hgs
parents:
diff changeset
   220
        * Symbian 2nd phase constructor.
hgs
parents:
diff changeset
   221
        */
hgs
parents:
diff changeset
   222
        void ConstructL();
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
        /**
hgs
parents:
diff changeset
   225
        * Copies album data from aObject to aAlbum.
hgs
parents:
diff changeset
   226
        *
hgs
parents:
diff changeset
   227
        * @param aObject  MDS object to copy data from.
hgs
parents:
diff changeset
   228
        * @param aAlbum   MPX media to copy data to.
hgs
parents:
diff changeset
   229
        */
hgs
parents:
diff changeset
   230
        void Object2MediaL( CMdEObject& aObject, CMPXMedia& aAlbum );
hgs
parents:
diff changeset
   231
        
hgs
parents:
diff changeset
   232
        /**
hgs
parents:
diff changeset
   233
         * Copies album data from aAlbum to aObject.
hgs
parents:
diff changeset
   234
         * 
hgs
parents:
diff changeset
   235
         * @param aAlbum MPX media to copy data from.
hgs
parents:
diff changeset
   236
         * @param aObject MDS object to copy data to.
hgs
parents:
diff changeset
   237
         */
hgs
parents:
diff changeset
   238
        void Media2ObjectL( CMPXMedia& aAlbum, CMdEObject& aObject);
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
        /**
hgs
parents:
diff changeset
   241
        * Gets various defintions from MDS and stores them to member variables.
hgs
parents:
diff changeset
   242
        */
hgs
parents:
diff changeset
   243
        void GetSchemaDefinitionsL();
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
        /**
hgs
parents:
diff changeset
   246
        * Gets My Videos albums from MDS asynchronously.
hgs
parents:
diff changeset
   247
        * HandleGetAlbumsResp() callback function is called when ready.
hgs
parents:
diff changeset
   248
        *
hgs
parents:
diff changeset
   249
        * @param aAlbumList  Album list is written here. Caller owns this, ownership
hgs
parents:
diff changeset
   250
        *                    does not move.
hgs
parents:
diff changeset
   251
        * @param aClient     Callback is done to this object.
hgs
parents:
diff changeset
   252
        */
hgs
parents:
diff changeset
   253
        void DoGetAlbumsL( CMPXMedia* aAlbumList, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
        /**
hgs
parents:
diff changeset
   256
         * Gets album content IDs from MDS asynchronously.
hgs
parents:
diff changeset
   257
         * HandleGetAlbumContentIdsResp() callback function is called when ready.
hgs
parents:
diff changeset
   258
         *
hgs
parents:
diff changeset
   259
         * @param aAlbumId      Album ID.
hgs
parents:
diff changeset
   260
         * @param aContentArray Array containing MDS IDs which belong to aAlbum.
hgs
parents:
diff changeset
   261
         *                      Caller is responsible to keep array available
hgs
parents:
diff changeset
   262
         *                      until HandleGetAlbumContentResp has been called. 
hgs
parents:
diff changeset
   263
        * @param aClient        Callback is done to this object.
hgs
parents:
diff changeset
   264
         */
hgs
parents:
diff changeset
   265
        void DoGetAlbumContentIdsL( TUint32 aAlbumId,
hgs
parents:
diff changeset
   266
                RArray<TVcxMyVideosAlbumVideo>& aContentArray,
hgs
parents:
diff changeset
   267
                MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
        /**
hgs
parents:
diff changeset
   270
         * Gets album content videos from MDS asynchronously.
hgs
parents:
diff changeset
   271
         * HandleGetAlbumContentVideosResp() callback function is called when ready.
hgs
parents:
diff changeset
   272
         * 
hgs
parents:
diff changeset
   273
         * @param aAlbumId   Album ID.
hgs
parents:
diff changeset
   274
         * @param aVideoList Media containing empty media array. Videos are added to array. Caller
hgs
parents:
diff changeset
   275
         *                   must keep aVideoList available until HandleGetAlbumContentVideosResp
hgs
parents:
diff changeset
   276
         *                   is called.
hgs
parents:
diff changeset
   277
         * @param aClient    Callback is done to this object.
hgs
parents:
diff changeset
   278
         */
hgs
parents:
diff changeset
   279
        void DoGetAlbumContentVideosL( TUint32 aAlbumId, CMPXMedia& aVideoList,
hgs
parents:
diff changeset
   280
                MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
        /**
hgs
parents:
diff changeset
   283
         * Adds videos to album asynchronously. HandleAddVideosToAlbumResp() callback function
hgs
parents:
diff changeset
   284
         * is called when operation finishes.
hgs
parents:
diff changeset
   285
         * 
hgs
parents:
diff changeset
   286
         * @param aMpxCmd    Media containing command parameters: album ID and video ID list.
hgs
parents:
diff changeset
   287
         *                   Results are also written to this object. See media structure and
hgs
parents:
diff changeset
   288
         *                   used attributes from vcxmyvideosdef.c file,
hgs
parents:
diff changeset
   289
         *                   KVcxCommandMyVideosAddToAlbum command. Ownership does not move.
hgs
parents:
diff changeset
   290
         * @param aClient    Response call is done to this object.
hgs
parents:
diff changeset
   291
         */
hgs
parents:
diff changeset
   292
        void DoAddVideosToAlbumL( CMPXMedia* aMpxCmd, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   293
        
hgs
parents:
diff changeset
   294
        /**
hgs
parents:
diff changeset
   295
         * Removes relations asynchronously.
hgs
parents:
diff changeset
   296
         * 
hgs
parents:
diff changeset
   297
         * @param aRelationIds  Relations which are removed.
hgs
parents:
diff changeset
   298
         * @param aResults      In sync with aRelationIds. Result codes, KErrNone if successful,
hgs
parents:
diff changeset
   299
         *                      KErrGeneral if failed.
hgs
parents:
diff changeset
   300
         * @param aClient       Response call is done to this object.
hgs
parents:
diff changeset
   301
         */
hgs
parents:
diff changeset
   302
        void DoRemoveRelationsL( RArray<TUint32>& aRelationIds,
hgs
parents:
diff changeset
   303
                RArray<TUint32>& aResults, MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   304
        
hgs
parents:
diff changeset
   305
        /**
hgs
parents:
diff changeset
   306
         * Removes albums asynchronously.
hgs
parents:
diff changeset
   307
         * 
hgs
parents:
diff changeset
   308
         * @param aMpxCmd  Media containing command parameters: array with albums IDs.
hgs
parents:
diff changeset
   309
         * @param aClient  Response call is done to this object.
hgs
parents:
diff changeset
   310
         */
36
hgs
parents: 35
diff changeset
   311
        void DoRemoveAlbumsL( CMPXMedia* aMpxCmd,
34
hgs
parents:
diff changeset
   312
                MVcxMyVideosMdsAlbumsObserver& aClient );
hgs
parents:
diff changeset
   313
hgs
parents:
diff changeset
   314
        /**
hgs
parents:
diff changeset
   315
        * Handles album query responses.
hgs
parents:
diff changeset
   316
        * 
hgs
parents:
diff changeset
   317
        * @param aQuery  Query instance.
hgs
parents:
diff changeset
   318
        * @param aError  <code>KErrNone</code>, if the query was completed
hgs
parents:
diff changeset
   319
        *                successfully. Otherwise one of the system-wide error 
hgs
parents:
diff changeset
   320
        *                codes.
hgs
parents:
diff changeset
   321
        */
hgs
parents:
diff changeset
   322
        void HandleAlbumQueryCompletedL(CMdEQuery& aQuery, TInt aError);
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
        /**
hgs
parents:
diff changeset
   325
        * Handles video query responses.
hgs
parents:
diff changeset
   326
        * 
hgs
parents:
diff changeset
   327
        * @param aQuery  Query instance.
hgs
parents:
diff changeset
   328
        * @param aError  <code>KErrNone</code>, if the query was completed
hgs
parents:
diff changeset
   329
        *                successfully. Otherwise one of the system-wide error 
hgs
parents:
diff changeset
   330
        *                codes.
hgs
parents:
diff changeset
   331
        * @param aFirstNewItemIndex Index of the first new item in the query.
hgs
parents:
diff changeset
   332
        * @param aNewItemCount      How many new items were added.
hgs
parents:
diff changeset
   333
        * @param aComplete          ETrue if query is complete, EFalse if new to come.
hgs
parents:
diff changeset
   334
        */
hgs
parents:
diff changeset
   335
        void HandleVideoQueryResultsL( CMdEQuery& aQuery, TInt aError,
hgs
parents:
diff changeset
   336
                TInt aFirstNewItemIndex, TInt aNewItemCount, TBool aComplete );
hgs
parents:
diff changeset
   337
hgs
parents:
diff changeset
   338
        /**
hgs
parents:
diff changeset
   339
         * Handles relation query responses.
hgs
parents:
diff changeset
   340
         * 
hgs
parents:
diff changeset
   341
         * @param aQuery Query instance.
hgs
parents:
diff changeset
   342
         * @param aError  <code>KErrNone</code>, if the query was completed
hgs
parents:
diff changeset
   343
         *                successfully. Otherwise one of the system-wide error 
hgs
parents:
diff changeset
   344
         *                codes.
hgs
parents:
diff changeset
   345
         */
hgs
parents:
diff changeset
   346
        void HandleRelationQueryCompletedL( CMdEQuery& aQuery, TInt aError );
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
        /**
hgs
parents:
diff changeset
   349
         * Called from RunL when video adding to album completes.
hgs
parents:
diff changeset
   350
         */
hgs
parents:
diff changeset
   351
        void HandleAddVideosToAlbumCompletedL();
hgs
parents:
diff changeset
   352
hgs
parents:
diff changeset
   353
        /**
hgs
parents:
diff changeset
   354
         * Called from RunL when relations remove completes.
hgs
parents:
diff changeset
   355
         */
hgs
parents:
diff changeset
   356
        void HandleRemoveRelationsCompletedL();
hgs
parents:
diff changeset
   357
hgs
parents:
diff changeset
   358
        /**
hgs
parents:
diff changeset
   359
         * Called from RunL when albums remove completes.
hgs
parents:
diff changeset
   360
         */
hgs
parents:
diff changeset
   361
        void HandleRemoveAlbumsCompletedL();
hgs
parents:
diff changeset
   362
        
hgs
parents:
diff changeset
   363
    public:
hgs
parents:
diff changeset
   364
hgs
parents:
diff changeset
   365
        /**
hgs
parents:
diff changeset
   366
        * From MMdEQueryObserver.
hgs
parents:
diff changeset
   367
        * Called to notify the observer that new results have been received 
hgs
parents:
diff changeset
   368
        * in the query.
hgs
parents:
diff changeset
   369
        *
hgs
parents:
diff changeset
   370
        * @param aQuery              Query instance that received new results.
hgs
parents:
diff changeset
   371
        * @param aFirstNewItemIndex  Index of the first new item that was added
hgs
parents:
diff changeset
   372
        *                            to the result item array.
hgs
parents:
diff changeset
   373
        * @param aNewItemCount       Number of items added to the result item 
hgs
parents:
diff changeset
   374
        *                            array.
hgs
parents:
diff changeset
   375
        */
hgs
parents:
diff changeset
   376
        void HandleQueryNewResults(CMdEQuery& aQuery,
hgs
parents:
diff changeset
   377
                TInt aFirstNewItemIndex,
hgs
parents:
diff changeset
   378
                TInt aNewItemCount);
hgs
parents:
diff changeset
   379
hgs
parents:
diff changeset
   380
        /**
hgs
parents:
diff changeset
   381
        * From MMdEQueryObserver.
hgs
parents:
diff changeset
   382
        * Called to notify the observer that the query has been completed,
hgs
parents:
diff changeset
   383
        * or that an error has occured.
hgs
parents:
diff changeset
   384
        *
hgs
parents:
diff changeset
   385
        * @param aQuery  Query instance.
hgs
parents:
diff changeset
   386
        * @param aError  <code>KErrNone</code>, if the query was completed
hgs
parents:
diff changeset
   387
        *                successfully. Otherwise one of the system-wide error 
hgs
parents:
diff changeset
   388
        *                codes.
hgs
parents:
diff changeset
   389
        */
hgs
parents:
diff changeset
   390
        void HandleQueryCompleted(CMdEQuery& aQuery, TInt aError);
hgs
parents:
diff changeset
   391
hgs
parents:
diff changeset
   392
        /**
hgs
parents:
diff changeset
   393
         * From MMdERelationItemObserver
hgs
parents:
diff changeset
   394
         */
hgs
parents:
diff changeset
   395
        void HandleRelationItemNotification(CMdESession& aSession, 
hgs
parents:
diff changeset
   396
                    TObserverNotificationType aType,
hgs
parents:
diff changeset
   397
                    const RArray<TMdERelation>& aRelationArray);
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
#if 0 //not used
hgs
parents:
diff changeset
   400
        /**
hgs
parents:
diff changeset
   401
         * From MMdERelationObserver
hgs
parents:
diff changeset
   402
         */
hgs
parents:
diff changeset
   403
        void HandleRelationNotification(CMdESession& aSession, 
hgs
parents:
diff changeset
   404
                TObserverNotificationType aType,
hgs
parents:
diff changeset
   405
                const RArray<TItemId>& aRelationIdArray);
hgs
parents:
diff changeset
   406
#endif
hgs
parents:
diff changeset
   407
        
hgs
parents:
diff changeset
   408
    private:
hgs
parents:
diff changeset
   409
        
hgs
parents:
diff changeset
   410
        /**
hgs
parents:
diff changeset
   411
         * Main class for Mds operations. Owns session to MDS.
hgs
parents:
diff changeset
   412
         */
hgs
parents:
diff changeset
   413
        CVcxMyVideosMdsDb& iMdsDb;
hgs
parents:
diff changeset
   414
        
hgs
parents:
diff changeset
   415
        /**
hgs
parents:
diff changeset
   416
         * Observer of albums related events. May be NULL.
hgs
parents:
diff changeset
   417
         * not own.
hgs
parents:
diff changeset
   418
         */
hgs
parents:
diff changeset
   419
        MVcxMyVideosMdsAlbumsObserver* iObserver;
hgs
parents:
diff changeset
   420
        
hgs
parents:
diff changeset
   421
        /**
hgs
parents:
diff changeset
   422
        * Asynchronous album object fetching query is stored here. Own.
hgs
parents:
diff changeset
   423
        */
hgs
parents:
diff changeset
   424
        CMdEObjectQuery* iAlbumQuery;
hgs
parents:
diff changeset
   425
hgs
parents:
diff changeset
   426
        /**
hgs
parents:
diff changeset
   427
        * Asynchronous video object fetching query is stored here. Own.
hgs
parents:
diff changeset
   428
        */
hgs
parents:
diff changeset
   429
        CMdEObjectQuery* iVideoQuery;
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
        /**
hgs
parents:
diff changeset
   432
        * Asynchronous relation fetching query is stored here. Own.
hgs
parents:
diff changeset
   433
        */
hgs
parents:
diff changeset
   434
        CMdERelationQuery* iRelationQuery;
hgs
parents:
diff changeset
   435
                
hgs
parents:
diff changeset
   436
        /**
hgs
parents:
diff changeset
   437
        * The default namespace definition, not own.
hgs
parents:
diff changeset
   438
        */
hgs
parents:
diff changeset
   439
        CMdENamespaceDef* iNamespaceDef;
hgs
parents:
diff changeset
   440
        
hgs
parents:
diff changeset
   441
        /**
hgs
parents:
diff changeset
   442
        * Album object definition, not own.
hgs
parents:
diff changeset
   443
        */
hgs
parents:
diff changeset
   444
        CMdEObjectDef* iAlbumObjectDef;
hgs
parents:
diff changeset
   445
        
hgs
parents:
diff changeset
   446
        /**
hgs
parents:
diff changeset
   447
        * Album type property definition, not own.
hgs
parents:
diff changeset
   448
        */
hgs
parents:
diff changeset
   449
        CMdEPropertyDef* iTypePropertyDef;
hgs
parents:
diff changeset
   450
        
hgs
parents:
diff changeset
   451
        /**
hgs
parents:
diff changeset
   452
         * "Contains" relation definition, not own.
hgs
parents:
diff changeset
   453
         */
hgs
parents:
diff changeset
   454
        CMdERelationDef* iContainsRelationDef;
hgs
parents:
diff changeset
   455
        
hgs
parents:
diff changeset
   456
        /**
hgs
parents:
diff changeset
   457
        * Pointer to album list which is being fetched from MDS. Not own.
hgs
parents:
diff changeset
   458
        */
hgs
parents:
diff changeset
   459
        CMPXMedia* iAlbumList;
hgs
parents:
diff changeset
   460
hgs
parents:
diff changeset
   461
        /**
hgs
parents:
diff changeset
   462
        * Pointer to video list which is being fetched from MDS. Not own.
hgs
parents:
diff changeset
   463
        */
hgs
parents:
diff changeset
   464
        CMPXMedia* iVideoList;
hgs
parents:
diff changeset
   465
hgs
parents:
diff changeset
   466
        /**
hgs
parents:
diff changeset
   467
         * When doing some async operation to MDS, the album ID is stored here.
hgs
parents:
diff changeset
   468
         */
hgs
parents:
diff changeset
   469
        TUint32 iAlbumId;
hgs
parents:
diff changeset
   470
        
hgs
parents:
diff changeset
   471
        /**
hgs
parents:
diff changeset
   472
         * When fetching album content from MDS, the pointer to content array is stored here.
hgs
parents:
diff changeset
   473
         * Only MDS ID is filled to TVideo.
hgs
parents:
diff changeset
   474
         * Not own.
hgs
parents:
diff changeset
   475
         */
hgs
parents:
diff changeset
   476
        RArray<TVcxMyVideosAlbumVideo>* iAlbumContent;
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
        /**
hgs
parents:
diff changeset
   479
         * The pending async operation ID is stored here.
hgs
parents:
diff changeset
   480
         */
hgs
parents:
diff changeset
   481
        TVcxAsyncOperation iAsyncOperation;
hgs
parents:
diff changeset
   482
hgs
parents:
diff changeset
   483
        /**
hgs
parents:
diff changeset
   484
         * Used for storing items during async mds operations.
hgs
parents:
diff changeset
   485
         */
hgs
parents:
diff changeset
   486
        RPointerArray<CMdEInstanceItem> iItemArray;
hgs
parents:
diff changeset
   487
        
hgs
parents:
diff changeset
   488
        /**
hgs
parents:
diff changeset
   489
         * Used for storing result buffer during async mds operations.
hgs
parents:
diff changeset
   490
         */
hgs
parents:
diff changeset
   491
        RMdEDataBuffer iResultBuffer;
hgs
parents:
diff changeset
   492
hgs
parents:
diff changeset
   493
        /**
hgs
parents:
diff changeset
   494
         * Used in async operations to store
hgs
parents:
diff changeset
   495
         * pointer to result array (which is owned by the user). 
hgs
parents:
diff changeset
   496
         */
hgs
parents:
diff changeset
   497
        RArray<TInt>* iResultArray;
hgs
parents:
diff changeset
   498
hgs
parents:
diff changeset
   499
        /**
hgs
parents:
diff changeset
   500
         * Used in async operations to store
hgs
parents:
diff changeset
   501
         * pointer to result array (which is owned by the user). 
hgs
parents:
diff changeset
   502
         */
hgs
parents:
diff changeset
   503
        RArray<TUint32>* iResultArrayUint32;
hgs
parents:
diff changeset
   504
        
hgs
parents:
diff changeset
   505
        /**
hgs
parents:
diff changeset
   506
         * Used in async oprations (EVcxAddVideosToAlbum and EVcxRemoveVideosFromAlbum) to store
hgs
parents:
diff changeset
   507
         * pointer to item ID array (which is owned by the user). 
hgs
parents:
diff changeset
   508
         */
hgs
parents:
diff changeset
   509
        RArray<TUint32>* iIdArray;
hgs
parents:
diff changeset
   510
                
hgs
parents:
diff changeset
   511
        /**
hgs
parents:
diff changeset
   512
         * Used to store command parameters during async MDS operations. Not owned.
hgs
parents:
diff changeset
   513
         */
hgs
parents:
diff changeset
   514
        CMPXMedia* iMpxCmd;
hgs
parents:
diff changeset
   515
        
hgs
parents:
diff changeset
   516
        /**
hgs
parents:
diff changeset
   517
         * Used to store pointer to client who initiated the async operation.
hgs
parents:
diff changeset
   518
         */
hgs
parents:
diff changeset
   519
        MVcxMyVideosMdsAlbumsObserver* iClient;
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
    };
hgs
parents:
diff changeset
   522
hgs
parents:
diff changeset
   523
#endif   // VCXMYVIDEOSMDSALBUMS_H
hgs
parents:
diff changeset
   524
hgs
parents:
diff changeset
   525