diff -r 7d91903f795f -r ce5ada96ab30 videocollection/hgmyvideos/src/vcxhgmyvideoscategorylistimpl.cpp --- a/videocollection/hgmyvideos/src/vcxhgmyvideoscategorylistimpl.cpp Fri Feb 19 22:52:52 2010 +0200 +++ b/videocollection/hgmyvideos/src/vcxhgmyvideoscategorylistimpl.cpp Fri Mar 12 15:43:00 2010 +0200 @@ -20,6 +20,8 @@ // INCLUDE FILES #include #include +#include +#include #include "vcxhgmyvideoscategorylistimpl.h" #include "vcxhgmyvideoscategorymodelhandler.h" @@ -79,7 +81,21 @@ void CVcxHgMyVideosCategoryListImpl::ConstructL() { CVcxHgMyVideosListBase::ConstructL(); - iCategoryModel = new (ELeave) CVcxHgMyVideosCategoryModelHandler( iModel, *iScroller ); + iCategoryModel = CVcxHgMyVideosCategoryModelHandler::NewL( iModel, *iScroller ); + + // Load indicator + CGulIcon* ind = iCategoryModel->VideoIndicatorL().VideoOverlayIndicatorL(); + if ( ind ) + { + CleanupStack::PushL( ind ); + // Ownership of the icon is transferred + static_cast( iScroller )->SetIconOverlayIndicator( ind ); + CleanupStack::Pop( ind ); + } + + // Set default icon as empty + iScroller->SetDefaultIconL( iCategoryModel->CreateEmptyHgListIconL() ); + iScroller->SetFlags( CHgScroller::EHgScrollerKeyMarkingDisabled ); iScroller->SetSelectionObserver( *this ); } @@ -141,10 +157,53 @@ void CVcxHgMyVideosCategoryListImpl::HandleOpenL( TInt /*aIndex*/ ) { TInt highlight = Highlight(); + TInt categoryId = iCategoryModel->ResolveCategoryId( highlight ); - if ( highlight >= 0 && iModel.TouchSupport() ) + switch ( categoryId ) { - iView.ActivateVideoListL( iCategoryModel->ResolveCategoryId( highlight ) ); + case KVcxMvcCategoryIdAll: + case KVcxMvcCategoryIdDownloads: + case KVcxMvcCategoryIdCaptured: + case KVcxMvcCategoryIdOther: + { + if ( highlight >= 0 && iModel.TouchSupport() ) + { + iView.ActivateVideoListL( iCategoryModel->ResolveCategoryId( highlight ) ); + } + } + break; + + case KCategoryIdLastWatched: + { + iCategoryModel->PlayLastWatchedVidedoL(); + } + break; + + case KCategoryIdExtraItem1: + case KCategoryIdExtraItem2: + case KCategoryIdExtraItem3: + { + // Handle item according to type (open web link or start app). + + TVcxHgMyVideosCategoryItemType itemType; + TUid appUid; + TBuf<64> urlString; + iCategoryModel->HandleExtraItemSelectionL( categoryId, itemType, appUid, urlString ); + + if ( itemType == TVcxHgMyVideosCategoryItemTypeUid ) + { + iView.LaunchAppL( appUid ); + } + else if ( itemType == TVcxHgMyVideosCategoryItemTypeUrl ) + { + iView.LaunchBrowserL( urlString ); + } + } + break; + + default: + ASSERT( 0 ); + break; } }