|
1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #ifndef __COEVWMAN_H__ |
|
17 #define __COEVWMAN_H__ |
|
18 |
|
19 #include <viewcli.h> // class MVwsSessionWrapperObserver |
|
20 |
|
21 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS |
|
22 #include <vwsdefpartner.h> |
|
23 #endif |
|
24 |
|
25 class CCoeAppUi; |
|
26 class CCoeEnv; |
|
27 class MCoeView; |
|
28 class MCoeViewDeactivationObserver; |
|
29 class MCoeViewActivationObserver; |
|
30 class CCoeControl; |
|
31 class CCoeView; |
|
32 class MCoeViewObserver; |
|
33 class CCoeViewObserver; |
|
34 class CVwsSessionWrapper; |
|
35 |
|
36 |
|
37 /** |
|
38 * The CCoeViewManager class provides Cone's view management and implements the view specific functionality accessed |
|
39 * through the CCoeAppUi API. |
|
40 * |
|
41 */ |
|
42 class CCoeViewManager : public CBase, public MVwsSessionWrapperObserver |
|
43 { |
|
44 public: |
|
45 static CCoeViewManager* NewL(CCoeEnv& aCoeEnv,CCoeAppUi& aAppUi,CCoeAppUi* aPreviousAppUi); |
|
46 ~CCoeViewManager(); |
|
47 private: |
|
48 CCoeViewManager(CCoeEnv& aCoeEnv,CCoeAppUi& aAppUi,CCoeAppUi* aPreviousAppUi); |
|
49 void ConstructL(); |
|
50 public: // view activation |
|
51 void ActivateViewL(const TVwsViewId& aViewId, TBool aActivatingTopView = EFalse); |
|
52 void ActivateViewL(const TVwsViewId& aViewId,const TUid& aCustomMessageId,const TDesC8& aCustomMessage, TBool aActivatingTopView = EFalse); |
|
53 void ActivateTopViewL(); |
|
54 void DeactivateActiveViewL(); |
|
55 void DeactivateActiveViewIfOwnerMatchL(); |
|
56 void CreateActivateViewEventL(const TVwsViewId& aViewId,const TUid& aCustomMessageId,const TDesC8& aCustomMessage); |
|
57 public: // view registration |
|
58 void RegisterViewL(MCoeView& aView); |
|
59 void DeregisterView(const MCoeView& aView); |
|
60 void RegisterApplicationViewL(const TUid& aAppUid); |
|
61 void DeregisterApplicationView(); |
|
62 void CheckInitializeViewsL(const TUid& aAppUid); |
|
63 void SetDefaultViewL(const MCoeView& aView); |
|
64 void SetApplicationViewAsDefaultL(); |
|
65 TInt GetDefaultViewId(TVwsViewId& aViewId) const; |
|
66 TInt GetActiveViewId(TVwsViewId& aViewId) const; |
|
67 public: // view switch observation |
|
68 void AddViewDeactivationObserverL(MCoeViewDeactivationObserver* aViewDeactivationObserver); |
|
69 void RemoveViewDeactivationObserver(MCoeViewDeactivationObserver* aViewDeactivationObserver); |
|
70 void NotifyNextDeactivation(const TVwsViewId& aViewId, MCoeViewDeactivationObserver& aViewDeactivationObserver); |
|
71 void NotifyNextDeactivation(MCoeViewDeactivationObserver& aViewDeactivationObserver); |
|
72 void AddViewActivationObserverL(MCoeViewActivationObserver* aViewActivationObserver); |
|
73 void RemoveViewActivationObserver(MCoeViewActivationObserver* aViewActivationObserver); |
|
74 void NotifyNextActivation(const TVwsViewId& aViewId, MCoeViewActivationObserver& aViewActivationObserver); |
|
75 void NotifyNextActivation(MCoeViewActivationObserver& aViewActivationObserver); |
|
76 void AddViewObserverL(MCoeViewObserver* aViewObserver); |
|
77 void RemoveViewObserver(MCoeViewObserver* aViewObserver); |
|
78 public: // View session configuration |
|
79 TInt EnableExternalViewSwitches(TBool aEnable); |
|
80 private: // From MVwsSessionWrapperObserver. |
|
81 void HandleViewEventL(const TVwsViewEvent& aEvent); |
|
82 public: // view related interfaces. |
|
83 void DoActivationL(const TVwsViewId& aViewId,const TVwsViewId& aPreviousViewId,const TUid& aCustomMessageId,TInt aCustomMessageLength); |
|
84 void DoDeactivation(const TVwsViewId& aViewId, const TVwsViewId& aActiveViewId, const TVwsViewEvent::TVwsViewEventType aType); |
|
85 void HandleViewDeactivationNotification(const TVwsViewId& aViewId,const TVwsViewId& aActiveViewId); |
|
86 void HandleViewActivationNotification(const TVwsViewId& aActiveViewId,const TVwsViewId& aViewToDeactivatedId); |
|
87 TVwsViewIdAndMessage HandleScreenDeviceChangedL(const TVwsViewId& aViewId); |
|
88 TInt ViewIndex(const MCoeView& aView) const; |
|
89 TInt ViewIndex(const TVwsViewId& aViewId) const; |
|
90 void SetSystemDefaultViewL(const TVwsViewId& aViewId,TInt aMode); |
|
91 void SetSystemDefaultViewL(const TVwsViewId& aViewId); |
|
92 TBool IsViewConstructed(const TVwsViewId& aViewId) const; |
|
93 void GetSystemDefaultViewL(TVwsViewId& aViewId); |
|
94 TBool CheckSourceOfViewSwitchL(const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic) const; |
|
95 TInt GetTopViewId(TVwsViewId& aViewId) const; |
|
96 void SetCustomControl(const TInt aCustomControl); |
|
97 void SetWindowGroupOrdinal(const TInt aWindowGroupOrdinal); |
|
98 void UpdateViewServerBackgroundColor(const TRgb& aBgColor); |
|
99 private: |
|
100 friend class CTestDriver; |
|
101 private: |
|
102 void CompleteActivation(TInt aActiveViewIndex,const TVwsViewId& aViewId,const TVwsViewId& aPreviousViewId); |
|
103 private: |
|
104 CCoeAppUi& iAppUi; |
|
105 CCoeEnv& iCoeEnv; |
|
106 TPtrC8 iCustomMessage; |
|
107 CCoeAppUi* iPreviousAppUi; |
|
108 TBool iRegisteredApplicationView; |
|
109 CCoeViewObserver* iViewObserver; |
|
110 CArrayPtrFlat<CCoeView> iViewArray; |
|
111 CVwsSessionWrapper* iVwsSession; |
|
112 CArrayPtrFlat<MCoeViewDeactivationObserver> iViewDeactivationObserverArray; |
|
113 MCoeViewDeactivationObserver* iNextViewDeactivationObserver; |
|
114 CArrayPtrFlat<MCoeViewActivationObserver> iViewActivationObserverArray; |
|
115 MCoeViewActivationObserver* iNextViewActivationObserver; |
|
116 CArrayPtrFlat<MCoeViewObserver> iViewObserverArray; |
|
117 TInt iActiveViewIndex; |
|
118 TVwsViewId iDefaultViewId; |
|
119 TVwsViewId iLastActiveViewId; |
|
120 TVwsViewId iActiveViewId; |
|
121 TVwsViewId iApplicationViewId; |
|
122 TBool iActivatingTopView; |
|
123 TVwsViewId iActivatingViewId; |
|
124 TInt iCustomControl; |
|
125 TInt iWindowGroupOrdinal; |
|
126 }; |
|
127 |
|
128 #endif // __COEVWMAN_H__ |