videocollection/mpxmyvideoscollection/src/vcxmyvideosmessagelist.cpp
changeset 0 96612d01cf9f
child 15 cf5481c2bc0b
child 26 67eb01668b0e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videocollection/mpxmyvideoscollection/src/vcxmyvideosmessagelist.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,309 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:    Groups messages and sends them to clients.*
+*/
+
+
+
+
+// INCLUDE FILES
+#include <e32cmn.h>
+#include <mpxlog.h>
+#include <mpxmediacontainerdefs.h>
+#include <mpxmediageneraldefs.h>
+#include <mpxmessagegeneraldefs.h>
+#include <mpxcommandgeneraldefs.h>
+#include <mpxcollectioncommanddefs.h>
+#include <mpxmessagecontainerdefs.h>
+#include <vcxmyvideosuids.h>
+#include "vcxmyvideoscollectionplugin.h"
+#include "vcxmyvideoscollectionutil.h"
+#include "vcxmyvideosmessagelist.h"
+
+// ============================ MEMBER FUNCTIONS ==============================
+
+// ----------------------------------------------------------------------------
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosMessageList* CVcxMyVideosMessageList::NewL(
+    CVcxMyVideosCollectionPlugin& aCollection )
+    {
+    CVcxMyVideosMessageList* self = new (ELeave) CVcxMyVideosMessageList( aCollection );
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// Destructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosMessageList::~CVcxMyVideosMessageList()
+    {    
+    delete iMessageList;
+    }
+
+// ----------------------------------------------------------------------------
+// Constructor.
+// ----------------------------------------------------------------------------
+//
+CVcxMyVideosMessageList::CVcxMyVideosMessageList( CVcxMyVideosCollectionPlugin& aCollection )
+: iCollection( aCollection )
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::ConstructL ()
+    {
+    }
+
+// ----------------------------------------------------------------------------------------------------------
+// CVcxMyVideosMessageList::AddEventL
+// ----------------------------------------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::AddEventL( const TMPXItemId& aId,
+        TMPXChangeEventType aChange, TInt32 aExtraInfo, CMPXMedia* aVideo )
+    {
+    MPX_FUNC("CVcxMyVideosMessageList::AddEventL");
+    
+    CreateMessageListL(); //does nothing if already created
+
+#if _DEBUG
+    MPX_DEBUG1("CVcxMyVideosMessageList:: ----------------------------------------------." );
+
+    switch ( aChange )
+        {
+        case EMPXItemDeleted:
+            MPX_DEBUG4("CVcxMyVideosMessageList:: MPXID(%d,%d), aChange = EMPXItemDeleted, aExtraInfo = %d",
+                    aId.iId1, aId.iId2, aExtraInfo );
+            break;
+        case EMPXItemInserted:
+            MPX_DEBUG4("CVcxMyVideosMessageList:: MPXID(%d,%d), aChange = EMPXItemInserted, aExtraInfo = %d",
+                    aId.iId1, aId.iId2, aExtraInfo );
+            break;
+        case EMPXItemModified:
+            MPX_DEBUG4("CVcxMyVideosMessageList:: MPXID(%d,%d), aChange = EMPXItemModified, aExtraInfo = %d",
+                    aId.iId1, aId.iId2, aExtraInfo );
+            break;
+        }
+    
+    MPX_DEBUG1("CVcxMyVideosMessageList:: ----------------------------------------------'" );
+#endif
+    
+    if ( AlreadyInMessageListL( aId, aChange, aExtraInfo ) )
+        {
+        MPX_DEBUG1("CVcxMyVideosMessageList:: already in message list, skipping add");
+        return;
+        }
+     
+    CMPXMessage* message = CMPXMedia::NewL();
+    CleanupStack::PushL( message ); // 1->
+
+    message->SetTObjectValueL<TMPXMessageId>(KMPXMessageGeneralId, KMPXMessageIdItemChanged);
+    message->SetTObjectValueL<TUid>(KMPXMessageCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection));        
+    message->SetTObjectValueL<TMPXChangeEventType>(KMPXMessageChangeEventType, aChange);        
+    message->SetTObjectValueL<TMPXItemId>(KMPXMessageMediaGeneralId, aId);
+    message->SetTObjectValueL<TMPXGeneralCategory>( KMPXMessageMediaGeneralCategory, EMPXCollection );
+    
+    if ( aVideo && aChange == EMPXItemInserted )
+        {
+        message->SetCObjectValueL<CMPXMedia>( KMPXCommandColAddMedia, aVideo );
+        }
+        
+    if ( aExtraInfo )
+        {
+        message->SetTObjectValueL<TInt32>( KVcxMediaMyVideosInt32Value, aExtraInfo );
+        }
+        
+    MPX_DEBUG1("CVcxMyVideosMessageList:: appending to message array");
+    
+    iMessageArray->AppendL( message ); // ownership moves
+
+    CleanupStack::Pop( message ); // <-1        
+
+    iMessageCount++;
+    iMessageList->SetTObjectValueL<TInt>( KMPXMessageArrayCount, iMessageCount );
+    }
+
+// ----------------------------------------------------------------------------------------------------------
+// CVcxMyVideosMessageList::AddEventL
+// ----------------------------------------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::AddEventL( TInt aEvent )
+    {
+    TMPXItemId itemId;
+    itemId.iId1 = KVcxCommandIdMyVideos;
+    CMPXMedia* msg = CMPXMedia::NewL();
+    CleanupStack::PushL( msg ); // 1->
+    msg->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, itemId );
+    msg->SetTObjectValueL<TUid>(KMPXMessageCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection));        
+
+    msg->SetTObjectValueL<TInt>( KVcxMediaMyVideosCommandId, aEvent );
+    AddL( msg );
+    CleanupStack::Pop( msg ); // <-1
+    }
+
+// ----------------------------------------------------------------------------------------------------------
+// CVcxMyVideosMessageList::AlreadyInMessageListL
+// ----------------------------------------------------------------------------------------------------------
+//
+TBool CVcxMyVideosMessageList::AlreadyInMessageListL( const TMPXItemId& aId,
+        TMPXChangeEventType aChange, TInt32 aExtraInfo )
+    {
+    TMPXItemId itemId;
+    TMPXChangeEventType event;
+    TInt32 extraInfo;
+    CMPXMedia* media;    
+    TInt count = iMessageArray->Count();
+    
+    for ( TInt i = 0; i < count; i++ )
+        {
+        media = iMessageArray->AtL( i );
+        
+        if ( media->IsSupported( KMPXMessageMediaGeneralId ) &&
+                media->IsSupported( KMPXMessageChangeEventType ) )
+            {
+            itemId = media->ValueTObjectL<TMPXItemId>( KMPXMessageMediaGeneralId );
+            event  = media->ValueTObjectL<TMPXChangeEventType>( KMPXMessageChangeEventType );
+            
+            if ( aId == itemId && aChange == event )
+                {
+                extraInfo = 0;
+                if ( media->IsSupported( KVcxMediaMyVideosInt32Value ) )
+                    {
+                    extraInfo = media->ValueTObjectL<TInt32>( KVcxMediaMyVideosInt32Value );
+                    }
+                if ( aExtraInfo == extraInfo )
+                    {
+                    return ETrue;
+                    }
+                else
+                    {
+                    return EFalse;
+                    }
+                }
+            }
+        }
+    return EFalse;
+    }
+
+// ----------------------------------------------------------------------------------------------------------
+// CVcxMyVideosMessageList::AddL
+// ----------------------------------------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::AddL( CMPXMessage* aMessage )
+    {
+    if ( !aMessage )
+        {
+        MPX_DEBUG1("CVcxMyVideosMessageList::AddL aMessage is NULL!!");
+        return;
+        }
+
+#ifdef _DEBUG
+    if ( aMessage->IsSupported( KVcxMediaMyVideosCommandId ) )
+        {
+        switch ( aMessage->ValueTObjectL<TUint32>( KVcxMediaMyVideosCommandId ) )
+            {
+            case KVcxMessageMyVideosItemsAppended:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosItemsAppended");
+                break;
+
+            case KVcxMessageMyVideosListComplete:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosListComplete");
+                break;
+
+            case KVcxMessageMyVideosMoveOrCopyStarted:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosMoveOrCopyStarted");
+                break;
+
+            case KVcxMessageMyVideosDeleteStarted:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosDeleteStarted");
+                break;
+
+            case KVcxMessageMyVideosMoveResp:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosMoveResp");
+                break;
+
+            case KVcxMessageMyVideosGetMediasByMpxIdResp:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosGetMediasByMpxIdResp");
+                break;
+
+            case KVcxMessageMyVideosCopyResp:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosCopyResp");
+                break;
+
+            case KVcxMessageMyVideosDeleteResp:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL adding msg KVcxMessageMyVideosDeleteResp");
+                break;
+            default:
+                MPX_DEBUG1("CVcxMyVideosMessageList::AddL unknown message");
+                break;
+            }
+        }
+#endif
+
+    CreateMessageListL(); //does nothing if already created
+    iMessageArray->AppendL( aMessage ); // ownership moves
+    iMessageCount++;
+    iMessageList->SetTObjectValueL<TInt>( KMPXMessageArrayCount, iMessageCount );
+
+    }
+
+// ----------------------------------------------------------------------------------------------------------
+// CVcxMyVideosMessageList::SendL
+// ----------------------------------------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::SendL()
+    {
+    MPX_FUNC("CVcxMyVideosMessageList::SendL()");
+    
+    if ( iMessageCount == 0 || !iMessageList )
+        {
+        MPX_DEBUG1("CVcxMyVideosMessageList:: iMessageList is empty or NULL, skipping send");
+        return;
+        }
+            
+    iCollection.SendMessages( *iMessageList );
+    delete iMessageList;
+    iMessageList  = NULL;
+    iMessageArray = NULL;
+    iMessageCount = 0;
+    }
+
+// ----------------------------------------------------------------------------
+// CVcxMyVideosMessageList::CreateMessageListL
+// ----------------------------------------------------------------------------
+//
+void CVcxMyVideosMessageList::CreateMessageListL()
+    {
+    if ( !iMessageList )
+        {
+        iMessageList  = TVcxMyVideosCollectionUtil::CreateEmptyMessageListL();
+        iMessageArray = iMessageList->Value<CMPXMessageArray>( KMPXMessageArrayContents ); 
+
+        iMessageList->SetTObjectValueL<TMPXMessageId>(KMPXMessageGeneralId, KVcxCommandIdMyVideos);
+        iMessageList->SetTObjectValueL<TInt>(KVcxMediaMyVideosCommandId, KVcxMessageMyVideosMessageArray );
+        iMessageList->SetTObjectValueL<TUid>(KMPXMessageCollectionId, TUid::Uid(KVcxUidMyVideosMpxCollection));        
+        //iMessageList->SetTObjectValueL<TMPXChangeEventType>(KMPXMessageChangeEventType, aChange);        
+        //iMessageList->SetTObjectValueL<TMPXItemId>(KMPXMessageMediaGeneralId, TMPXItemId(0, 0) );
+        iMessageCount = 0;
+        }
+    }
+// End of file
+