17 |
17 |
18 |
18 |
19 |
19 |
20 // INCLUDE FILES |
20 // INCLUDE FILES |
21 #include "CProfileImpl.h" |
21 #include "CProfileImpl.h" |
|
22 #include "CProfileNameImpl.h" |
|
23 #include "CProfileTonesImpl.h" |
|
24 #include "CProfileExtraTonesImpl.h" |
|
25 #include "CProfileExtraSettingsImpl.h" |
|
26 #include "CProfilePresenceImpl.h" |
|
27 #include "ProfileEngUtils.h" |
|
28 #include "ProfileEnginePrivateCRKeys.h" |
22 #include <e32svr.h> |
29 #include <e32svr.h> |
23 #include <cntitem.h> |
30 #include <cntitem.h> |
24 #include <CPbkContactEngine.h> |
|
25 #include <cntdb.h> |
31 #include <cntdb.h> |
26 #include <cntdef.h> |
32 #include <cntdef.h> |
27 #include <TProfileToneSettings.h> |
33 #include <TProfileToneSettings.h> |
28 #include <MProfilePttSettings.h> |
34 #include <MProfilePttSettings.h> |
29 #include <featmgr.h> |
35 #include <featmgr.h> |
30 #include <bldvariant.hrh> |
36 #include <bldvariant.hrh> |
31 #include <RSSSettings.h> |
37 #include <RSSSettings.h> |
32 #include <pathinfo.h> |
38 #include <pathinfo.h> |
33 #include "CProfileNameImpl.h" |
39 #include <MProfilesLocalFeatures.h> |
34 #include "CProfileTonesImpl.h" |
40 #include <MProfileUtilitySingleton.h> |
35 #include "CProfileExtraTonesImpl.h" |
41 #include <ProfilesVariant.hrh> |
36 #include "CProfileExtraSettingsImpl.h" |
|
37 #include "CProfilePresenceImpl.h" |
|
38 #include "MProfilesLocalFeatures.h" |
|
39 #include "MProfileUtilitySingleton.h" |
|
40 #include "ProfilesVariant.hrh" |
|
41 #include "ProfileEngUtils.h" |
|
42 #include "ProfileEnginePrivateCRKeys.h" |
|
43 #include <ProfileEngineDomainConstants.h> |
42 #include <ProfileEngineDomainConstants.h> |
44 |
43 |
45 // CONSTANTS |
44 // CONSTANTS |
46 // Max. number of Alert for groups: |
45 // Max. number of Alert for groups: |
47 const TInt KProfilesMaxAlertForGroups = 512; |
46 const TInt KProfilesMaxAlertForGroups = 512; |
214 // ----------------------------------------------------------------------------- |
213 // ----------------------------------------------------------------------------- |
215 // |
214 // |
216 const TArray<TContactItemId> CProfileImpl::AlertForL() |
215 const TArray<TContactItemId> CProfileImpl::AlertForL() |
217 { |
216 { |
218 TInt contactIdListCount( iAlertFor.Count() ); |
217 TInt contactIdListCount( iAlertFor.Count() ); |
219 if( contactIdListCount > 0 ) |
218 |
220 { |
|
221 // create CPbkContactEngine |
|
222 CPbkContactEngine* contactEngine = CPbkContactEngine::NewL( &iFs ); |
|
223 CleanupStack::PushL( contactEngine ); |
|
224 CContactIdArray* groupIds = contactEngine->Database().GetGroupIdListL(); |
|
225 |
|
226 if( !groupIds ) |
|
227 { // There are no groups in Contacts db -> clear the alert for IDs: |
|
228 iAlertFor.Reset(); |
|
229 } |
|
230 else |
|
231 { |
|
232 CleanupStack::PushL( groupIds ); |
|
233 TInt err; |
|
234 for( TInt i( 0 ) ; i < contactIdListCount ; ++i ) |
|
235 { |
|
236 err = groupIds->Find( iAlertFor[i] ); |
|
237 |
|
238 if( err == KErrNotFound ) |
|
239 { |
|
240 // remove this |
|
241 iAlertFor.Remove( i ); |
|
242 --contactIdListCount; |
|
243 --i; |
|
244 err = KErrNone; |
|
245 } |
|
246 User::LeaveIfError( err ); |
|
247 } |
|
248 CleanupStack::PopAndDestroy(); // groupIds |
|
249 } |
|
250 CleanupStack::PopAndDestroy(); // contactEngine |
|
251 } |
|
252 |
219 |
253 return iAlertFor.Array(); |
220 return iAlertFor.Array(); |
254 } |
221 } |
255 |
222 |
256 // ----------------------------------------------------------------------------- |
223 // ----------------------------------------------------------------------------- |