diff -r 89d6a7a84779 -r 25a17d01db0c Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_feature_checker_8cpp-source.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/_feature_checker_8cpp-source.html Fri Jan 22 18:26:19 2010 +0000 @@ -0,0 +1,155 @@ + + +TB10.1 Example Applications: examples/Base/FeatMngrExample/FeatureChecker/src/FeatureChecker.cpp Source File + + + + +

examples/Base/FeatMngrExample/FeatureChecker/src/FeatureChecker.cpp

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         }
+

Generated on Thu Jan 21 10:32:55 2010 for TB10.1 Example Applications by  + +doxygen 1.5.3
+ +