mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledp.cpp
changeset 17 aabe5387f5ce
parent 0 d0791faffa3f
child 14 60a94a45d437
equal deleted inserted replaced
0:d0791faffa3f 17:aabe5387f5ce
    26 #include "cmtpfiledpconfigmgr.h"
    26 #include "cmtpfiledpconfigmgr.h"
    27 #include "cmtprequestprocessor.h"
    27 #include "cmtprequestprocessor.h"
    28 #include "mtpfiledpconst.h"
    28 #include "mtpfiledpconst.h"
    29 #include "mtpfiledppanic.h"
    29 #include "mtpfiledppanic.h"
    30 #include "mtpfiledpprocessor.h"
    30 #include "mtpfiledpprocessor.h"
       
    31 #include "cmtpdataprovidercontroller.h"
    31 
    32 
    32 // Class constants
    33 // Class constants
    33 static const TInt KArrayGranularity = 3;
    34 static const TInt KArrayGranularity = 3;
    34 static const TInt KActiveEnumeration = 0;
    35 static const TInt KActiveEnumeration = 0;
    35 __FLOG_STMT(_LIT8(KComponent,"CMTPFileDataProvider");)
    36 __FLOG_STMT(_LIT8(KComponent,"CMTPFileDataProvider");)
    61         iActiveProcessors[count]->Release();
    62         iActiveProcessors[count]->Release();
    62         }
    63         }
    63     iActiveProcessors.Close();
    64     iActiveProcessors.Close();
    64     iDpSingletons.Close();
    65     iDpSingletons.Close();
    65 	iFileDPSingletons.Close();
    66 	iFileDPSingletons.Close();
       
    67 	iSingletons.Close();
    66     delete iFileEnumerator;
    68     delete iFileEnumerator;
    67     delete iExclusionMgr;
    69     delete iExclusionMgr;
    68     __FLOG(_L8("~CMTPFileDataProvider - Exit"));
    70     __FLOG(_L8("~CMTPFileDataProvider - Exit"));
    69     __FLOG_CLOSE; 
    71     __FLOG_CLOSE; 
    70     }
    72     }
   133     
   135     
   134 void CMTPFileDataProvider::StartObjectEnumerationL(TUint32 aStorageId, TBool /*aPersistentFullEnumeration*/)
   136 void CMTPFileDataProvider::StartObjectEnumerationL(TUint32 aStorageId, TBool /*aPersistentFullEnumeration*/)
   135     {
   137     {
   136     __FLOG(_L8("StartObjectEnumerationL - Entry"));
   138     __FLOG(_L8("StartObjectEnumerationL - Entry"));
   137 
   139 
       
   140     iPendingEnumerations.AppendL(aStorageId);
       
   141     if (iPendingEnumerations.Count() == 1)
       
   142         {
       
   143 		CMTPDataProviderController& dpController(iSingletons.DpController());
       
   144 		TBool bOnlyScanRoot = ( (dpController.EnumerateState() == CMTPDataProviderController::EEnumeratingFrameworkObjects) && (dpController.NeedEnumeratingPhase2()) );
       
   145 		iFileEnumerator->StartL(iPendingEnumerations[KActiveEnumeration], bOnlyScanRoot);
       
   146         }
       
   147     __FLOG(_L8("StartObjectEnumerationL - Exit"));
       
   148     }
       
   149     
       
   150 void CMTPFileDataProvider::StartStorageEnumerationL()
       
   151     {
       
   152     __FLOG(_L8("StartStorageEnumerationL - Entry"));
   138     iExclusionMgr->AppendFormatExclusionListL();
   153     iExclusionMgr->AppendFormatExclusionListL();
   139     iDpSingletons.MTPUtility().FormatExtensionMapping();
   154     iDpSingletons.MTPUtility().FormatExtensionMapping();
   140     iPendingEnumerations.AppendL(aStorageId);
       
   141     if (iPendingEnumerations.Count() == 1)
       
   142         {
       
   143         iFileEnumerator->StartL(iPendingEnumerations[KActiveEnumeration]);
       
   144         }
       
   145     __FLOG(_L8("StartObjectEnumerationL - Exit"));
       
   146     }
       
   147     
       
   148 void CMTPFileDataProvider::StartStorageEnumerationL()
       
   149     {
       
   150     __FLOG(_L8("StartStorageEnumerationL - Entry"));
       
   151     Framework().StorageEnumerationCompleteL();
   155     Framework().StorageEnumerationCompleteL();
   152     __FLOG(_L8("StartStorageEnumerationL - Exit"));
   156     __FLOG(_L8("StartStorageEnumerationL - Exit"));
   153     }
   157     }
   154     
   158     
   155 void CMTPFileDataProvider::Supported(TMTPSupportCategory aCategory, RArray<TUint>& aArray) const
   159 void CMTPFileDataProvider::Supported(TMTPSupportCategory aCategory, RArray<TUint>& aArray) const
   218     
   222     
   219     Framework().ObjectEnumerationCompleteL(iPendingEnumerations[KActiveEnumeration]);
   223     Framework().ObjectEnumerationCompleteL(iPendingEnumerations[KActiveEnumeration]);
   220     iPendingEnumerations.Remove(KActiveEnumeration);
   224     iPendingEnumerations.Remove(KActiveEnumeration);
   221     if (iPendingEnumerations.Count())
   225     if (iPendingEnumerations.Count())
   222         {
   226         {
   223         iFileEnumerator->StartL(iPendingEnumerations[KActiveEnumeration]);
   227 		CMTPDataProviderController& dpController(iSingletons.DpController());
       
   228 		TBool bOnlyScanRoot = ( (dpController.EnumerateState() == CMTPDataProviderController::EEnumeratingFrameworkObjects) && (dpController.NeedEnumeratingPhase2()) );
       
   229         iFileEnumerator->StartL(iPendingEnumerations[KActiveEnumeration], bOnlyScanRoot);
   224         }
   230         }
   225     __FLOG(_L8("HandleEnumerationCompletedL - Exit"));
   231     __FLOG(_L8("HandleEnumerationCompletedL - Exit"));
   226     }
   232     }
   227     
   233     
   228 /**
   234 /**
   244     {
   250     {
   245     __FLOG_OPEN(KMTPSubsystem, KComponent);  
   251     __FLOG_OPEN(KMTPSubsystem, KComponent);  
   246     __FLOG(_L8("ConstructL - Entry"));
   252     __FLOG(_L8("ConstructL - Entry"));
   247   	iDpSingletons.OpenL(Framework());
   253   	iDpSingletons.OpenL(Framework());
   248   	iFileDPSingletons.OpenL(Framework());
   254   	iFileDPSingletons.OpenL(Framework());
       
   255   	iSingletons.OpenL();
   249   	
   256   	
   250   	iExclusionMgr = CMTPFileDpExclusionMgr::NewL(Framework());
   257   	iExclusionMgr = CMTPFileDpExclusionMgr::NewL(Framework());
   251   	iDpSingletons.SetExclusionMgrL(*iExclusionMgr);
   258   	iDpSingletons.SetExclusionMgrL(*iExclusionMgr);
   252   	
   259   	
   253   	TUint processLimit = iFileDPSingletons.FrameworkConfig().UintValueL(CMTPFileDpConfigMgr::EEnumerationIterationLength);
   260   	TUint processLimit = iFileDPSingletons.FrameworkConfig().UintValueL(CMTPFileDpConfigMgr::EEnumerationIterationLength);