branch | RCL_3 |
changeset 130 | 67f2ed48ad91 |
parent 122 | 6cadd6867c17 |
122:6cadd6867c17 | 130:67f2ed48ad91 |
---|---|
71 // |
71 // |
72 CMenuSrvAppScanner::~CMenuSrvAppScanner() |
72 CMenuSrvAppScanner::~CMenuSrvAppScanner() |
73 { |
73 { |
74 Cancel(); |
74 Cancel(); |
75 delete iMcsSatNotifier; |
75 delete iMcsSatNotifier; |
76 delete iSisInstallNotifier; |
|
77 delete iJavaInstallNotifier; |
|
78 delete iNotifier; |
76 delete iNotifier; |
79 iEng.DequeueOperation( *this ); |
77 iEng.DequeueOperation( *this ); |
80 delete iMmcHistory; |
78 delete iMmcHistory; |
81 iFs.Close(); |
79 iFs.Close(); |
82 |
80 |
95 if( iCenRepNotifyHandlerCPHiddenFolders ) |
93 if( iCenRepNotifyHandlerCPHiddenFolders ) |
96 { |
94 { |
97 iCenRepNotifyHandlerCPHiddenFolders->StopListening(); |
95 iCenRepNotifyHandlerCPHiddenFolders->StopListening(); |
98 } |
96 } |
99 delete iCenRepNotifyHandlerCPHiddenFolders; |
97 delete iCenRepNotifyHandlerCPHiddenFolders; |
100 delete iCenRepSession; |
98 delete iCenRepSession; |
101 delete iFreeSpaceObserver; |
99 delete iFreeSpaceObserver; |
102 iInstalledPackages.Close(); |
100 |
103 } |
101 } |
104 |
102 |
105 // --------------------------------------------------------- |
103 // --------------------------------------------------------- |
106 // CMenuSrvAppScanner::CMenuSrvAppScanner |
104 // CMenuSrvAppScanner::CMenuSrvAppScanner |
107 // --------------------------------------------------------- |
105 // --------------------------------------------------------- |
124 User::LeaveIfError( iFs.Connect() ); |
122 User::LeaveIfError( iFs.Connect() ); |
125 TFileName path; |
123 TFileName path; |
126 User::LeaveIfError( iFs.PrivatePath( path ) ); |
124 User::LeaveIfError( iFs.PrivatePath( path ) ); |
127 TUint attribute; |
125 TUint attribute; |
128 if( iFs.Att( path, attribute) == KErrNotFound ) |
126 if( iFs.Att( path, attribute) == KErrNotFound ) |
129 { |
127 { |
130 TInt mdRes = iFs.MkDirAll( path ); |
128 TInt mdRes = iFs.MkDirAll( path ); |
131 if ( mdRes != KErrNone ) |
129 if ( mdRes != KErrNone ) |
132 { |
130 { |
133 User::Leave( mdRes ); |
131 User::Leave( mdRes ); |
134 } |
132 } |
135 } |
133 } |
136 |
134 |
137 iMmcHistory = new (ELeave) CMenuSrvMmcHistory(); |
135 iMmcHistory = new (ELeave) CMenuSrvMmcHistory(); |
138 iMmcHistory->LoadL( iFs, KMenuMmcHistoryFname() ); |
136 iMmcHistory->LoadL( iFs, KMenuMmcHistoryFname() ); |
139 // The notifier has its own session to apparc, instead of taking |
137 // The notifier has its own session to apparc, instead of taking |
140 // it as argument... :( |
138 // it as argument... :( |
141 iNotifier = CApaAppListNotifier::NewL( this, CActive::EPriorityStandard ); |
139 iNotifier = CApaAppListNotifier::NewL( this, CActive::EPriorityStandard ); |
142 |
140 |
143 iCenRepSession = CRepository::NewL( KCRUidMenu ); |
141 iCenRepSession = CRepository::NewL( KCRUidMenu ); |
144 |
142 |
145 iCenRepNotifyHandlerHiddenApps = CCenRepNotifyHandler::NewL( |
143 iCenRepNotifyHandlerHiddenApps = CCenRepNotifyHandler::NewL( |
146 *this, *iCenRepSession, |
144 *this, *iCenRepSession, |
147 CCenRepNotifyHandler::EStringKey, KMenuHideApplication ); |
145 CCenRepNotifyHandler::EStringKey, KMenuHideApplication ); |
148 iCenRepNotifyHandlerCPHiddenApps = CCenRepNotifyHandler::NewL( |
146 iCenRepNotifyHandlerCPHiddenApps = CCenRepNotifyHandler::NewL( |
149 *this, *iCenRepSession, |
147 *this, *iCenRepSession, |
150 CCenRepNotifyHandler::EStringKey, KMenuHideCPApplication ); |
148 CCenRepNotifyHandler::EStringKey, KMenuHideCPApplication ); |
151 |
149 |
152 iCenRepNotifyHandlerCPHiddenFolders = CCenRepNotifyHandler::NewL( |
150 iCenRepNotifyHandlerCPHiddenFolders = CCenRepNotifyHandler::NewL( |
153 *this, *iCenRepSession, |
151 *this, *iCenRepSession, |
154 CCenRepNotifyHandler::EStringKey, KMenuHideCPFolder ); |
152 CCenRepNotifyHandler::EStringKey, KMenuHideCPFolder ); |
155 |
153 |
156 iCenRepNotifyHandlerHiddenApps->StartListeningL(); |
154 iCenRepNotifyHandlerHiddenApps->StartListeningL(); |
157 iCenRepNotifyHandlerCPHiddenApps->StartListeningL(); |
155 iCenRepNotifyHandlerCPHiddenApps->StartListeningL(); |
158 iCenRepNotifyHandlerCPHiddenFolders->StartListeningL(); |
156 iCenRepNotifyHandlerCPHiddenFolders->StartListeningL(); |
159 |
157 |
160 iMcsSatNotifier = CMcsSatNotifier::NewL( |
158 iMcsSatNotifier = CMcsSatNotifier::NewL( |
161 this, KCRUidMenu, KMenuShowSatUI ); |
159 this, KCRUidMenu, KMenuShowSatUI ); |
162 |
160 |
163 iFreeSpaceObserver = CMcsFreeSpaceObserver::NewL( *this ); |
161 iFreeSpaceObserver = CMcsFreeSpaceObserver::NewL( *this ); |
164 |
162 |
165 iSisInstallNotifier = CMcsInstallNotifier::NewL( |
163 //SetActive(); |
166 *this, CMcsInstallNotifier::ESisInstallNotification ); |
164 ScheduleScan(); |
167 iJavaInstallNotifier = CMcsInstallNotifier::NewL( |
|
168 *this, CMcsInstallNotifier::EJavaInstallNotification ); |
|
169 |
|
170 ScheduleScan(); |
|
171 //iOpStatus = ETrue; |
165 //iOpStatus = ETrue; |
172 } |
166 } |
173 |
167 |
174 // --------------------------------------------------------- |
168 // --------------------------------------------------------- |
175 // CMenuSrvAppScanner::RunL |
169 // CMenuSrvAppScanner::RunL |
252 |
246 |
253 // --------------------------------------------------------- |
247 // --------------------------------------------------------- |
254 // CMenuSrvAppScanner::HideAppIfExists |
248 // CMenuSrvAppScanner::HideAppIfExists |
255 // --------------------------------------------------------- |
249 // --------------------------------------------------------- |
256 // |
250 // |
257 void CMenuSrvAppScanner::HideItemIfPresentL( |
251 void CMenuSrvAppScanner::HideItemIfPresentL( TInt aFolder, TInt aId, const TDesC& aUid, TBool aWasHidden ) |
258 TInt aFolder, TInt aId, const TDesC& aUid, TBool aWasHidden ) |
|
259 { |
252 { |
260 TBool hideItem = EFalse; |
253 TBool hideItem = EFalse; |
261 TMenuSrvAttrFilter uidAppFilter; |
254 TMenuSrvAttrFilter uidAppFilter; |
262 uidAppFilter.SetAttr( KMenuAttrUid(), aUid ); |
255 uidAppFilter.SetAttr( KMenuAttrUid(), aUid ); |
263 |
256 |
264 RArray<TMenuItem> appItems; |
257 RArray<TMenuItem> appItems; |
265 CleanupClosePushL( appItems ); |
258 CleanupClosePushL( appItems ); |
266 iEng.GetItemsL( appItems, aFolder, &uidAppFilter, ETrue ); |
259 iEng.GetItemsL( appItems, aFolder, &uidAppFilter, ETrue ); |
267 |
260 |
268 for( TInt i=0; i < appItems.Count(); i++ ) |
261 for (TInt i=0; i < appItems.Count(); i++) |
269 { |
262 { |
270 if( appItems[i].Type() != KMenuTypeLink() ) |
263 if(appItems[i].Type() != KMenuTypeLink()) |
271 { |
264 { |
272 const TMenuItem& item = appItems[i]; |
265 const TMenuItem& item = appItems[i]; |
273 |
266 |
274 TBool itemHidden = (0 != ( item.Flags() & TMenuItem::EHidden ) ); |
267 TBool itemHidden = (0 != (item.Flags() & TMenuItem::EHidden)); |
275 TBool itemMissing = ( 0 != ( item.Flags() & TMenuItem::EMissing ) ); |
268 TBool itemMissing = (0 != (item.Flags() & TMenuItem::EMissing)); |
276 if ( !itemHidden && !itemMissing ) |
269 if ( !itemHidden && !itemMissing ) |
277 { |
270 { |
278 hideItem = ETrue; |
271 hideItem = ETrue; |
279 } |
272 } |
280 } |
273 } |
281 } |
274 } |
275 |
|
282 SetHiddenFlagL( aId, aWasHidden, hideItem ); |
276 SetHiddenFlagL( aId, aWasHidden, hideItem ); |
283 |
277 |
284 CleanupStack::PopAndDestroy( &appItems ); |
278 CleanupStack::PopAndDestroy( &appItems ); |
285 } |
279 } |
286 |
280 |
288 // CMenuSrvAppScanner::SetHiddenFlagL |
282 // CMenuSrvAppScanner::SetHiddenFlagL |
289 // --------------------------------------------------------- |
283 // --------------------------------------------------------- |
290 // |
284 // |
291 void CMenuSrvAppScanner::SetHiddenFlagL( TInt aId, TBool aWasHidden, TBool aHide ) |
285 void CMenuSrvAppScanner::SetHiddenFlagL( TInt aId, TBool aWasHidden, TBool aHide ) |
292 { |
286 { |
293 if ( aWasHidden != aHide ) |
287 if ( aWasHidden ^ aHide ) |
294 { |
288 { |
295 iEng.ModifiableObjectL( aId, RMenuNotifier::EItemsAddedRemoved ). |
289 iEng.ModifiableObjectL( aId, RMenuNotifier::EItemsAddedRemoved ). |
296 SetFlags( TMenuItem::EHidden, aHide ); |
290 SetFlags( TMenuItem::EHidden, aHide ); |
297 } |
291 } |
298 } |
292 } |
314 TBool exists = EFalse; |
308 TBool exists = EFalse; |
315 TBool itemMissing = EFalse; |
309 TBool itemMissing = EFalse; |
316 for (TInt i=0; i < appItems.Count(); i++) |
310 for (TInt i=0; i < appItems.Count(); i++) |
317 { |
311 { |
318 if(appItems[i].Id() != aId) |
312 if(appItems[i].Id() != aId) |
319 { |
313 { |
320 exists = ETrue; |
314 exists = ETrue; |
321 const TMenuItem& item = appItems[i]; |
315 const TMenuItem& item = appItems[i]; |
322 |
316 |
323 TBool itemHidden = (0 != (item.Flags() & TMenuItem::EHidden)); |
317 TBool itemHidden = (0 != (item.Flags() & TMenuItem::EHidden)); |
324 itemMissing = (0 != (item.Flags() & TMenuItem::EMissing)); |
318 itemMissing = (0 != (item.Flags() & TMenuItem::EMissing)); |
325 if ( !itemHidden && !itemMissing ) |
319 if ( !itemHidden && !itemMissing ) |
326 { |
320 { |
327 showItem = ETrue; |
321 showItem = ETrue; |
328 } |
322 } |
329 } |
323 } |
330 } |
324 } |
331 |
325 |
332 UpdateLinkL( aId, exists, showItem, itemMissing ); |
326 UpdateLinkL( aId, exists, showItem, itemMissing ); |
333 |
327 |
334 CleanupStack::PopAndDestroy( &appItems ); |
328 CleanupStack::PopAndDestroy( &appItems ); |
469 *ownStatus = KRequestPending; |
463 *ownStatus = KRequestPending; |
470 SetActive(); |
464 SetActive(); |
471 User::RequestComplete( ownStatus, KErrNone ); |
465 User::RequestComplete( ownStatus, KErrNone ); |
472 } |
466 } |
473 } |
467 } |
474 |
|
475 // --------------------------------------------------------- |
|
476 // |
|
477 // --------------------------------------------------------- |
|
478 // |
|
479 void CMenuSrvAppScanner::InstallationNotifyL() |
|
480 { |
|
481 TBool isLegacy = iEng.GetOnceLegacyFormat(); |
|
482 for( TInt i = iInstalledPackages.Count() - 1; i >= 0; i-- ) |
|
483 { |
|
484 RArray<TMenuItem> mcsUidItems; |
|
485 CleanupClosePushL( mcsUidItems ); |
|
486 GetMcsAppItemsL( isLegacy, iInstalledPackages[i].iUid, mcsUidItems ); |
|
487 if( mcsUidItems.Count() ) |
|
488 { |
|
489 iEng.ModifiableObjectL( mcsUidItems[0].Id() ); |
|
490 iInstalledPackages.Remove( i ); |
|
491 } |
|
492 CleanupStack::PopAndDestroy( &mcsUidItems ); |
|
493 } |
|
494 } |
|
495 |
|
496 // --------------------------------------------------------- |
|
497 // |
|
498 // --------------------------------------------------------- |
|
499 // |
|
500 void CMenuSrvAppScanner::RemoveFromInstalledPackages( TUid aUid ) |
|
501 { |
|
502 TInt appIndex = iInstalledPackages.Find( aUid ); |
|
503 if( appIndex != KErrNotFound ) |
|
504 { |
|
505 iInstalledPackages.Remove( appIndex ); |
|
506 } |
|
507 } |
|
508 |
|
509 // --------------------------------------------------------- |
|
510 // |
|
511 // --------------------------------------------------------- |
|
512 // |
|
513 CMenuEngObject& CMenuSrvAppScanner::ModifiableObjectL( TUid aUid, TInt aId, |
|
514 TInt aEvent ) |
|
515 { |
|
516 if( aEvent != RMenuNotifier::EItemsNone ) |
|
517 { |
|
518 RemoveFromInstalledPackages( aUid ); |
|
519 } |
|
520 return iEng.ModifiableObjectL( aId, aEvent ); |
|
521 } |
|
522 |
|
523 // --------------------------------------------------------- |
|
524 // |
|
525 // --------------------------------------------------------- |
|
526 // |
|
527 void CMenuSrvAppScanner::HandleInstallNotifyL( TUid aUid, |
|
528 CMcsInstallNotifier::TNotificationType aNotificationType ) |
|
529 { |
|
530 iInstalledPackages.AppendL( aUid ); |
|
531 // when installing java, appscanner first gets notification from appArc, |
|
532 // and then it is notified with instal notifier(RProperty) |
|
533 // so we need another scan for java apps |
|
534 if( aNotificationType == CMcsInstallNotifier::EJavaInstallNotification ) |
|
535 { |
|
536 ScheduleScan(); |
|
537 } |
|
538 } |
|
539 |
|
540 // --------------------------------------------------------- |
468 // --------------------------------------------------------- |
541 // CMenuSrvAppScanner::RunMenuEngOperationL |
469 // CMenuSrvAppScanner::RunMenuEngOperationL |
542 // --------------------------------------------------------- |
470 // --------------------------------------------------------- |
543 // |
471 // |
544 void CMenuSrvAppScanner::RunMenuEngOperationL() |
472 void CMenuSrvAppScanner::RunMenuEngOperationL() |
545 { |
473 { |
546 UpdateApplicationItemsL(); |
474 UpdateApplicationItemsL(); |
547 UpdateApplicationWithHideIfInstalledItemsL(); |
475 UpdateApplicationWithHideIfInstalledItemsL(); |
548 UpdateLinkItemsL(); |
476 UpdateLinkItemsL(); |
549 InstallationNotifyL(); |
|
550 iOpStatus = EFalse; |
477 iOpStatus = EFalse; |
551 } |
478 } |
552 |
479 |
480 |
|
553 // --------------------------------------------------------- |
481 // --------------------------------------------------------- |
554 // CMenuSrvAppScanner::UpdateApplicationItemL |
482 // CMenuSrvAppScanner::UpdateApplicationItemL |
555 // --------------------------------------------------------- |
483 // --------------------------------------------------------- |
556 // |
484 // |
557 void CMenuSrvAppScanner::UpdateApplicationItemL( |
485 void CMenuSrvAppScanner::UpdateApplicationItemL( |
558 RArray<TMenuItem>& aMcsItems, const CMenuSrvAppAttributes& aApaItem, |
486 RArray<TMenuItem>& aMcsItems, const CMenuSrvAppAttributes& aApaItem, |
559 TUint aMmcId, TBool isLegacy) |
487 TUint aMmcId, TBool isLegacy) |
560 { |
488 { |
561 RArray<TMenuItem> mcsUidItems; |
489 RArray<TMenuItem> mcsUidItems; |
562 CleanupClosePushL( mcsUidItems ); |
490 CleanupClosePushL( mcsUidItems ); |
563 TUid appUid = aApaItem.GetUid(); |
491 TUid appuid = aApaItem.GetUid(); |
564 GetMcsAppItemsL( isLegacy, appUid.iUid, mcsUidItems ); |
492 GetMcsAppItemsL( isLegacy, appuid.iUid, mcsUidItems ); |
565 TBool isApaItemHidden( aApaItem.IsHidden() ); |
493 TBool isApaItemHidden( aApaItem.IsHidden() ); |
566 |
494 |
567 // This app is not in the menu, add it now. |
495 // This app is not in the menu, add it now. |
568 // We don't add hidden items, there are too many of them! |
496 // We don't add hidden items, there are too many of them! |
569 // do not display Menu app |
497 // do not display Menu app |
570 if ( !mcsUidItems.Count() |
498 if ( !mcsUidItems.Count() |
571 && !isApaItemHidden |
499 && !isApaItemHidden |
572 && appUid != KMmUid3 ) |
500 && appuid != KMmUid3 ) |
573 { |
501 { |
574 if( appUid == KSatUid ) |
502 if( appuid == KSatUid ) |
575 { |
503 { |
576 if( CMcsSatHandler::CheckVisibility() ) |
504 if( CMcsSatHandler::CheckVisibility() ) |
577 { |
505 { |
578 AddAppItemL( aApaItem, aMmcId ); |
506 AddAppItemL( aApaItem, aMmcId ); |
579 } |
507 } |
580 } |
508 } |
581 else |
509 else |
582 { |
510 { |
583 AddAppItemL( aApaItem, aMmcId ); |
511 AddAppItemL( aApaItem, aMmcId ); |
584 GetMcsAppItemsL( isLegacy, appUid.iUid, mcsUidItems ); |
512 GetMcsAppItemsL( isLegacy, appuid.iUid, mcsUidItems ); |
585 RemoveFromInstalledPackages( appUid ); |
513 } |
586 } |
|
587 }//if |
514 }//if |
588 |
515 |
589 // if there are any items with legacy UID format |
516 // if there are any items with legacy UID format |
590 // update them to new uid format |
517 // update them to new uid format |
591 else if ( mcsUidItems.Count() && isLegacy ) |
518 else if ( mcsUidItems.Count() && isLegacy ) |
592 { |
519 { |
593 //for every item with matching UID |
520 //for every item with matching UID |
594 for (TInt j=0; j < mcsUidItems.Count(); j++) |
521 for (TInt j=0; j < mcsUidItems.Count(); j++) |
595 { |
522 { |
523 CMenuEngObject& object = |
|
524 iEng.ModifiableObjectL( mcsUidItems[j].Id() ); |
|
596 TBuf<KUidChars> uidString; |
525 TBuf<KUidChars> uidString; |
597 MenuSrvUtil::UidToStringL( appUid.iUid, uidString, EFalse, EHex ); |
526 MenuSrvUtil::UidToStringL( appuid.iUid, uidString, EFalse, EHex ); |
598 ModifiableObjectL( appUid, mcsUidItems[j].Id() ).SetAttributeL( |
527 object.SetAttributeL( KMenuAttrUid(), uidString, EFalse ); |
599 KMenuAttrUid(), uidString, EFalse ); |
528 }//for |
600 }//for |
|
601 }//else if |
529 }//else if |
602 // "hidden", "missing" and "lock_delete" flags update |
530 // "hidden", "missing" and "lock_delete" flags update |
603 for ( TInt j = 0; j < mcsUidItems.Count(); j++ ) |
531 for ( TInt j = 0; j < mcsUidItems.Count(); j++ ) |
604 { |
532 { |
605 const TMenuItem& item = mcsUidItems[j]; |
533 const TMenuItem& item = mcsUidItems[j]; |
606 |
534 |
607 //we need to handle first run of appscanner, |
535 //we need to handle first run of appscanner, |
608 //there might be some incorrect data in content xml file |
536 //there might be some incorrect data in content xml file |
609 //if this will have impact on performance we may run this methods only at start up |
537 //if this will have impact on performance we may run this methods only at start up |
610 HandleMmcAttrUpdateL( item, aApaItem, aMmcId ); |
538 HandleMmcAttrUpdateL( item, aApaItem, aMmcId ); |
611 HandleNativeAttrUpdateL( item, aApaItem ); |
539 HandleNativeAttrUpdateL( item, aApaItem ); |
612 |
540 |
613 // "hidden" flag handling. |
541 // "hidden" flag handling. |
614 HandleHiddenFlagUpdateL( item, aApaItem ); |
542 HandleHiddenFlagUpdateL( item, aApaItem ); |
615 |
543 |
616 // "missing" flag handling |
544 // "missing" flag handling |
617 HandleMissingFlagUpdateL( item, aApaItem ); |
545 HandleMissingFlagUpdateL( item ); |
618 |
546 |
619 //"lock_delete" flag handling |
547 //"lock_delete" flag handling |
620 HandleLockDeleteFlagUpdateL( item, aApaItem ); |
548 HandleLockDeleteFlagUpdateL(item, aApaItem ); |
621 // if item was just added to MCS it is not present in aMcsItems |
549 // if item was just added to MCS it is not present in aMcsItems |
622 // so we cannot remove it |
550 // so we cannot remove it |
623 TInt index = aMcsItems.Find( item, TIdentityRelation<TMenuItem>( IdMatch ) ); |
551 TInt index = aMcsItems.Find( item, TIdentityRelation<TMenuItem>( IdMatch ) ); |
624 if ( index != KErrNotFound ) |
552 if ( index != KErrNotFound ) |
625 { |
553 { |
626 aMcsItems.Remove( index ); |
554 aMcsItems.Remove( index ); |
627 } |
555 } |
628 }//for |
556 }//for |
629 CleanupStack::PopAndDestroy( &mcsUidItems ); |
557 CleanupStack::PopAndDestroy( &mcsUidItems ); |
630 } |
558 } |
631 |
559 |
632 // --------------------------------------------------------- |
560 // --------------------------------------------------------- |
633 // CMenuSrvAppScanner::HandleHiddenFlagUpdateL |
561 // CMenuSrvAppScanner::HandleHiddenFlagUpdateL |
634 // --------------------------------------------------------- |
562 // --------------------------------------------------------- |
635 // |
563 // |
636 void CMenuSrvAppScanner::HandleHiddenFlagUpdateL( const TMenuItem & aItem, |
564 void CMenuSrvAppScanner::HandleHiddenFlagUpdateL( const TMenuItem & aItem, |
637 const CMenuSrvAppAttributes& aApaItem ) |
565 const CMenuSrvAppAttributes& aApaItem ) |
638 { |
566 { |
639 TBool itemHidden = ( 0 != ( aItem.Flags() & TMenuItem::EHidden ) ); |
567 TBool itemHidden = (0 != (aItem.Flags() & TMenuItem::EHidden)); |
640 if( aApaItem.GetUid() == KSatUid ) |
568 if ( aApaItem.GetUid() == KSatUid ) |
641 { |
569 { |
642 if( itemHidden == CMcsSatHandler::CheckVisibility() ) |
570 if (itemHidden == CMcsSatHandler::CheckVisibility()) |
643 { |
571 { |
644 ModifiableObjectL( aApaItem.GetUid(), aItem.Id(), |
572 iEng.ModifiableObjectL(aItem.Id(), RMenuNotifier::EItemsAddedRemoved). |
645 RMenuNotifier::EItemsAddedRemoved ).SetFlags( |
573 SetFlags( TMenuItem::EHidden, !CMcsSatHandler::CheckVisibility()); |
646 TMenuItem::EHidden, |
574 } |
647 !CMcsSatHandler::CheckVisibility() ); |
575 } |
648 } |
576 else if ( itemHidden != aApaItem.IsHidden() ) |
649 } |
577 { |
650 else if( itemHidden != aApaItem.IsHidden() ) |
578 iEng.ModifiableObjectL(aItem.Id(), RMenuNotifier::EItemsAddedRemoved). |
651 { |
579 SetFlags( TMenuItem::EHidden, aApaItem.IsHidden() ); |
652 ModifiableObjectL( aApaItem.GetUid(), aItem.Id(), |
580 } |
653 RMenuNotifier::EItemsAddedRemoved ).SetFlags( |
581 } |
654 TMenuItem::EHidden, aApaItem.IsHidden() ); |
|
655 } |
|
656 } |
|
657 |
582 |
658 // --------------------------------------------------------- |
583 // --------------------------------------------------------- |
659 // CMenuSrvAppScanner::HandleNativeAttrUpdateL |
584 // CMenuSrvAppScanner::HandleNativeAttrUpdateL |
660 // --------------------------------------------------------- |
585 // --------------------------------------------------------- |
661 // |
586 // |
662 void CMenuSrvAppScanner::HandleNativeAttrUpdateL( |
587 void CMenuSrvAppScanner::HandleNativeAttrUpdateL( |
663 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem ) |
588 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem ) |
664 { |
589 { |
665 //we need this to delete uninstalled java app item |
590 //we need this to delete uninstalled java app item |
666 if( aApaItem.GetAppType() != iEng.ObjectL( aItem.Id() ).GetAppType() ) |
591 if( aApaItem.GetAppType() != iEng.ObjectL( aItem.Id() ).GetAppType() ) |
667 { |
592 { |
668 ModifiableObjectL( aApaItem.GetUid(), aItem.Id(), |
593 iEng.ModifiableObjectL( aItem.Id(), |
669 RMenuNotifier::EItemsNone ).SetAppType( aApaItem.GetAppType() ); |
594 RMenuNotifier::EItemsNone ).SetAppType( aApaItem.GetAppType() ); |
670 } |
595 } |
671 } |
596 } |
672 |
597 |
673 |
598 |
674 // --------------------------------------------------------- |
599 // --------------------------------------------------------- |
675 // CMenuSrvAppScanner::HandleMmcAttrUpdateL |
600 // CMenuSrvAppScanner::HandleMmcAttrUpdateL |
676 // --------------------------------------------------------- |
601 // --------------------------------------------------------- |
677 // |
602 // |
678 void CMenuSrvAppScanner::HandleMmcAttrUpdateL( |
603 void CMenuSrvAppScanner::HandleMmcAttrUpdateL( |
679 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem, TUint aMmcId ) |
604 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem, TUint aMmcId ) |
680 { |
605 { |
681 TPtrC val; |
606 if ( IsInMmc( aApaItem ) ) |
682 TBool dummy; |
607 { |
683 TBool attributeExists = iEng.ObjectL( aItem.Id() ).FindAttribute( |
608 //app is instaled on mmc - KMenuAttrMmcId attribute update |
684 KMenuAttrMmcId(), val, dummy ); |
609 TBuf<KUidChars> uidString; |
685 if( IsInMmc( aApaItem ) ) |
|
686 { |
|
687 //app is instaled on mmc - KMenuAttrMmcId attribute update |
|
688 TBuf<KUidChars> uidString; |
|
689 uidString.Format( KHexFormat, aMmcId ); |
610 uidString.Format( KHexFormat, aMmcId ); |
690 if( uidString.Compare( val ) ) |
611 iEng.ModifiableObjectL( aItem.Id(), RMenuNotifier::EItemsAddedRemoved ). |
691 { |
612 SetAttributeL( KMenuAttrMmcId, uidString, EFalse ); |
692 ModifiableObjectL( aApaItem.GetUid(), aItem.Id() ).SetAttributeL( |
613 } |
693 KMenuAttrMmcId, uidString, EFalse ); |
614 else if ( IsInMassStorage( aApaItem ) |
694 } |
615 && aApaItem.GetAppType() == CMenuEngObject::EWidgetApp ) |
695 } |
616 { |
696 else if( IsInMassStorage( aApaItem ) |
617 //its java app installed on mass storage, we need to leave it in xml |
697 && aApaItem.GetAppType() == CMenuEngObject::EWidgetApp ) |
618 //in case of connecting usb in mass storage mode |
698 { |
619 iEng.ModifiableObjectL( aItem.Id(), RMenuNotifier::EItemsAddedRemoved ). |
699 //its java app installed on mass storage, we need to leave it in xml |
620 SetAttributeL( KMenuAttrMmcId, KMenuMassStorage, EFalse ); |
700 //in case of connecting usb in mass storage mode |
621 } |
701 if( KMenuMassStorage().Compare( val ) ) |
622 else |
702 { |
623 { |
703 ModifiableObjectL( aApaItem.GetUid(), aItem.Id() ).SetAttributeL( |
624 //its installed on c: drive - remove attribute |
704 KMenuAttrMmcId, KMenuMassStorage, EFalse ); |
625 iEng.ModifiableObjectL( aItem.Id(), RMenuNotifier::EItemsAddedRemoved ). |
705 } |
626 RemoveAttribute( KMenuAttrMmcId ); |
706 } |
627 } |
707 else if( attributeExists ) |
628 } |
708 { |
|
709 //its installed on c: drive - remove attribute |
|
710 ModifiableObjectL( aApaItem.GetUid(), aItem.Id() ).RemoveAttribute( |
|
711 KMenuAttrMmcId ); |
|
712 } |
|
713 } |
|
714 // --------------------------------------------------------- |
629 // --------------------------------------------------------- |
715 // CMenuSrvAppScanner::UpdateApplicationItemsL |
630 // CMenuSrvAppScanner::UpdateApplicationItemsL |
716 // --------------------------------------------------------- |
631 // --------------------------------------------------------- |
717 // |
632 // |
718 void CMenuSrvAppScanner::UpdateApplicationItemsL() |
633 void CMenuSrvAppScanner::UpdateApplicationItemsL() |
724 GetMcsAppItemsL( mcsItems ); |
639 GetMcsAppItemsL( mcsItems ); |
725 iSrvEngUtils.ReloadApaItemsL(); |
640 iSrvEngUtils.ReloadApaItemsL(); |
726 GetCrItemsL( iSrvEngUtils.GetAppItemsL() ); |
641 GetCrItemsL( iSrvEngUtils.GetAppItemsL() ); |
727 TBool isLegacy = iEng.GetOnceLegacyFormat(); |
642 TBool isLegacy = iEng.GetOnceLegacyFormat(); |
728 |
643 |
644 |
|
729 //for every item in apaAndCrItems array |
645 //for every item in apaAndCrItems array |
730 for ( TInt i = ( iSrvEngUtils.GetAppItemsL().Count() - 1 ); i >= 0 ; i-- ) |
646 for ( TInt i = ( iSrvEngUtils.GetAppItemsL().Count() - 1 ); i >= 0 ; i-- ) |
731 { |
647 { |
732 // if there was leave for any item we ignore it |
648 // if there was leave for any item we ignore it |
733 // and proceed to the next one |
649 // and proceed to the next one |
734 TRAP_IGNORE( UpdateApplicationItemL( mcsItems, |
650 TRAP_IGNORE(UpdateApplicationItemL( |
735 *iSrvEngUtils.GetAppItemsL()[i], currentMmcId, isLegacy ) ); |
651 mcsItems, *iSrvEngUtils.GetAppItemsL()[i], currentMmcId, isLegacy)); |
736 } |
652 } |
737 // Here the big list contains menu items that refer to missing apps. |
653 // Here the big list contains menu items that refer to missing apps. |
738 HandleMissingItemsL( mcsItems ); |
654 HandleMissingItemsL( mcsItems ); |
739 CleanupStack::PopAndDestroy( &mcsItems ); |
655 CleanupStack::PopAndDestroy( &mcsItems ); |
740 } |
656 } |
742 // --------------------------------------------------------- |
658 // --------------------------------------------------------- |
743 // CMenuSrvAppScanner::HandleLockDeleteFlagUpdateL |
659 // CMenuSrvAppScanner::HandleLockDeleteFlagUpdateL |
744 // --------------------------------------------------------- |
660 // --------------------------------------------------------- |
745 // |
661 // |
746 void CMenuSrvAppScanner::HandleLockDeleteFlagUpdateL( |
662 void CMenuSrvAppScanner::HandleLockDeleteFlagUpdateL( |
747 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem ) |
663 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem ) |
748 { |
664 { |
749 TBool isHidden = ( ( iEng.ObjectL( aItem.Id() ) |
665 TBool isHidden = ( ( iEng.ObjectL( aItem.Id() ) |
750 .Flags() & TMenuItem::EHidden ) != 0 ); |
666 .Flags() & TMenuItem::EHidden ) != 0 ); |
751 if ( !isHidden && IsInRomL( aApaItem ) ) |
667 if ( !isHidden && IsInRomL( aApaItem ) ) |
752 { |
668 { |
753 if ( ( aItem.Flags() & TMenuItem::ELockDelete ) == 0 ) |
669 if ( ( aItem.Flags() & TMenuItem::ELockDelete ) == 0 ) |
754 { |
670 { |
755 ModifiableObjectL( aApaItem.GetUid(), aItem.Id()).SetFlags( |
671 iEng.ModifiableObjectL(aItem.Id()) |
756 TMenuItem::ELockDelete, ETrue ); |
672 .SetFlags( TMenuItem::ELockDelete, ETrue ); |
757 } |
673 } |
758 } |
674 } |
759 else |
675 else |
760 { |
676 { |
761 if ( ( aItem.Flags() & TMenuItem::ELockDelete ) != 0 ) |
677 if ( ( aItem.Flags() & TMenuItem::ELockDelete ) != 0 ) |
762 { |
678 { |
763 ModifiableObjectL( aApaItem.GetUid(), aItem.Id() ).SetFlags( |
679 iEng.ModifiableObjectL(aItem.Id()) |
764 TMenuItem::ELockDelete, EFalse ); |
680 .SetFlags( TMenuItem::ELockDelete, EFalse ); |
765 } |
681 } |
766 } |
682 } |
767 } |
683 } |
768 |
684 |
769 // --------------------------------------------------------- |
685 // --------------------------------------------------------- |
770 // CMenuSrvAppScanner::HandleMissingFlagUpdateL |
686 // CMenuSrvAppScanner::HandleMissingFlagUpdateL |
771 // --------------------------------------------------------- |
687 // --------------------------------------------------------- |
772 // |
688 // |
773 void CMenuSrvAppScanner::HandleMissingFlagUpdateL( |
689 void CMenuSrvAppScanner::HandleMissingFlagUpdateL( const TMenuItem& aItem ) |
774 const TMenuItem& aItem, const CMenuSrvAppAttributes& aApaItem ) |
690 { |
775 { |
691 if ( aItem.Flags() & TMenuItem::EMissing ) |
776 if ( aItem.Flags() & TMenuItem::EMissing ) |
|
777 { |
692 { |
778 CLOG_WRITE_FORMAT8( "Unsetting flag EMissing on %d", item.Id() ); |
693 CLOG_WRITE_FORMAT8( "Unsetting flag EMissing on %d", item.Id() ); |
779 //application found so we unset "missing" flag |
694 //application found so we unset "missing" flag |
780 ModifiableObjectL( aApaItem.GetUid(), aItem.Id(), |
695 iEng.ModifiableObjectL( aItem.Id(), RMenuNotifier::EItemsAddedRemoved ). |
781 RMenuNotifier::EItemsAddedRemoved ).SetFlags( |
696 SetFlags( TMenuItem::EMissing, EFalse ); |
782 TMenuItem::EMissing, EFalse ); |
697 } |
783 } |
698 } |
784 } |
|
785 |
699 |
786 // --------------------------------------------------------- |
700 // --------------------------------------------------------- |
787 // CMenuSrvAppScanner::GetCrItemsL |
701 // CMenuSrvAppScanner::GetCrItemsL |
788 // --------------------------------------------------------- |
702 // --------------------------------------------------------- |
789 // |
703 // |
790 void CMenuSrvAppScanner::GetCrItemsL( RPointerArray<CMenuSrvAppAttributes>& aArray ) |
704 void CMenuSrvAppScanner::GetCrItemsL( RPointerArray<CMenuSrvAppAttributes>& aArray ) |
791 { |
705 { |
792 TBuf<KCenRepBufferSize> buf; |
706 TBuf<KCenRepBufferSize> buf; |
793 iCenRepSession->Get( KMenuHideCPApplication, buf ); |
707 iCenRepSession->Get( KMenuHideCPApplication, buf ); |
794 ParseUidsL( buf, aArray );// parses UIDs from buf and appends them to array |
708 ParseUidsL( buf, aArray );// parses UIDs from buf and appends them to array |
795 iCenRepSession->Get( KMenuHideApplication, buf ); |
709 iCenRepSession->Get( KMenuHideApplication, buf ); |
796 ParseUidsL( buf, aArray );// parses UIDs from buf and appends them to array |
710 ParseUidsL( buf, aArray );// parses UIDs from buf and appends them to array |
797 } |
711 } |
798 |
712 |
799 // --------------------------------------------------------- |
713 // --------------------------------------------------------- |
800 // CMenuSrvAppScanner::ParseUidsL |
714 // CMenuSrvAppScanner::ParseUidsL |
801 // --------------------------------------------------------- |
715 // --------------------------------------------------------- |
809 TBool notEmpty = EFalse; |
723 TBool notEmpty = EFalse; |
810 while ( !input.Eos() ) |
724 while ( !input.Eos() ) |
811 { |
725 { |
812 if( input.Peek() == ',') |
726 if( input.Peek() == ',') |
813 { |
727 { |
814 SetHiddenL(input.MarkedToken( startMark ), aArray); |
728 SetHidden(input.MarkedToken( startMark ), aArray); |
815 input.Inc(); |
729 input.Inc(); |
816 input.Mark( startMark ); |
730 input.Mark( startMark ); |
817 } |
731 } |
818 input.Inc(); |
732 input.Inc(); |
819 notEmpty = ETrue; |
733 notEmpty = ETrue; |
820 } |
734 } |
821 if ( notEmpty ) |
735 if ( notEmpty ) |
822 { |
736 { |
823 SetHiddenL( input.MarkedToken( startMark ), aArray ); |
737 SetHidden(input.MarkedToken( startMark ), aArray); |
824 } |
738 } |
739 |
|
740 |
|
825 } |
741 } |
826 |
742 |
827 // --------------------------------------------------------- |
743 // --------------------------------------------------------- |
828 // CMenuSrvAppScanner::SetHidden |
744 // CMenuSrvAppScanner::SetHidden |
829 // --------------------------------------------------------- |
745 // --------------------------------------------------------- |
830 // |
746 // |
831 void CMenuSrvAppScanner::SetHiddenL( |
747 void CMenuSrvAppScanner::SetHidden( |
832 const TDesC& aHiddenAppUid, RPointerArray<CMenuSrvAppAttributes>& aArray ) |
748 const TDesC& aHiddenAppUid, RPointerArray<CMenuSrvAppAttributes>& aArray ) |
833 { |
749 { |
834 TLex appUidDescriptor(aHiddenAppUid); |
750 TLex appUidDescriptor(aHiddenAppUid); |
835 TUint hiddenAppUid( 0 ); |
751 TUint hiddenAppUid( 0 ); |
836 appUidDescriptor.Val( hiddenAppUid, EHex ); |
752 appUidDescriptor.Val( hiddenAppUid, EHex ); |
948 // --------------------------------------------------------- |
864 // --------------------------------------------------------- |
949 // CMenuSrvAppScanner::ScheduleScan |
865 // CMenuSrvAppScanner::ScheduleScan |
950 // --------------------------------------------------------- |
866 // --------------------------------------------------------- |
951 // |
867 // |
952 void CMenuSrvAppScanner::ScheduleScan() |
868 void CMenuSrvAppScanner::ScheduleScan() |
953 { |
869 { |
954 if ( !IsActive() && !iOpStatus ) |
870 if ( !IsActive() && !iOpStatus ) |
955 { |
871 { |
956 iOpStatus = ETrue; |
872 iOpStatus = ETrue; |
957 TRequestStatus* ownStatus = &iStatus; |
873 TRequestStatus* ownStatus = &iStatus; |
958 *ownStatus = KRequestPending; |
874 *ownStatus = KRequestPending; |
959 SetActive(); |
875 SetActive(); |
960 User::RequestComplete( ownStatus, KErrNone ); |
876 User::RequestComplete( ownStatus, KErrNone ); |
961 } |
877 } |
962 } |
878 } |
963 |
879 |
964 // --------------------------------------------------------- |
880 // --------------------------------------------------------- |
965 // CMenuSrvAppScanner::CreateInstallFolderL |
881 // CMenuSrvAppScanner::CreateInstallFolderL |
966 // --------------------------------------------------------- |
882 // --------------------------------------------------------- |
967 // |
883 // |
968 TInt CMenuSrvAppScanner::CreateInstallFolderL( const CMenuSrvAppAttributes& aApaItem ) |
884 TInt CMenuSrvAppScanner::CreateInstallFolderL( const CMenuSrvAppAttributes& aApaItem ) |
969 { |
885 { |
970 // Find a folder for this app. |
886 // Find a folder for this app. |
971 TInt folder(0); |
887 TInt folder(0); |
972 if ( aApaItem.GetGroupName().Length() ) |
888 if ( aApaItem.GetGroupName().Length() ) |
973 { |
889 { |
974 // appgroup_name is defined for this app. Find or create folder. |
890 // appgroup_name is defined for this app. Find or create folder. |
983 { |
899 { |
984 // Last resort: it goes to the root. |
900 // Last resort: it goes to the root. |
985 iEng.RootFolderL( folder ); |
901 iEng.RootFolderL( folder ); |
986 } |
902 } |
987 return folder; |
903 return folder; |
988 } |
904 } |
989 |
905 |
990 // --------------------------------------------------------- |
906 // --------------------------------------------------------- |
991 // CMenuSrvAppScanner::AddAppItemL |
907 // CMenuSrvAppScanner::AddAppItemL |
992 // --------------------------------------------------------- |
908 // --------------------------------------------------------- |
993 // |
909 // |
1009 // This app is on the MMC, set the "mmc_id" attribute. |
925 // This app is on the MMC, set the "mmc_id" attribute. |
1010 uidString.Format( KHexFormat, aCurrentMmcId ); |
926 uidString.Format( KHexFormat, aCurrentMmcId ); |
1011 object->SetAttributeL( KMenuAttrMmcId, uidString, EFalse ); |
927 object->SetAttributeL( KMenuAttrMmcId, uidString, EFalse ); |
1012 } |
928 } |
1013 if( aApaItem.GetAppType() == CMenuEngObject::EWidgetApp ) |
929 if( aApaItem.GetAppType() == CMenuEngObject::EWidgetApp ) |
1014 { |
930 { |
1015 //we need this to delete uninstalled java or wrt widget app item |
931 //we need this to delete uninstalled java or wrt widget app item |
1016 if ( !IsInMmc( aApaItem ) |
932 if ( !IsInMmc( aApaItem ) |
1017 && IsInMassStorage( aApaItem ) ) |
933 && IsInMassStorage( aApaItem ) ) |
1018 { |
934 { |
1019 object->SetAttributeL( KMenuAttrMmcId, KMenuMassStorage, EFalse ); |
935 object->SetAttributeL( KMenuAttrMmcId, KMenuMassStorage, EFalse ); |
1020 } |
936 } |
1021 } |
937 } |
1022 object->SetAppType( aApaItem.GetAppType() ); |
938 object->SetAppType( aApaItem.GetAppType() ); |
1023 EnsureFolderWritableL( folder ); |
939 EnsureFolderWritableL( folder ); |
1024 iEng.AddL( *object, folder, 0 ); |
940 iEng.AddL( *object, folder, 0 ); |
1025 CleanupStack::Pop( object ); |
941 CleanupStack::Pop( object ); |
1026 } |
942 } |
1039 const CMenuEngObject& rootObject = iEng.ObjectL( defaultFolderId ); |
955 const CMenuEngObject& rootObject = iEng.ObjectL( defaultFolderId ); |
1040 TPtrC groupName; |
956 TPtrC groupName; |
1041 TBool localized; |
957 TBool localized; |
1042 |
958 |
1043 if ( rootObject.FindAttribute( KMenuAttrAppGroupName, groupName, localized ) && |
959 if ( rootObject.FindAttribute( KMenuAttrAppGroupName, groupName, localized ) && |
1044 groupName.Compare( aAppGroupName )==0 ) |
960 groupName.Compare( aAppGroupName )==0 ) |
1045 { |
961 { |
1046 folder = defaultFolderId; |
962 folder = defaultFolderId; |
1047 } |
963 } |
1048 else |
964 else |
1049 { |
965 { |
1050 TMenuSrvTypeAttrFilter filter; |
966 TMenuSrvTypeAttrFilter filter; |
1051 filter.SetType( KMenuTypeFolder() ); |
967 filter.SetType( KMenuTypeFolder() ); |
1052 filter.SetAttr( KMenuAttrAppGroupName(), aAppGroupName ); |
968 filter.SetAttr( KMenuAttrAppGroupName(), aAppGroupName ); |
1053 RArray<TMenuItem> items; |
969 RArray<TMenuItem> items; |
1054 CleanupClosePushL( items ); |
970 CleanupClosePushL( items ); |
1057 if ( items.Count() ) |
973 if ( items.Count() ) |
1058 { |
974 { |
1059 folder = items[0].Id(); |
975 folder = items[0].Id(); |
1060 } |
976 } |
1061 CleanupStack::PopAndDestroy( &items ); |
977 CleanupStack::PopAndDestroy( &items ); |
1062 } |
978 } |
1063 if ( !folder ) |
979 if ( !folder ) |
1064 { |
980 { |
1065 // No such folder, create it now. |
981 // No such folder, create it now. |
1066 CMenuEngObject* object = iEng.NewObjectL( KMenuTypeFolder() ); |
982 CMenuEngObject* object = iEng.NewObjectL( KMenuTypeFolder() ); |
1067 CleanupStack::PushL( object ); |
983 CleanupStack::PushL( object ); |
1147 } |
1063 } |
1148 } |
1064 } |
1149 else if( iEng.ObjectL( aItem.Id() ).GetAppType() |
1065 else if( iEng.ObjectL( aItem.Id() ).GetAppType() |
1150 != CMenuEngObject::EWidgetApp |
1066 != CMenuEngObject::EWidgetApp |
1151 || iEng.ObjectL( aItem.Id() ).FindAttribute( |
1067 || iEng.ObjectL( aItem.Id() ).FindAttribute( |
1152 KMenuAttrPredefined(), val, dummy ) ) |
1068 KMenuAttrPredefined(), val, dummy ) ) |
1153 { |
1069 { |
1154 flags = TMenuItem::EHidden; |
1070 flags = TMenuItem::EHidden; |
1155 } |
1071 } |
1156 return flags; |
1072 return flags; |
1157 } |
1073 } |
1181 // --------------------------------------------------------- |
1097 // --------------------------------------------------------- |
1182 // CMenuSrvAppScanner::SetObjectFlagsL |
1098 // CMenuSrvAppScanner::SetObjectFlagsL |
1183 // --------------------------------------------------------- |
1099 // --------------------------------------------------------- |
1184 // |
1100 // |
1185 void CMenuSrvAppScanner::SetObjectFlagsL( TBool aFlagValue, const TMenuItem& aItem, |
1101 void CMenuSrvAppScanner::SetObjectFlagsL( TBool aFlagValue, const TMenuItem& aItem, |
1186 const TMenuItem::TFlags& aFlag, const RMenuNotifier::TEvent& aEvent ) |
1102 const TMenuItem::TFlags& aFlag, const RMenuNotifier::TEvent& aEvent ) |
1187 { |
1103 { |
1188 TBool itemFlagPresent = (0 != (aItem.Flags() & aFlag)); |
1104 TBool itemFlagPresent = (0 != (aItem.Flags() & aFlag)); |
1189 if( aFlagValue != itemFlagPresent ) |
1105 if( aFlagValue != itemFlagPresent ) |
1190 { |
1106 { |
1191 iEng.ModifiableObjectL( aItem.Id(), aEvent ). |
1107 iEng.ModifiableObjectL( aItem.Id(), aEvent ). |
1192 SetFlags( aFlag, aFlagValue ); |
1108 SetFlags( aFlag, aFlagValue ); |
1193 } |
1109 } |
1194 } |
1110 } |
1195 |
1111 |
1196 // --------------------------------------------------------- |
1112 // --------------------------------------------------------- |
1197 // CMenuSrvAppScanner::UpdateMmcHistoryL |
1113 // CMenuSrvAppScanner::UpdateMmcHistoryL |
1198 // --------------------------------------------------------- |
1114 // --------------------------------------------------------- |
1199 // |
1115 // |
1200 TUint CMenuSrvAppScanner::UpdateMmcHistoryL() |
1116 TUint CMenuSrvAppScanner::UpdateMmcHistoryL() |
1201 { |
1117 { |
1202 TUint mmcId = CurrentMmcId(); |
1118 TUint mmcId = CurrentMmcId(); |
1203 if( mmcId ) |
1119 if( mmcId ) |
1204 { |
1120 { |
1205 iMmcHistory->InsertL( mmcId ); |
1121 iMmcHistory->InsertL( mmcId ); |
1206 iMmcHistory->SaveL( iFs, KMenuMmcHistoryFname() ); |
1122 iMmcHistory->SaveL( iFs, KMenuMmcHistoryFname() ); |
1207 } |
1123 } |
1208 return mmcId; |
1124 return mmcId; |
1209 } |
1125 } |
1210 |
1126 |
1211 // --------------------------------------------------------- |
1127 // --------------------------------------------------------- |
1212 // CMenuSrvAppScanner::CurrentMmcId |
1128 // CMenuSrvAppScanner::CurrentMmcId |
1217 // Get mmc id. Errors are ignored. |
1133 // Get mmc id. Errors are ignored. |
1218 TUint mmcId = 0; |
1134 TUint mmcId = 0; |
1219 TInt mmcDrive; |
1135 TInt mmcDrive; |
1220 TInt err; |
1136 TInt err; |
1221 err = DriveInfo::GetDefaultDrive( |
1137 err = DriveInfo::GetDefaultDrive( |
1222 DriveInfo::EDefaultRemovableMassStorage, mmcDrive ); |
1138 DriveInfo::EDefaultRemovableMassStorage, mmcDrive ); |
1223 if ( !err ) |
1139 if ( !err ) |
1224 { |
1140 { |
1225 TVolumeInfo volumeInfo; |
1141 TVolumeInfo volumeInfo; |
1226 err = iFs.Volume( volumeInfo, mmcDrive ); |
1142 err = iFs.Volume( volumeInfo, mmcDrive ); |
1227 if( !err ) |
1143 if( !err ) |
1235 // --------------------------------------------------------- |
1151 // --------------------------------------------------------- |
1236 // CMenuSrvAppScanner::IsFileInDrive |
1152 // CMenuSrvAppScanner::IsFileInDrive |
1237 // --------------------------------------------------------- |
1153 // --------------------------------------------------------- |
1238 // |
1154 // |
1239 TBool CMenuSrvAppScanner::IsFileInDrive( |
1155 TBool CMenuSrvAppScanner::IsFileInDrive( |
1240 const TDesC& aFileName, |
1156 const TDesC& aFileName, |
1241 const DriveInfo::TDefaultDrives& aDefaultDrive ) const |
1157 const DriveInfo::TDefaultDrives& aDefaultDrive ) const |
1242 { |
1158 { |
1243 if ( aFileName.Length() ) |
1159 if ( aFileName.Length() ) |
1244 { |
1160 { |
1245 TInt mmcDrive; |
1161 TInt mmcDrive; |
1246 TInt err = DriveInfo::GetDefaultDrive( |
1162 TInt err = DriveInfo::GetDefaultDrive( |
1247 aDefaultDrive, mmcDrive ); |
1163 aDefaultDrive, mmcDrive ); |
1248 if ( !err ) |
1164 if ( !err ) |
1249 { |
1165 { |
1250 TInt fileDrive; |
1166 TInt fileDrive; |
1251 err = RFs::CharToDrive( aFileName[0], fileDrive ); |
1167 err = RFs::CharToDrive( aFileName[0], fileDrive ); |
1252 if ( !err && fileDrive == mmcDrive ) |
1168 if ( !err && fileDrive == mmcDrive ) |
1262 // CMenuSrvAppScanner::IsAppInDrive |
1178 // CMenuSrvAppScanner::IsAppInDrive |
1263 // --------------------------------------------------------- |
1179 // --------------------------------------------------------- |
1264 // |
1180 // |
1265 TBool CMenuSrvAppScanner::IsAppInDrive( |
1181 TBool CMenuSrvAppScanner::IsAppInDrive( |
1266 const CMenuSrvAppAttributes& aApaItem, |
1182 const CMenuSrvAppAttributes& aApaItem, |
1267 const DriveInfo::TDefaultDrives& aDefaultDrive ) const |
1183 const DriveInfo::TDefaultDrives& aDefaultDrive ) const |
1268 { |
1184 { |
1269 TBool ret( EFalse ); |
1185 TBool ret( EFalse ); |
1270 if ( IsFileInDrive( aApaItem.GetFullName(), aDefaultDrive ) ) |
1186 if ( IsFileInDrive( aApaItem.GetFullName(), aDefaultDrive ) ) |
1271 { |
1187 { |
1272 ret = ETrue; |
1188 ret = ETrue; |
1273 } |
1189 } |
1274 return ret; |
1190 return ret; |
1275 } |
1191 } |
1276 |
1192 |
1277 // --------------------------------------------------------- |
1193 // --------------------------------------------------------- |
1278 // CMenuSrvAppScanner::IsInMmc |
1194 // CMenuSrvAppScanner::IsInMmc |
1304 // --------------------------------------------------------- |
1220 // --------------------------------------------------------- |
1305 // CMenuSrvAppScanner::IsDriveInUse |
1221 // CMenuSrvAppScanner::IsDriveInUse |
1306 // --------------------------------------------------------- |
1222 // --------------------------------------------------------- |
1307 // |
1223 // |
1308 TBool CMenuSrvAppScanner::IsDriveInUse( |
1224 TBool CMenuSrvAppScanner::IsDriveInUse( |
1309 const DriveInfo::TDefaultDrives& aDefaultDrive ) |
1225 const DriveInfo::TDefaultDrives& aDefaultDrive ) |
1310 { |
1226 { |
1311 TBool inUse( EFalse ); |
1227 TBool inUse( EFalse ); |
1312 TInt drive; |
1228 TInt drive; |
1313 |
1229 |
1314 TInt err = DriveInfo::GetDefaultDrive( aDefaultDrive, drive ); |
1230 TInt err = DriveInfo::GetDefaultDrive( aDefaultDrive, drive ); |
1315 if( err == KErrNone ) |
1231 if( err == KErrNone ) |
1316 { |
1232 { |
1317 TUint status; |
1233 TUint status; |
1318 err = DriveInfo::GetDriveStatus( iFs, drive, status ); |
1234 err = DriveInfo::GetDriveStatus( iFs, drive, status ); |
1319 if( err == KErrNone |
1235 if( err == KErrNone |
1320 && ( status & DriveInfo::EDriveInUse ) ) |
1236 && ( status & DriveInfo::EDriveInUse ) ) |
1321 { |
1237 { |
1322 inUse = ETrue; |
1238 inUse = ETrue; |
1323 } |
1239 } |
1324 } |
1240 } |
1325 |
1241 |
1326 return inUse; |
1242 return inUse; |
1327 } |
1243 } |
1328 |
1244 |
1329 // End of File |
1245 // End of File |