diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/src/coeenvextra.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/src/coeenvextra.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,143 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __COEENVEXTRA_H__ +#define __COEENVEXTRA_H__ + +#include +#include +#include "coepriv.h" + +class CRepository; +class CCoeFepLoader; +class CCoeFepPlugIn; +class CCoeFepTracker; +class CCoeRedrawer; +class CCoeFep; +class CCoeTextDrawerBase; + +/** @internalTechnology */ +class CCoeEnvExtra : public CBase + { +public: + class TFep + { + public: + inline TFep() : iFep(NULL), iFepUid(KNullUid), iFepPlugIn(NULL) {} + public: + CCoeFep* iFep; + TUid iFepUid; + CCoeFepPlugIn* iFepPlugIn; + }; + + class CHighPriorityActive : public CActive + { + public: + static CHighPriorityActive* NewL(CCoeEnvExtra& aCoeEnvExtra); + ~CHighPriorityActive(); + void QueueNotificationToFocusObserversOfChangeInFocus(); + TInt FocusObserverNotificationIdentifier() const; + TBool FocusObserverNotificationIsStillPending(TInt aFocusObserverNotificationIdentifier) const; + void NotifyFocusObserversOfChangeInFocus(); + private: + CHighPriorityActive(CCoeEnvExtra& aCoeEnvExtra); + private: // from CActive + void DoCancel(); + void RunL(); + private: + CCoeEnvExtra& iCoeEnvExtra; + TInt iFocusObserverNotificationIdentifier; + }; + NONSHARABLE_CLASS(CScreenItem) : public CBase + { + public: + CScreenItem(CWsScreenDevice* aScreenDevice,RWindowGroup* aWindowGroup); + ~CScreenItem(); + CWsScreenDevice* ScreenDevice(); + RWindowGroup* WindowGroup(); + void SetScreenDevice(CWsScreenDevice* aScreenDevice); + void SetWindowGroup(RWindowGroup* aWindowGroup); + private: + CWsScreenDevice* iScreenDevice; + RWindowGroup* iWindowGroup; + }; +public: + CCoeEnvExtra(); + void ConstructL(); + virtual ~CCoeEnvExtra(); + // ObserverOfLoadedFep + void AddObserverOfLoadedFepL(MCoeObserverOfLoadedFep& aObserverOfLoadedFep) {AddObserverL(iArrayOfObserversOfLoadedFep, &aObserverOfLoadedFep);} + void RemoveObserverOfLoadedFep(const MCoeObserverOfLoadedFep& aObserverOfLoadedFep) {RemoveObserver(iArrayOfObserversOfLoadedFep, &aObserverOfLoadedFep);} + void HandleChangeInLoadedFep(); + // FocusObserver + void AddFocusObserverL(MCoeFocusObserver& aFocusObserver) {AddObserverL(iArrayOfFocusObservers, &aFocusObserver);} + void RemoveFocusObserver(const MCoeFocusObserver& aFocusObserver) {RemoveObserver(iArrayOfFocusObservers, &aFocusObserver);} + void NotifyFocusObserversOfChangeInFocus(); + void NotifyFocusObserversOfDestructionOfFocusedItem(); + // ForegroundObserver + void AddForegroundObserverL(MCoeForegroundObserver& aForegroundObserver) {AddObserverL(iArrayOfForegroundObservers, &aForegroundObserver);} + void RemoveForegroundObserver(const MCoeForegroundObserver& aForegroundObserver) {RemoveObserver(iArrayOfForegroundObservers, &aForegroundObserver);} + void NotifyForegroundObserversOfGainingForeground(); + void NotifyForegroundObserversOfLosingForeground(); + // MessageObserver + void AddMessageObserverL(MCoeMessageObserver& aMessageObserver) {AddObserverL(iArrayOfMessageObservers, &aMessageObserver);} + void RemoveMessageObserver(const MCoeMessageObserver& aMessageObserver) {RemoveObserver(iArrayOfMessageObservers, &aMessageObserver);} + void NotifyMessageObserversOfMessageL(TUint32 aClientHandleOfTargetWindowGroup, const TUid& aMessageUid, const TDesC8& aMessageParameters); + // FepObserver + void AddFepObserverL(MCoeFepObserver& aFepObserver) {AddObserverL(iArrayOfFepObservers, &aFepObserver);} + void RemoveFepObserver(const MCoeFepObserver& aFepObserver) {RemoveObserver(iArrayOfFepObservers, &aFepObserver);} + void ForEachFepObserverCall(TCoeFepObserverFunction aFepObserverFunction); + static void DestroyFep(TAny* aFep); + static void DestroyFep(TFep& aFep); + // ResourceChangeObserver + void AddResourceChangeObserverL(MCoeResourceChangeObserver& aResourceChangeObserver) {AddObserverL(iArrayOfResourceChangeObservers, &aResourceChangeObserver);} + void RemoveResourceChangeObserver(const MCoeResourceChangeObserver& aResourceChangeObserver) {RemoveObserver(iArrayOfResourceChangeObservers, &aResourceChangeObserver);} + void NotifyResourceObserversOfChangeInResource(); + // AddMessageMonitorObserver + void AddMessageMonitorObserverL(MCoeMessageMonitorObserver& aMessageMonitorObserver) {AddObserverL(iArrayOfMessageMonitorObservers, &aMessageMonitorObserver);} + void RemoveMessageMonitorObserver(const MCoeMessageMonitorObserver& aMessageMonitorObserver) {RemoveObserver(iArrayOfMessageMonitorObservers, &aMessageMonitorObserver);} + void NotifyMessageMonitorObserversOfEvent(const TWsEvent &aEvent); +private: + static void AddObserverL(RArray& aArrayOfObservers, TAny* aObserver); + static void RemoveObserver(RArray& aArrayOfObservers, const TAny* aObserver); +public: + CCoeRedrawer* iRedrawer; + CCoeFepTracker* iFepTracker; + CCoeFepLoader* iFepLoader; + TFep iFep; + CHighPriorityActive* iHighPriorityActive; + RArray iResFileAccessCount; + TPriQue iCoeStaticList; + CVwsSessionWrapper* iVwsSession; + CCoeFontProvider* iDefaultFontProvider; + TZoomFactor iZoomFactor; + CCoeTextDrawerBase* iDefaultTextDrawer; + TInt iAppStartupInstrumentationEventIdBase; + TBool iControlState; + TInt iSupportedPointers; + RPointerArray iArrayOfScreenItems; +private: + RArray iArrayOfObserversOfLoadedFep; + RArray iArrayOfFocusObservers; + RArray iArrayOfForegroundObservers; + RArray iArrayOfMessageObservers; + RArray iArrayOfFepObservers; + RArray iArrayOfResourceChangeObservers; + RArray iArrayOfMessageMonitorObservers; + RMutex iMutex; + }; + +#endif +