--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/server/IptvEpgManager/src/CIptvEpgVodCallbackImpl.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,306 @@
+/*
+* Copyright (c) 2002-2007 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: Offers callback interface to Epg database update*
+*/
+
+
+
+
+#include <e32base.h>
+#include "IptvDebug.h"
+#include "CIptvMediaContent.h"
+#include "CIptvEpgVodMsqQueue.h"
+#include "CIptvEpgVodCallbackImpl.h"
+#include "CIptvEpgCategory.h"
+#include "CIptvEpgContent.h"
+#include "CIptvEpgDb.h"
+#include "CIptvEpgSession.h"
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::ConstructL
+// Symbian 2nd phase constructor can leave.
+// --------------------------------------------------------------------------
+//
+void CIptvEpgVodCallbackImpl::ConstructL()
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::ConstructL" );
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::NewL
+// Two-phased constructor.
+// Create instance of concrete interface implementation
+// --------------------------------------------------------------------------
+//
+CIptvEpgVodCallbackImpl* CIptvEpgVodCallbackImpl::NewL(
+ CIptvEpgDb& aVodEpgDb,
+ CIptvEpgVodMsqQueue* aMsgQueue,
+ CIptvEpgSession& aSession )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::NewL" );
+
+ CIptvEpgVodCallbackImpl* self =
+ new( ELeave ) CIptvEpgVodCallbackImpl(
+ aVodEpgDb, aMsgQueue, aSession );
+ CleanupStack::PushL( self );
+
+ self->ConstructL();
+
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::~CIptvEpgVodCallbackImpl
+// Destructor
+// --------------------------------------------------------------------------
+//
+CIptvEpgVodCallbackImpl::~CIptvEpgVodCallbackImpl()
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::~CIptvEpgVodCallbackImpl" );
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::CIptvEpgVodCallbackImpl
+// C++ default constructor
+// --------------------------------------------------------------------------
+//
+CIptvEpgVodCallbackImpl::CIptvEpgVodCallbackImpl(
+ CIptvEpgDb& aVodEpgDb,
+ CIptvEpgVodMsqQueue* aMsgQueue,
+ CIptvEpgSession& aSession ) :
+ iVodEpgDb( aVodEpgDb ),
+ iMsgQueue( aMsgQueue ),
+ iPluginRunning( EFalse ),
+ iSession( aSession )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::CIptvEpgVodCallbackImpl" );
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::ContentUpdateCompletedL
+// --------------------------------------------------------------------------
+//
+void CIptvEpgVodCallbackImpl::ContentUpdateCompletedL()
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::ContentUpdateCompletedL" );
+
+ iVodEpgDb.EndUpdateL( iSession );
+
+ // Service id = 0 because we dont have to bring this information
+ // over IPC. Service ID is already on the client side.
+ if ( iMsgQueue )
+ {
+ iMsgQueue->SendMessageToClientL( KIptvContentUpdateCompleted, 0 );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::Started
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+void CIptvEpgVodCallbackImpl::StartedL()
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::StartedL -- EPG Plugin STARTED!" );
+
+ iPluginRunning = ETrue;
+ iVodEpgDb.StartUpdateL();
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::FinishedL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::FinishedL( TTime& aUpdateInterval )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::FinishedL -- EPG Plugin FINISHED!" );
+
+ iVodEpgDb.FinishUpdateL();
+
+ TInt error = KErrNone;
+ if ( iPluginRunning )
+ {
+ TInt64 interval = aUpdateInterval.Int64();
+ if ( interval != 0 )
+ {
+ TTime time;
+ time.UniversalTime();
+ iVodEpgDb.SetUpdateTimeToServiceManagerL( time );
+ error = iVodEpgDb.UpdateServiceInformationL( time, aUpdateInterval );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::FinishedL -- Failed to update service information" );
+ }
+ }
+ }
+
+ iPluginRunning = EFalse;
+ return error;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::AddCategory
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::AddCategoryL(
+ CIptvEpgCategory& aCategory,
+ TUint32& aCategoryKey )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::AddCategoryL" );
+
+ TInt error = iVodEpgDb.AddCategoryL( aCategory, aCategoryKey );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::AddCategoryL failed!" );
+ }
+
+ return error;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::AddContentL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::AddContentL(
+ CIptvEpgContent& aContent,
+ RPointerArray<CIptvMediaContent> aMediaContents,
+ TUint32& aContentKey )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::AddContentL" );
+
+ TInt error = iVodEpgDb.AddContentL(
+ aContent, aMediaContents, aContentKey );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::AddContentL failed!" );
+ }
+
+ return error;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::UpdateServiceThumbnailL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::UpdateServiceThumbnailL(
+ TDesC& aIconFilePath,
+ const TBool aGrouped )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::UpdateServiceThumbnailL" );
+ iSession.UpdateServiceThumbnailL( aIconFilePath, aGrouped );
+
+ return KErrNone;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::AddRelationL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::AddRelationL(
+ TUint32& aCategoryKey, TUint32& aContentKey )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::AddRelationL" );
+
+ TInt error = iVodEpgDb.AddRelationL( aCategoryKey, aContentKey );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::AddRelationL failed!" );
+ }
+
+ return error;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::Error
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+void CIptvEpgVodCallbackImpl::ErrorL( TInt aError, TInt aInfo )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::ErrorL" );
+
+ if ( iMsgQueue )
+ {
+ iMsgQueue->SendMessageToClientL( aError, aInfo );
+ }
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::UpdateCategoryIconL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::UpdateCategoryIconL(
+ TUint32& aCategoryKey,
+ TUint32& aIconFileId,
+ TDesC& aIconFilePath, TBool aIsUrl )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::UpdateCategoryIconL" );
+
+ TInt error = iVodEpgDb.UpdateCategoryIconL(
+ aCategoryKey,
+ aIconFileId,
+ aIconFilePath,
+ aIsUrl );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::UpdateCategoryIconL failed!" );
+ }
+
+ return error;
+ }
+
+// --------------------------------------------------------------------------
+// CIptvEpgVodCallbackImpl::UpdateContentIconL
+// From MIptvEpgPluginManager interface
+// --------------------------------------------------------------------------
+//
+TInt CIptvEpgVodCallbackImpl::UpdateContentIconL(
+ TUint32& aContentKey,
+ TUint32& aIconFileId,
+ TDesC& aIconFilePath,
+ TBool aIsUrl )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvEpgVodCallbackImpl::UpdateContentIconL" );
+
+ TInt error = iVodEpgDb.UpdateContentIconL(
+ aContentKey, aIconFileId, aIconFilePath, aIsUrl );
+ if ( error != KErrNone )
+ {
+ IPTVLOGSTRING_LOW_LEVEL(
+ "CIptvEpgVodCallbackImpl::UpdateContentIconL failed!" );
+ }
+
+ return error;
+ }