diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_feature_checker_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_feature_checker_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +0,0 @@ - -
-00001 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -00002 // All rights reserved. -00003 // This component and the accompanying materials are made available -00004 // under the terms of "Eclipse Public License v1.0" -00005 // which accompanies this distribution, and is available -00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". -00007 // -00008 // Initial Contributors: -00009 // Nokia Corporation - initial contribution. -00010 // -00011 // Contributors: -00012 // -00013 // Description: -00014 // -00015 -00016 #include "FeatureChecker.h" -00017 #include <e32cons.h> -00018 -00019 void CFeatureChecker::ConstructL() -00020 { -00021 iFeatNotifier = CFeatureNotifier::NewL(*this); -00022 } -00023 -00024 CFeatureChecker* CFeatureChecker::NewL() -00025 { -00026 CFeatureChecker* self=new(ELeave)CFeatureChecker(); -00027 CleanupStack::PushL(self); -00028 self->ConstructL(); -00029 CleanupStack::Pop(self); -00030 return self; -00031 } -00032 -00036 CFeatureChecker::~CFeatureChecker() -00037 { -00038 delete iFeatNotifier; -00039 } -00040 -00044 void CFeatureChecker::NotifyFeatureL() -00045 { -00046 RFeatureUidArray featArray; -00047 CleanupClosePushL(featArray); -00048 TUid uidFeature; -00049 -00050 //Number of feature UIDs which are subscribed to for notification. -00051 const TInt KNumFeaturesforNotification(10); -00052 -00053 //Base feature UID for which notification requests are made. This is the same UID range which -00054 //the user can use when adding features to the FeatMngrExample process. -00055 TUid KFeatureUidforNotification = {0x12000000}; -00056 -00057 //Append the UIDs to featArray. -00058 for( int k=0; k<=KNumFeaturesforNotification; k++) -00059 { -00060 uidFeature.iUid = KFeatureUidforNotification.iUid + k; -00061 featArray.Append(uidFeature); -00062 } -00063 -00064 //Request notification for user defined features. -00065 User::LeaveIfError(iFeatNotifier->NotifyRequest(featArray)); -00066 CleanupStack::PopAndDestroy(&featArray); -00067 } -00068 -00072 void CFeatureChecker::HandleNotifyError(TInt /*err*/) -00073 { -00074 } -00075 -00081 void CFeatureChecker::HandleNotifyChange(TFeatureChangeType aType, TFeatureEntry /*aFeature*/) -00082 { -00083 const TInt KFeatureChangeTypeMaxSize(45); -00084 TBuf<KFeatureChangeTypeMaxSize> changetype; -00085 switch(aType) -00086 { -00087 case EFeatureNoChange: -00088 _LIT(KNoChange, "Feature status not changed"); -00089 changetype.Copy(KNoChange); -00090 break; -00091 case EFeatureStatusUpdated : -00092 _LIT(KStatusUpdated, "Feature status changed to enabled or disabled"); -00093 changetype.Copy(KStatusUpdated); -00094 break; -00095 case EFeatureDataUpdated: -00096 _LIT(KDataUpdated, "Feature data changed"); -00097 changetype.Copy(KDataUpdated); -00098 break; -00099 case EFeatureStatusDataUpdated: -00100 //not used in the current version. -00101 _LIT(KStatusDataUpdated, "Feature status and data changed"); -00102 changetype.Copy(KStatusDataUpdated); -00103 break; -00104 case EFeatureRediscover: -00105 //not used in the current version. -00106 _LIT(KFeatureRediscover, "Complex change occurred, reload all features"); -00107 changetype.Copy(KFeatureRediscover); -00108 break; -00109 case EFeatureFeatureCreated: -00110 _LIT(KFeatureCreated, "New feature has been added to the system"); -00111 changetype.Copy(KFeatureCreated); -00112 break; -00113 case EFeatureFeatureDeleted: -00114 _LIT(KFeatureDeleted, "Feature has been deleted"); -00115 changetype.Copy(KFeatureDeleted); -00116 break; -00117 } -00118 //Print the change type as an infoprint. -00119 User::InfoPrint(changetype); -00120 } -00121 -00126 static void MainL() -00127 { -00128 CActiveScheduler* scheduler = new (ELeave) CActiveScheduler(); -00129 CleanupStack::PushL(scheduler); -00130 CActiveScheduler::Install(scheduler); -00131 -00132 CFeatureChecker* featChecker = CFeatureChecker::NewL(); -00133 CleanupStack::PushL(featChecker); -00134 //Issue feature change notification request. -00135 featChecker->NotifyFeatureL(); -00136 CActiveScheduler::Start(); -00137 -00138 CleanupStack::PopAndDestroy(featChecker); -00139 CleanupStack::PopAndDestroy(scheduler); -00140 } -00141 -00142 extern TInt E32Main() -00143 { -00144 // Create cleanup stack -00145 __UHEAP_MARK; -00146 CTrapCleanup* cleanup = CTrapCleanup::New(); -00147 if(cleanup == NULL) -00148 { -00149 return KErrNoMemory; -00150 } -00151 // Run application code inside TRAP harness. -00152 TRAPD(mainError, MainL()); -00153 if(mainError != KErrNone) -00154 { -00155 _LIT(KUserPanic,"Failed to complete"); -00156 User::Panic(KUserPanic, mainError); -00157 } -00158 delete cleanup; -00159 __UHEAP_MARKEND; -00160 return KErrNone; -00161 } -