diff -r 9ba538e329bd -r 7d9067c6fcb1 photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp --- a/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp Thu Jan 07 12:46:23 2010 +0200 +++ b/photosgallery/contentharvesterplugin/src/glxcontentharvesterplugintags.cpp Mon Jan 18 20:19:20 2010 +0200 @@ -38,13 +38,8 @@ #include "glxcontentharvesterplugin.hrh" #include "glxmapconstants.h" + // ============================ MEMBER FUNCTIONS ============================== -LOCAL_C TInt TimerCallbackL( TAny* aPtr ) - { - TRACER( "CGlxContentHarvesterPluginTags::TimerCallbackL" ); - static_cast(aPtr)->UpdateDataL(); - return KErrNone; - } // ---------------------------------------------------------------------------- // Constructor @@ -71,8 +66,6 @@ //Call the base class ConstructL to create default bitmap CGlxContentHarvesterPluginBase::ConstructL(EMbmGlxiconsQgn_prop_image_notcreated); - iPeriodic = CPeriodic::NewL( CActive::EPriorityLow ); - iUriAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); iThumbnailAttributeContext = new (ELeave) CGlxAttributeContext(&iThumbnailIterator); @@ -108,12 +101,6 @@ TRACER( "CGlxContentHarvesterPluginTags::~CGlxContentHarvesterPluginTags" ); DestroyMedialist(); - if ( iPeriodic ) - { - iPeriodic->Cancel(); - } - delete iPeriodic; - } // ---------------------------------------------------------------------------- @@ -123,30 +110,31 @@ void CGlxContentHarvesterPluginTags::UpdateDataL() { TRACER( "CGlxContentHarvesterPluginTags::UpdateDataL" ); - if(iMediaList && iMediaList->Count() && iPreviewItemCount.Count() ) + + if (!iMediaList) { - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::UpdateDataL(),iProgressIndex=%d",iProgressIndex); - TInt ret = UpdateItem(iPreviewItemCount[iProgressIndex]); - if(ret != KErrNotFound) + return; + } + + if (iMediaList->Count()) + { + TInt ret = UpdateItem(KPreviewItemIndex); + if (ret != KErrNotFound) { //Updates the thumbnail in the collection UpdateDataInCPSL(ret); } - else - { - UpdateDataInCPSL(GetBitmapHandle()); - } } else { // Show previous thumbnail until the new thumbnail is // fecthed.Added this check to avoid flicker - if(!GetCHPlugin()->IsRefreshNeeded() || (iMediaList->Count() == 0)) - { - //Don't Show the Thumbnail/Show nothing - GLX_LOG_INFO("CGlxContentHarvesterPluginTags::UpdateDataL() --O"); - UpdateDataInCPSL(GetBitmapHandle()); - } + if (!GetCHPlugin()->IsRefreshNeeded() || (iMediaList->Count() == 0)) + { + //Don't Show the Thumbnail/Show nothing + GLX_LOG_INFO("CGlxContentHarvesterPluginTags::UpdateDataL() --O"); + UpdateDataInCPSL(GetBitmapHandle()); + } } } @@ -165,51 +153,6 @@ return KErrNone; } -// ---------------------------------------------------------------------------- -// CGlxContentHarvesterPluginTags::HandleItemChanged() -// ---------------------------------------------------------------------------- -// -void CGlxContentHarvesterPluginTags::HandleItemChanged() - { - TRACER("CGlxContentHarvesterPluginTags::HandleItemChanged"); - - iProgressIndex = 0; - iPreviewItemCount.Reset(); - - TSize gridIconSize = GetGridIconSize(); - TMPXAttribute thumbnailAttribute(KGlxMediaIdThumbnail, - GlxFullThumbnailAttributeId( ETrue, gridIconSize.iWidth, gridIconSize.iHeight ) ); - if(iMediaList) - { - TInt count = iMediaList->Count(); - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags:: HandleItemChanged ,count=%d",count); - - TBool inFocus = IsFocused(); - for(TInt aItemIndex = 0; aItemIndex < count; aItemIndex++) - { - const TGlxMedia& item = iMediaList->Item( aItemIndex ); - const CGlxThumbnailAttribute* value = item.ThumbnailAttribute( thumbnailAttribute ); - if (value) - { - iPreviewItemCount.InsertInOrder(aItemIndex); - if(!inFocus) - { - //if the collection is in Focus,retrieve only one thumbnail and break - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::HandleItemChanged,iRange=1,aItemIndex=%d",aItemIndex); - break; - } - else if(iPreviewItemCount.Count() == KPreviewThumbnailFetchCount || - iPreviewItemCount.Count() == count ) - { - //if the collection is not in Focus,retrieve 15 thumbnail and break - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::HandleItemChanged,iRange=15,aItemIndex=%d",aItemIndex); - break; - } - - } - } - } - } // ---------------------------------------------------------------------------- // CGlxContentHarvesterPluginTags::UpdateDataInCPSL() @@ -252,14 +195,6 @@ const CGlxThumbnailAttribute* value = item.ThumbnailAttribute( thumbnailAttribute ); if (value) { - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::UpdateItem,iProgressIndex=%d ",iProgressIndex); - iProgressIndex++; - if (iProgressIndex >= KPreviewThumbnailFetchCount || - iProgressIndex >= iPreviewItemCount.Count() || - iProgressIndex >= iMediaList->Count()) - { - iProgressIndex = 0; - } return value->iBitmap->Handle(); } return KErrNotFound; @@ -276,7 +211,7 @@ GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::ActivateL aOn =%d",aOn); SetFocus(aOn); - if (IsMatrixMenuInForegroundL() && aOn && !iPeriodic->IsActive() ) + if (IsMatrixMenuInForegroundL() && aOn ) { if(GetCHPlugin()->IsRefreshNeeded()) { @@ -289,10 +224,6 @@ //to update the thumbnails on the focus , need to call the below function UpdatePreviewThumbnailListL(); } - - iPeriodic->Start( KTimerInterval, - KTimerInterval, - TCallBack( TimerCallbackL, this ) ); } else if ( !aOn ) { @@ -303,7 +234,6 @@ GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::ActivateL !aOn =%d and matrix not in foreground",aOn); GetCHPlugin()->UpdatePlugins(aOn); } - iPeriodic->Cancel(); } } @@ -370,25 +300,12 @@ if (value) { GLX_LOG_INFO("CGlxContentHarvesterPluginTags::HandleAttributesAvailableL Thumbnail is present "); - iPreviewItemCount.InsertInOrder(aItemIndex); - //if the collection on the matrix menu is not focused,then show only one thumbnail - if(!IsFocused()) - { + // Update the preview thumbnail + //remove the observer as client need not listen to the callbacks GLX_LOG_INFO("CGlxContentHarvesterPluginTags::HandleAttributesAvailableL,one thumbnail fetched"); - UpdateDataInCPSL( value->iBitmap->Handle()); - //if one thumbnail is fetched,it is sufficent when the collection is not in focus. - //remove the observer as client need not listen to the callbacks - iMediaList->RemoveMediaListObserver( this ); - } - else if (iPreviewItemCount.Count() == KPreviewThumbnailFetchCount || - iPreviewItemCount.Count() == aList->Count() ) - { - GLX_LOG_INFO1("CGlxContentHarvesterPluginTags::HandleAttributesAvailableL,media list count=%d",aList->Count()); - //if the PreviewItemCount equals 15 or if it is eqaul to the total count - //remove the observer as client need not listen to the callbacks - iMediaList->RemoveMediaListObserver( this ); - } + UpdateDataInCPSL( value->iBitmap->Handle()); + iMediaList->RemoveMediaListObserver( this ); }//end of check against value }//end of attribute match } @@ -460,17 +377,8 @@ TRACER( "CGlxContentHarvesterPluginTags::CreateMedialistL" ); if(!iMediaList) { - //if the collection is in focus then , create media list with context of 15 items else - // with context of single item. - if(IsFocused()) - { - iThumbnailIterator.SetRange( KPreviewThumbnailFetchCount ); - } - else - { iThumbnailIterator.SetRange( KSinglePreviewThumbnail ); - } - + iMediaList = CreateMedialistAndAttributeContextL( TGlxMediaId( KGlxTagCollectionPluginImplementationUid ), iUriAttributeContext, iThumbnailAttributeContext); @@ -491,10 +399,8 @@ //this function is executed or when the collection recives the focus. if(!iMediaList) { - //medis list is not created yet,create it. + //media list is not created yet,create it. CreateMedialistL( ); - //This is called to show the preview thumbnails. If no thumbnails are - //present, display nothing UpdateDataL(); } else @@ -503,28 +409,12 @@ { ContainerCacheCleanupL(iMediaList); } - if(IsFocused()) - { - //1.This loop is executed,when the collection gets focus - //2.This loop is executed,when the contents are updated for this collection - //and this collection has focus,so 15 thumbnails are fetched. - HandleItemChanged(); - iThumbnailIterator.SetRange( KPreviewThumbnailFetchCount ); - RemoveContextAndObserver(); - AddContextAndObserverL(); - } - else - { - //1.This loop is executed,when the contents are updated for this collection - //and this collection doesn't have the focus,so only one thumbnail is fetched. - //here we need to fetch only one item //1.if the content is deleted,then creating a context doesn't fetch the attributes //2.if the content is added and the content is not the latest as per the sorted order of the // media list,then the thumbnails are not fetched. // so show the first available thumbnail in the media list. - HandleItemChanged(); UpdateDataL(); //Adding the context doesn't gaurantee we get a call back for @@ -538,7 +428,7 @@ RemoveContextAndObserver(); AddContextAndObserverL(); } - } + } // ---------------------------------------------------------------------------