--- 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<CGlxContentHarvesterPluginTags*>(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();
}
- }
+
}
// ---------------------------------------------------------------------------