50 // --------------------------------------------------------- |
52 // --------------------------------------------------------- |
51 // |
53 // |
52 CWmPlugin::~CWmPlugin() |
54 CWmPlugin::~CWmPlugin() |
53 { |
55 { |
54 iPostponedCommand = ENone; |
56 iPostponedCommand = ENone; |
|
57 |
|
58 // delete WM UI resources |
55 if ( iViewAppUi ) |
59 if ( iViewAppUi ) |
56 { |
60 { |
57 if ( iWmMainContainer && IsActive() ) |
61 if ( iWmMainContainer && IsActive() ) |
58 { |
62 { |
|
63 // WM is showing. Hide first! |
59 iWmMainContainer->SetClosingDown( ETrue ); |
64 iWmMainContainer->SetClosingDown( ETrue ); |
60 TRAPD( err, iViewAppUi->ActivateLocalViewL( |
65 TRAPD( err, iViewAppUi->ActivateLocalViewL( |
61 iPreviousViewUid.iViewUid ); ); |
66 iPreviousViewUid.iViewUid ); ); |
62 if ( KErrNone == err ) |
67 if ( KErrNone == err ) |
63 { |
68 { |
|
69 // wait until previous view is switched on top |
|
70 // then continue destruction. |
64 iWait->Start(); |
71 iWait->Start(); |
65 // remove view from appui |
|
66 iViewAppUi->RemoveView( |
|
67 TUid::Uid( EWmMainContainerViewId ) ); |
|
68 } |
72 } |
69 else |
73 else |
70 { |
74 { |
71 TRAP_IGNORE( iViewAppUi->DeactivateActiveViewL(); ); |
75 // try to activate default view |
72 iViewAppUi->RemoveFromViewStack( |
76 TVwsViewId viewId; |
73 *iWmMainView, iWmMainContainer ); |
77 if ( iViewAppUi->GetDefaultViewId( viewId ) != KErrNone ) |
74 delete iWmMainContainer; |
78 { |
75 iWmMainContainer = NULL; |
79 viewId.iAppUid = iViewAppUi->Application()->AppDllUid(); |
|
80 viewId.iViewUid = TUid::Uid( 1 ); |
|
81 } |
|
82 |
|
83 TRAPD( err, iViewAppUi->ActivateLocalViewL( viewId.iViewUid ); ); |
|
84 if ( KErrNone == err ) |
|
85 { |
|
86 // wait until previous view is switched on top |
|
87 // then continue destruction. |
|
88 iWait->Start(); |
|
89 } |
76 } |
90 } |
77 } |
91 } |
78 } |
92 // remove view from appui (also deletes it) |
|
93 iViewAppUi->RemoveView( |
|
94 TUid::Uid( EWmMainContainerViewId ) ); |
|
95 } |
|
96 |
|
97 // delete other members |
79 delete iResourceLoader; |
98 delete iResourceLoader; |
80 delete iEffectManager; |
99 delete iEffectManager; |
81 delete iPostponedContent; |
100 delete iPostponedContent; |
82 delete iWait; |
101 delete iWait; |
83 } |
102 } |
96 // --------------------------------------------------------- |
115 // --------------------------------------------------------- |
97 // |
116 // |
98 void CWmPlugin::ConstructL() |
117 void CWmPlugin::ConstructL() |
99 { |
118 { |
100 iWmMainContainer = NULL; |
119 iWmMainContainer = NULL; |
101 iWmMainView = NULL; |
|
102 |
120 |
103 // store static view app ui |
121 // store static view app ui |
104 CEikonEnv* eikonEnv = CEikonEnv::Static(); |
122 CEikonEnv* eikonEnv = CEikonEnv::Static(); |
105 if ( !eikonEnv ) User::Leave( KErrUnknown ); |
123 if ( !eikonEnv ) User::Leave( KErrUnknown ); |
106 iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi(); |
124 iViewAppUi = (CAknViewAppUi*)eikonEnv->EikAppUi(); |
118 CWmMainContainerView* mainView = |
136 CWmMainContainerView* mainView = |
119 CWmMainContainerView::NewL( *this ); |
137 CWmMainContainerView::NewL( *this ); |
120 CleanupStack::PushL( mainView ); |
138 CleanupStack::PushL( mainView ); |
121 iViewAppUi->AddViewL( mainView ); |
139 iViewAppUi->AddViewL( mainView ); |
122 CleanupStack::Pop( mainView ); |
140 CleanupStack::Pop( mainView ); |
123 iWmMainView = mainView; |
|
124 } |
141 } |
125 |
142 |
126 // --------------------------------------------------------- |
143 // --------------------------------------------------------- |
127 // CWmPlugin::Activate |
144 // CWmPlugin::Activate |
128 // --------------------------------------------------------- |
145 // --------------------------------------------------------- |