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); |