imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp
branchRCL_3
changeset 21 ad31f4183ddc
parent 20 ffb2d5dd62e9
child 24 f0aa341a25bf
--- a/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Tue May 11 16:30:11 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/thumbagdaemon/src/thumbagprocessor.cpp	Tue May 25 13:01:47 2010 +0300
@@ -66,6 +66,8 @@
     TN_DEBUG1( "CThumbAGProcessor::ConstructL() - begin" );
     
     iTMSession = CThumbnailManager::NewL( *this );
+    iTMSession->SetRequestObserver(*this);
+    
     iQueryAllItems = NULL;
     iQueryPlaceholders = NULL;
     iQuery = NULL;
@@ -116,11 +118,13 @@
     {
     TN_DEBUG1( "CThumbAGProcessor::~CThumbAGProcessor() - begin" );
     
-    if(iForegroundGenerationObserver)
-      {
-      delete iForegroundGenerationObserver;
-      iForegroundGenerationObserver = NULL;
-      }
+    Cancel();
+    
+    if(iPeriodicTimer)
+        {
+        iPeriodicTimer->Cancel();
+        delete iPeriodicTimer;
+        }
     
     if(iActivityManager)
         {
@@ -128,19 +132,27 @@
         iActivityManager = NULL;
         }
     
-    if (iInactivityTimer)
+    if (iQuery)
         {
-        iInactivityTimer->Cancel();
-        delete iInactivityTimer;
-        iInactivityTimer = NULL;
+        iQuery->Cancel();
+        delete iQuery;
+        iQuery = NULL;
         }
     
-    if(iPeriodicTimer)
+    if(iQueryPlaceholders)
         {
-        iPeriodicTimer->Cancel();
-        delete iPeriodicTimer;
+        iQueryPlaceholders->Cancel();
+        delete iQueryPlaceholders;
+        iQueryPlaceholders = NULL;
         }
     
+    if (iQueryAllItems)
+       {
+       iQueryAllItems->Cancel();
+       delete iQueryAllItems;
+       iQueryAllItems = NULL;
+       }
+    
     if (!iInit)
         {
 #ifdef MDS_MODIFY_OBSERVER
@@ -149,35 +161,18 @@
 #endif
         }
     
+    if(iForegroundGenerationObserver)
+        {
+        delete iForegroundGenerationObserver;
+        iForegroundGenerationObserver = NULL;
+        }
+    
     if ( iCollectionUtility )
         {
         iCollectionUtility->Close();
         iCollectionUtility = NULL;
         }
 
-    Cancel();
-    
-    if(iQueryPlaceholders)
-        {
-        iQueryPlaceholders->Cancel();
-        delete iQueryPlaceholders;
-        iQueryPlaceholders = NULL;
-        }
-    
-    if (iQuery)
-        {
-        iQuery->Cancel();
-        delete iQuery;
-        iQuery = NULL;
-        }
-    
-    if (iQueryAllItems)
-       {
-       iQueryAllItems->Cancel();
-       delete iQueryAllItems;
-       iQueryAllItems = NULL;
-       }
-
     iAddQueue.Close();
     iModifyQueue.Close();
     iRemoveQueue.ResetAndDestroy();
@@ -188,6 +183,7 @@
     
     if (iTMSession)
         {
+        iTMSession->RemoveRequestObserver();
         delete iTMSession;
         iTMSession = NULL;
         }
@@ -435,6 +431,29 @@
     TN_DEBUG1( "CThumbAGProcessor::ThumbnailReady() - end" );
     }
 
+// -----------------------------------------------------------------------------
+// CThumbAGProcessor::ThumbnailRequestReady()
+// -----------------------------------------------------------------------------
+//
+void CThumbAGProcessor::ThumbnailRequestReady( TInt /*aError*/, TThumbnailRequestType aRequestType,
+                                               TThumbnailRequestId /*aId*/ )
+    {	
+    if (aRequestType == ERequestDeleteThumbnails)
+        {
+        TN_DEBUG1( "CThumbAGProcessor::ThumbnailRequestReady() - delete" );
+    
+        iActiveCount--;
+        
+        if(iActiveCount <= 0)
+            {
+            iActiveCount = 0;
+            iActive = EFalse;
+            }
+    
+        ActivateAO();
+        }
+    }
+
 // ---------------------------------------------------------------------------
 // CThumbAGProcessor::SetMdESession()
 // ---------------------------------------------------------------------------
@@ -665,10 +684,20 @@
                     }
                 }
             
-		   // 9.2 specific
-           if( !(imageObjectDef.Id() == aObject->Def().Id() || videoObjectDef.Id() == aObject->Def().Id()) )
+            /*CMdEProperty* inDefaultFolder = NULL;
+            TBool inDefaultFolderVal(ETrue);
+            TInt inDefaultFolderErr = aObject->Property( baseObjDef.GetPropertyDefL( MdeConstants::Object::KInDefaultFolder ), inDefaultFolder, 0 );
+            
+            if(inDefaultFolder &&  inDefaultFolderErr >= 0 )
                 {
-                TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round and not image or video, skip");
+                inDefaultFolderVal = inDefaultFolder->BoolValueL();
+                }*/
+            
+		   // Symbian^3 specific
+           if( !(( imageObjectDef.Id() == aObject->Def().Id() || videoObjectDef.Id() == aObject->Def().Id()) 
+                   /*&& inDefaultFolderVal*/ ) )
+                {
+                TN_DEBUG1( "CThumbAGProcessor::CreateThumbnailsL() 1st round; not image or video in default folder, skip");
                 ActivateAO();
                 return;
                 }
@@ -935,6 +964,7 @@
             }        
         else 
             {
+            iTMSession->SetRequestObserver(*this);
             iSessionDied = EFalse;
             }
         }    
@@ -1110,9 +1140,10 @@
             iRemoveQueue.Remove( 0 );
             delete source;
             delete uri;
+            
+            iActiveCount++;
+            iActive = ETrue;
             }
-            
-        ActivateAO();
         }
     else if( i2ndRoundGenerateQueue.Count() > 0)
         {
@@ -1133,7 +1164,7 @@
 //
 void CThumbAGProcessor::DeleteAndCancelQuery(TBool aRestoreItems)
     {
-    TN_DEBUG1( "CThumbAGProcessor::DeleteAndCancelQuery() in" );
+    TN_DEBUG2( "CThumbAGProcessor::DeleteAndCancelQuery(aRestoreItems = %d) in", aRestoreItems );
     
     if(iQuery)
         {
@@ -1728,7 +1759,8 @@
         {
         iIdle = ETrue; 
         
-        if(iAddQueue.Count() + iModifyQueue.Count() + iRemoveQueue.Count() + i2ndRoundGenerateQueue.Count() > 0 )
+        if(iAddQueue.Count() + iModifyQueue.Count() + iRemoveQueue.Count() + 
+           iQueryQueue.Count() + i2ndRoundGenerateQueue.Count() > 0 )
             {
             ActivateAO();
             }