homescreenplugins/videochplugin/src/videochpublishabledata.cpp
changeset 0 96612d01cf9f
child 1 6711b85517b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenplugins/videochplugin/src/videochpublishabledata.cpp	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,288 @@
+/*
+* 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:    CVcxNsChPublishableData class definition*
+*/
+
+
+#include <LiwVariant.h>
+#include <e32hashtab.h>
+
+#include <videosuiteres.rsg>
+#include "videochpublishabledata.h"
+#include "videochpublishabledataitem.h"
+#include "iptvlastwatchedapi.h"
+
+
+// CONSTANTS
+
+// content type values for tvvideosuite
+// related data
+_LIT(KContentLastWatched, "lastwatchedcontent" );
+_LIT(KContentIPTV,        "iptvcontent" );
+_LIT(KContentMyVideos,    "myvideoscontent" );
+_LIT(KContentVideoFeeds,  "videofeedcontent" );
+_LIT(KContentPreloaded,   "preloadedcontent" );
+_LIT(KContentService,     "servicecontent");
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::CVcxNsChPublishableData
+// -----------------------------------------------------------------------------
+//
+CVcxNsChPublishableData::CVcxNsChPublishableData() 
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::~CVcxNsChPublishableData
+// -----------------------------------------------------------------------------
+//
+CVcxNsChPublishableData::~CVcxNsChPublishableData()
+    {
+    
+    delete iLastWatched;
+    
+    if( iData )
+        {
+        THashMapIter< TInt, CVcxNsPublishableDataItem* > iter( *iData );
+        for( CVcxNsPublishableDataItem* const* iValue = iter.NextValue(); 
+                            iValue; iValue = iter.NextValue() )
+            {
+            delete *iValue;
+            }
+    
+        iData->Close();
+        delete iData;
+        }
+    
+    iFs.Close();
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::NewLC
+// -----------------------------------------------------------------------------
+//
+CVcxNsChPublishableData* CVcxNsChPublishableData::NewLC()
+    {
+    CVcxNsChPublishableData* self = new ( ELeave )CVcxNsChPublishableData();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::NewL
+// -----------------------------------------------------------------------------
+//
+CVcxNsChPublishableData* CVcxNsChPublishableData::NewL()
+    {
+    CVcxNsChPublishableData* self = CVcxNsChPublishableData::NewLC();
+    CleanupStack::Pop( self ); // self;
+    self->iFs.Connect();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CVcxNsChPublishableData::ConstructL()
+    {
+    iData = new( ELeave )RHashMap< TInt, CVcxNsPublishableDataItem* >;
+    
+    CVcxNsPublishableDataItem* item = NULL;
+            
+    // Generate default values    
+    // Last watched
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentLastWatched ) );   
+    item->SetDataL( TPtrC8( KTvVideoName ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoPath ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoIconPath ), KNullDesC ); 
+    item->SetDataL( TPtrC8( KTvVideoLastWatchedType ), 0 ); 
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentLastWatched, item );
+    CleanupStack::Pop( item );
+    
+    // iptv
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentIPTV ) );   
+    item->SetDataL( TPtrC8( KTvVideoCount ), 0 );
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentIPTV, item );
+    CleanupStack::Pop( item );
+    
+    // My videos
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentMyVideos ) );   
+    item->SetDataL( TPtrC8( KTvVideoName ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoCount ), 0 );
+    item->SetDataL( TPtrC8( KTvVideoHasNewVideos ), 0 );
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentMyVideos, item );
+    CleanupStack::Pop( item );
+    
+    // video feeds
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentVideoFeeds ) );   
+    item->SetDataL( TPtrC8( KTvVideoCount ), 0 );
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentFeeds, item );
+    CleanupStack::Pop( item );
+    
+    // preloaded video
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentPreloaded ) );   
+    item->SetDataL( TPtrC8( KTvVideoName ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoPath ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoIconPath ), KNullDesC ); 
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentPreloaded, item );
+    CleanupStack::Pop( item );
+    
+    // preloaded service group
+    item = CVcxNsPublishableDataItem::NewLC( TPtrC( KContentService ) );   
+    item->SetDataL( TPtrC8( KTvVideoName ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoPath ), KNullDesC );
+    item->SetDataL( TPtrC8( KTvVideoId ), -1 );
+    item->SetDataL( TPtrC8( KTvVideoIconPath ), KNullDesC ); 
+    // ownership transferred
+    iData->InsertL( EVCxNsCPContentServiceGroup, item );
+    CleanupStack::Pop( item );
+
+    iLastWatched = CIptvLastWatchedApi::NewL();
+    
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::GetItemL
+// -----------------------------------------------------------------------------
+//
+CVcxNsPublishableDataItem* CVcxNsChPublishableData::GetItemL( TVCxNsCPContentType aContentType )
+    {
+    CVcxNsPublishableDataItem** item = iData->Find( aContentType );
+                          
+    if( !item || !( *item ) )
+        {
+        User::Leave( KErrNotFound );
+        }
+    return *item;
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::ItemContentTypeNameL
+// -----------------------------------------------------------------------------
+//
+TPtrC CVcxNsChPublishableData::ItemContentTypeNameL( TVCxNsCPContentType aContentType )
+    {
+    return GetItemL( aContentType )->ContentType();
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::SetDataL
+// -----------------------------------------------------------------------------
+// 
+void CVcxNsChPublishableData::SetDataL(
+        TVCxNsCPContentType aContentType, 
+        TPtrC8 aValueKey,  
+        TInt aValue )
+    {
+    GetItemL( aContentType )->SetDataL( aValueKey, aValue );
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::SetDataL
+// -----------------------------------------------------------------------------
+//    
+void CVcxNsChPublishableData::SetDataL( 
+        TVCxNsCPContentType aContentType, 
+        TPtrC8 aValueKey,  
+        const TDesC& aValue )
+    {
+    GetItemL( aContentType )->SetDataL( aValueKey, aValue );
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::GetIntDataL
+// -----------------------------------------------------------------------------
+//  
+TInt CVcxNsChPublishableData::GetIntDataL( 
+        TVCxNsCPContentType aContentType, 
+        TPtrC8 aValueKey )
+    {
+    return GetItemL( aContentType )->GetIntDataL( aValueKey );
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::GetDesCDataL
+// -----------------------------------------------------------------------------
+//   
+const TDesC& CVcxNsChPublishableData::GetDesCDataL( 
+        TVCxNsCPContentType aContentType, 
+        TPtrC8 aValueKey )
+    {
+    return GetItemL( aContentType )->GetDesCDataL( aValueKey );
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::FillCPDataMapL
+// -----------------------------------------------------------------------------
+//
+void CVcxNsChPublishableData::FillCPDataMapL( TVCxNsCPContentType aContentType, 
+                                              CLiwDefaultMap& aDataMap )
+    {
+    GetItemL( aContentType )->FillCPDataMapL( aDataMap ); 
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::ReadCPDataMapL
+// -----------------------------------------------------------------------------
+//
+void CVcxNsChPublishableData::ReadCPDataMapL( TVCxNsCPContentType aContentType, 
+                                              CLiwDefaultMap& aDataMap )
+    {  
+    GetItemL( aContentType )->ReadCPDataMapL( aDataMap );
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::ClearData
+// -----------------------------------------------------------------------------
+//
+void CVcxNsChPublishableData::ClearData( TVCxNsCPContentType aContentType )
+    {
+    CVcxNsPublishableDataItem* item( 0 );
+    TRAPD( err, item = GetItemL( aContentType ) );
+    if( err == KErrNone && item )
+        {
+        item->ClearData();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::FileExists
+// -----------------------------------------------------------------------------
+//
+TBool CVcxNsChPublishableData::FileExists( const TDesC& aFilePath )
+    {
+    if( BaflUtils::FileExists( iFs, aFilePath ) )
+        {
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CVcxNsChPublishableData::LastWatchedApi
+// -----------------------------------------------------------------------------
+//
+CIptvLastWatchedApi& CVcxNsChPublishableData::LastWatchedApi()
+    {
+    return *iLastWatched;
+    }
+