williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __APGCTL_H__ williamr@2: #define __APGCTL_H__ williamr@2: williamr@2: #if !defined(__E32STD_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: // classes defined: williamr@2: class CApaSystemControl; williamr@2: class CApaSystemControlList; williamr@2: // williamr@2: // classes referenced: williamr@2: class RFs; williamr@2: class CApaMaskedBitmap; williamr@2: // williamr@2: williamr@2: /** williamr@2: Calls the control DLL's first ordinal function to create and run the control. williamr@2: williamr@2: The function leaves with KErrBadLibraryEntryPoint if the ordinal 1 function williamr@2: cannot be found. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: typedef TInt (*ApaRunSystemControl)(const TDesC&); williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: #ifdef _UNICODE williamr@2: #define KUidSystemControlDll KUidSystemControlDll16 williamr@2: #else williamr@2: #define KUidSystemControlDll KUidSystemControlDll8 williamr@2: #endif williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @deprecated williamr@2: */ williamr@2: const TInt KSystemControlDllUidValue8=0x10000297; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @deprecated williamr@2: */ williamr@2: const TUid KUidSystemControlDll8={KSystemControlDllUidValue8}; williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TUid KUidSystemControlDll16={0x10003A34}; williamr@2: williamr@2: williamr@2: class CApaSystemControl : public CBase williamr@2: /** Wrapper to a control panel application. williamr@2: williamr@2: An instance of the class represents a control panel application. It is also a cache for the control's icon and caption. williamr@2: williamr@2: An instance of the wrapper can only be constructed by the control panel application list, which williamr@2: is a CApaSystemControlList object. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C void CreateL(); williamr@2: IMPORT_C TUid Type()const; williamr@2: IMPORT_C TFileName FileName()const; williamr@2: IMPORT_C CApaMaskedBitmap* Icon()const; // one size of icon, 48x48? williamr@2: IMPORT_C TPtrC Caption()const; williamr@2: IMPORT_C TPtrC ShortCaption()const; williamr@2: private: williamr@2: static CApaSystemControl* NewL(RFs& aFs,const TDesC& aFullPath,const TUidType aUidType); williamr@2: ~CApaSystemControl(); williamr@2: williamr@2: CApaSystemControl(RFs& aFs); williamr@2: void ConstructL(const TDesC& aFullPath,const TUidType aUidType); williamr@2: private: williamr@2: CApaSystemControl* iNext; williamr@2: HBufC* iCaption; williamr@2: HBufC* iShortCaption; williamr@2: CApaMaskedBitmap* iIcon; williamr@2: TBool iExists; // used during updating williamr@2: TFileName iFullPath; williamr@2: TUidType iUidType; williamr@2: RFs& iFs; williamr@2: williamr@2: friend class CApaSystemControlList; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: class CApaSystemControlList : public CBase williamr@2: /** Provides a list of all available control panel applications present on the phone. williamr@2: This class is implemented as a linked list of CApaSystemControl. Updates the control panel application list by removing williamr@2: control panels that no longer exist, adding new control panels found to the control panel application list and replacing williamr@2: a control panel if found in an earlier drive. williamr@2: williamr@2: @see CApaSystemControl williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CApaSystemControlList* NewL(RFs& aFs); williamr@2: IMPORT_C ~CApaSystemControlList(); williamr@2: williamr@2: IMPORT_C TInt Count()const; williamr@2: IMPORT_C TInt Index(TUid aType)const; williamr@2: IMPORT_C CApaSystemControl* Control(TInt aIndex)const; williamr@2: IMPORT_C CApaSystemControl* Control(TUid aType)const; williamr@2: williamr@2: IMPORT_C void UpdateL(); williamr@2: inline TInt UpdateCount()const; williamr@2: private: williamr@2: CApaSystemControlList(RFs& aFs); williamr@2: CApaSystemControl* PreviousControl(const CApaSystemControl* aControl) const; williamr@2: private: williamr@2: TInt iUpdateCount; williamr@2: RFs& iFs; williamr@2: CApaSystemControl* iControl; williamr@2: }; williamr@2: williamr@2: williamr@2: // williamr@2: // inlines williamr@2: // williamr@2: williamr@2: williamr@2: inline TInt CApaSystemControlList::UpdateCount()const williamr@2: /** Gets the number of times the control panel application list has been williamr@2: updated (by calling UpdateL()). It returns 1 for a newly created list. williamr@2: williamr@2: @return The number of times the control panel application list has been changed. */ williamr@2: { return iUpdateCount; } williamr@2: williamr@2: williamr@2: williamr@2: #endif