mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgtnloader.cpp
branchRCL_3
changeset 14 943ff5625028
parent 0 ff3acec5bc43
child 15 171e07ac910f
equal deleted inserted replaced
11:13afc0e517bd 14:943ff5625028
    55 
    55 
    56     if( iAsyncCallBack )
    56     if( iAsyncCallBack )
    57         iAsyncCallBack->Cancel();
    57         iAsyncCallBack->Cancel();
    58 
    58 
    59     delete iAsyncCallBack;
    59     delete iAsyncCallBack;
       
    60     
       
    61     if( iPauseTimer )
       
    62         iPauseTimer->Cancel();
       
    63     
       
    64     delete iPauseTimer;
    60     }
    65     }
    61 
    66 
    62 TInt CMpxTNLoader::LoadThumbnail( TAny* aSelf )
    67 TInt CMpxTNLoader::LoadThumbnail( TAny* aSelf )
    63     {
    68     {
    64     CMpxTNLoader* self = (CMpxTNLoader*)aSelf;
    69     CMpxTNLoader* self = (CMpxTNLoader*)aSelf;
    66     return KErrNone;
    71     return KErrNone;
    67     }
    72     }
    68 
    73 
    69 void CMpxTNLoader::LoadNextTN()
    74 void CMpxTNLoader::LoadNextTN()
    70     {
    75     {
       
    76     if( iPaused )
       
    77         return;
       
    78     
    71     if( iLoading.Count() > 0 )
    79     if( iLoading.Count() > 0 )
    72         {
    80         {
    73         TInt index = iLoading[0]->iIndex;
    81         TInt index = iLoading[0]->iIndex;
    74         if( index >= 0 && iLoading[0]->iId == 0)
    82         if( index >= 0 && iLoading[0]->iId == 0)
    75             {
    83             {
   136     iTnEngine->SetQualityPreferenceL( CThumbnailManager::EOptimizeForQuality );
   144     iTnEngine->SetQualityPreferenceL( CThumbnailManager::EOptimizeForQuality );
   137     iTnEngine->SetThumbnailSizeL( iSize );
   145     iTnEngine->SetThumbnailSizeL( iSize );
   138     TCallBack callback(CMpxTNLoader::LoadThumbnail, this);
   146     TCallBack callback(CMpxTNLoader::LoadThumbnail, this);
   139     iAsyncCallBack = new (ELeave) CAsyncCallBack( CActive::EPriorityStandard );
   147     iAsyncCallBack = new (ELeave) CAsyncCallBack( CActive::EPriorityStandard );
   140     iAsyncCallBack->Set(callback);
   148     iAsyncCallBack->Set(callback);
       
   149     iPauseTimer = CPeriodic::NewL( CActive::EPriorityStandard  );
   141     }
   150     }
   142 
   151 
   143 // -----------------------------------------------------------------------------
   152 // -----------------------------------------------------------------------------
   144 // CMpxTNLoader::FindLoading()
   153 // CMpxTNLoader::FindLoading()
   145 // -----------------------------------------------------------------------------
   154 // -----------------------------------------------------------------------------
   207 void CMpxTNLoader::CancelThumb( TInt aIndex )
   216 void CMpxTNLoader::CancelThumb( TInt aIndex )
   208     {
   217     {
   209     TInt loadingIndex = FindLoadingByIndex( aIndex );
   218     TInt loadingIndex = FindLoadingByIndex( aIndex );
   210     if(loadingIndex != KErrNotFound)
   219     if(loadingIndex != KErrNotFound)
   211         {
   220         {
   212         // Current thumbnail manager has bugs in thumbnail request cancelation.
   221         if( iLoading[loadingIndex]->iId != 0 )
   213         // There is a fix coming in near future but until that we cannot cancel requests
   222             {
   214         // since after that we dont get any thumbnails from server.
   223 			MPX_DEBUG2( "Cancel Thumb Request: %d", aIndex );
   215 //        if( iLoading[loadingIndex]->iId != 0 )
   224             iTnEngine->CancelRequest( iLoading[loadingIndex]->iId );
   216 //            {
   225             }
   217 //            RDebug::Print(_L("!!CANCEL REQUEST!!"));
       
   218 //            iTnEngine->CancelRequest( iLoading[loadingIndex]->iId );
       
   219 //            }
       
   220         delete iLoading[loadingIndex];
   226         delete iLoading[loadingIndex];
   221         iLoading.Remove(loadingIndex);
   227         iLoading.Remove(loadingIndex);
   222         }
   228         }
   223     }
   229     }
   224 
   230 
   225 void CMpxTNLoader::CancelAll()
   231 void CMpxTNLoader::CancelAll()
   226     {
   232     {
   227     iLoading.ResetAndDestroy();
       
   228     return;
       
   229     // Current thumbnail manager has bugs in thumbnail request cancelation.
       
   230     // There is a fix coming in near future but until that we cannot cancel requests
       
   231     // since after that we dont get any thumbnails from server.
       
   232     while ( iLoading.Count() > 0 )
   233     while ( iLoading.Count() > 0 )
   233         {
   234         {
   234         if( iLoading[0]->iId != 0 )
   235         if( iLoading[0]->iId != 0 )
   235             iTnEngine->CancelRequest( iLoading[0]->iId );
   236             iTnEngine->CancelRequest( iLoading[0]->iId );
   236         delete iLoading[0];
   237         delete iLoading[0];
   240 
   241 
   241 void CMpxTNLoader::SetSizeL( TThumbnailSize aSize )
   242 void CMpxTNLoader::SetSizeL( TThumbnailSize aSize )
   242     {
   243     {
   243     iTnEngine->SetThumbnailSizeL( aSize );
   244     iTnEngine->SetThumbnailSizeL( aSize );
   244     }
   245     }
       
   246 
       
   247 void CMpxTNLoader::Pause(TTimeIntervalMicroSeconds32 aDelay)
       
   248     {
       
   249     iAsyncCallBack->Cancel();
       
   250     iPaused = ETrue;
       
   251     iPauseTimer->Cancel();
       
   252     iPauseTimer->Start(
       
   253             aDelay, aDelay, 
       
   254             TCallBack(ResumeCallback, this));
       
   255     }
       
   256 
       
   257 void CMpxTNLoader::Resume()
       
   258     {
       
   259     iPaused = EFalse;
       
   260     if( !iAsyncCallBack->IsActive() )
       
   261         iAsyncCallBack->CallBack();    
       
   262     iPauseTimer->Cancel();
       
   263     }
       
   264 
       
   265 TInt CMpxTNLoader::ResumeCallback(TAny* aPtr)
       
   266     {
       
   267     CMpxTNLoader* self = (CMpxTNLoader*)aPtr;
       
   268     if( self )
       
   269         {
       
   270         self->Resume();
       
   271         }
       
   272     return KErrNone;
       
   273     }