menucontentsrv/srvsrc/menusrvappscanner.cpp
branchRCL_3
changeset 23 ace62b58f4b2
parent 22 1b207dd38b72
child 25 9e077f9a342c
equal deleted inserted replaced
22:1b207dd38b72 23:ace62b58f4b2
    30 #include "menuutil.h"
    30 #include "menuutil.h"
    31 
    31 
    32 _LIT( KMenuOne, "1" );
    32 _LIT( KMenuOne, "1" );
    33 _LIT( KMenuAttrMmcId, "mmc_id" );
    33 _LIT( KMenuAttrMmcId, "mmc_id" );
    34 _LIT( KMenuMassStorage, "mass_storage" );
    34 _LIT( KMenuMassStorage, "mass_storage" );
       
    35 _LIT( KMenuPredefinedWidget, "predefined_widget" );
    35 _LIT( KMenuMmcHistoryFname, "mmchistory" );
    36 _LIT( KMenuMmcHistoryFname, "mmchistory" );
    36 
    37 
    37 // ==================== LOCAL FUNCTIONS ====================
    38 // ==================== LOCAL FUNCTIONS ====================
    38 
    39 
    39 /**
    40 /**
  1033 
  1034 
  1034 // ---------------------------------------------------------
  1035 // ---------------------------------------------------------
  1035 // CMenuSrvAppScanner::HandleMissingItemsL
  1036 // CMenuSrvAppScanner::HandleMissingItemsL
  1036 // ---------------------------------------------------------
  1037 // ---------------------------------------------------------
  1037 //
  1038 //
  1038 void CMenuSrvAppScanner::HandleMissingItemsL
  1039 TMenuItem::TFlags CMenuSrvAppScanner::GetProperFlagL( const TMenuItem& aItem )
  1039 ( const RArray<TMenuItem>& aItems )
  1040     {
       
  1041     TMenuItem::TFlags flags = TMenuItem::ENoFlag;
       
  1042 
       
  1043     TUint mmcId = 0;
       
  1044     TPtrC val;
       
  1045     TBool dummy;
       
  1046     if( iEng.ObjectL( aItem.Id() ).FindAttribute( KMenuAttrMmcId(), val, dummy ) )
       
  1047         {
       
  1048         MenuUtils::GetTUint( val, mmcId );
       
  1049         if ( mmcId && KErrNotFound != iMmcHistory->Find( mmcId ) )
       
  1050             {
       
  1051             // This item is on an MMC which is currently in the MMC history.
       
  1052             // Set it "missing" but keep it.
       
  1053             flags = TMenuItem::EMissing;
       
  1054             }
       
  1055         else if ( val == KMenuMassStorage()
       
  1056                     && IsDriveInUse( DriveInfo::EDefaultMassStorage ) )
       
  1057             {
       
  1058             flags = TMenuItem::EMissing;
       
  1059             }
       
  1060         else if ( iEng.ObjectL( aItem.Id() ).FindAttribute(
       
  1061                 KMenuPredefinedWidget(), val, dummy ) )
       
  1062             {
       
  1063             flags = TMenuItem::EMissing;
       
  1064             }
       
  1065         }
       
  1066     else if( iEng.ObjectL( aItem.Id() ).GetAppType()
       
  1067                 != CMenuEngObject::EWidgetApp
       
  1068             || iEng.ObjectL( aItem.Id() ).FindAttribute(
       
  1069                     KMenuPredefinedWidget(), val, dummy ) )
       
  1070         {
       
  1071         flags = TMenuItem::EHidden;
       
  1072         }
       
  1073     return flags;
       
  1074     }
       
  1075 
       
  1076 // ---------------------------------------------------------
       
  1077 // CMenuSrvAppScanner::HandleMissingItemsL
       
  1078 // ---------------------------------------------------------
       
  1079 //
       
  1080 void CMenuSrvAppScanner::HandleMissingItemsL(
       
  1081         const RArray<TMenuItem>& aItems )
  1040     {
  1082     {
  1041     for ( TInt i = 0; i < aItems.Count(); i++ )
  1083     for ( TInt i = 0; i < aItems.Count(); i++ )
  1042         {
  1084         {
  1043         const TInt id = aItems[i].Id();
  1085         TMenuItem::TFlags flags = GetProperFlagL( aItems[i] );
  1044         TUint mmcId = 0;
  1086         if( flags == TMenuItem::ENoFlag )
  1045         TPtrC val;
  1087             {
  1046         TBool dummy;
  1088             iEng.RemoveL( aItems[i].Id() );
  1047         if( iEng.ObjectL( id ).FindAttribute( KMenuAttrMmcId(), val, dummy ) )
       
  1048             {
       
  1049             MenuUtils::GetTUint( val, mmcId );
       
  1050 			if ( mmcId && KErrNotFound != iMmcHistory->Find( mmcId ) )
       
  1051 				{
       
  1052 				// This item is on an MMC which is currently in the MMC history.
       
  1053 				// Set it "missing" but keep it.
       
  1054 				SetObjectFlagsL( ETrue, aItems[i], TMenuItem::EMissing,
       
  1055 						RMenuNotifier::EItemsAddedRemoved );
       
  1056 				}
       
  1057 			else if ( val == KMenuMassStorage()
       
  1058 						&& IsDriveInUse( DriveInfo::EDefaultMassStorage ) )
       
  1059 				{
       
  1060 				SetObjectFlagsL( ETrue, aItems[i], TMenuItem::EMissing,
       
  1061 						RMenuNotifier::EItemsAddedRemoved );
       
  1062 				}
       
  1063 			else
       
  1064 				{
       
  1065 				iEng.RemoveL( id );
       
  1066 				}
       
  1067             }
  1089             }
  1068         else
  1090         else
  1069             {
  1091             {
  1070             // This item is not on MMC or its MMC has been purged from the MMC
  1092             SetObjectFlagsL( ETrue, aItems[i], flags,
  1071             // history. Hide the item.
  1093                     RMenuNotifier::EItemsAddedRemoved );
  1072             SetObjectFlagsL( EFalse, aItems[i], TMenuItem::ELockDelete );
       
  1073 
       
  1074 			if( iEng.ObjectL( id ).GetAppType() != CMenuEngObject::EWidgetApp )
       
  1075             	{
       
  1076             	SetObjectFlagsL( ETrue, aItems[i], TMenuItem::EHidden,
       
  1077 						RMenuNotifier::EItemsAddedRemoved );
       
  1078             	}
       
  1079             else
       
  1080             	{
       
  1081                	iEng.RemoveL( id );
       
  1082             	}
       
  1083             }
  1094             }
  1084         }
  1095         }
  1085     }
  1096     }
  1086 
  1097 
  1087 // ---------------------------------------------------------
  1098 // ---------------------------------------------------------