18 |
18 |
19 // INCLUDE FILES |
19 // INCLUDE FILES |
20 #include "xnwallpaperview.h" |
20 #include "xnwallpaperview.h" |
21 #include "xnwallpapercontainer.h" |
21 #include "xnwallpapercontainer.h" |
22 #include "xnuiengine.h" |
22 #include "xnuiengine.h" |
23 #include "xneditor.h" |
23 #include "xnappuiadapter.h" |
|
24 #include "xnviewadapter.h" |
24 #include "xnbackgroundmanager.h" |
25 #include "xnbackgroundmanager.h" |
|
26 #include <xnuiengine.rsg> |
25 |
27 |
26 // SYSTEM INCLUDE FILES |
28 // SYSTEM INCLUDE FILES |
27 #include <aknappui.h> |
29 #include <aknappui.h> |
28 #include <eikbtgpc.h> |
30 #include <eikbtgpc.h> |
29 #include <avkon.rsg> |
31 #include <avkon.rsg> |
30 #include <AknsWallpaperUtils.h> |
32 #include <AknsWallpaperUtils.h> |
31 #include <MGFetch.h> |
33 #include <MGFetch.h> |
|
34 #include <aknnotewrappers.h> |
|
35 #include <StringLoader.h> |
|
36 #include <caf/caf.h> |
32 |
37 |
33 _LIT8( KMulti, "multi" ); |
38 _LIT8( KMulti, "multi" ); |
34 const TInt KFileArrayGranularity = 6; |
39 const TInt KFileArrayGranularity = 6; |
35 |
40 |
36 // ============================ MEMBER FUNCTIONS =============================== |
41 // ============================ MEMBER FUNCTIONS =============================== |
95 void CXnWallpaperView::DoActivateL( |
102 void CXnWallpaperView::DoActivateL( |
96 const TVwsViewId& aPrevViewId, |
103 const TVwsViewId& aPrevViewId, |
97 TUid /*aCustomMessageId*/, |
104 TUid /*aCustomMessageId*/, |
98 const TDesC8& aCustomMessage ) |
105 const TDesC8& aCustomMessage ) |
99 { |
106 { |
100 iAvkonAppUi->StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL ); |
107 iAvkonAppUi->StatusPane()->SwitchLayoutL( |
|
108 R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); |
101 iAvkonAppUi->StatusPane()->DrawNow(); |
109 iAvkonAppUi->StatusPane()->DrawNow(); |
102 if ( !iContainer ) |
110 if ( !iContainer ) |
103 { |
111 { |
104 iContainer = CXnWallpaperContainer::NewL(); |
112 iContainer = CXnWallpaperContainer::NewL(); |
105 iAvkonAppUi->AddToStackL( *this, iContainer ); |
113 iAvkonAppUi->AddToStackL( *this, iContainer ); |
106 iContainer->ActivateL(); |
114 iContainer->ActivateL(); |
107 iContainer->DrawNow(); |
115 iContainer->DrawNow(); |
108 } |
116 } |
109 |
117 |
|
118 iData.iAppUid = aPrevViewId.iAppUid; |
|
119 iData.iViewUid = aPrevViewId.iViewUid; |
|
120 iData.iMultiple = EFalse; |
|
121 iData.iTimer = iTimer; |
|
122 |
|
123 if( aCustomMessage == KMulti ) |
|
124 { |
|
125 iData.iMultiple = ETrue; |
|
126 } |
|
127 |
|
128 // Run image selection dialog asynchronously |
|
129 if ( iTimer->IsActive() ) |
|
130 { |
|
131 iTimer->Cancel(); |
|
132 } |
|
133 iTimer->Start( 0, 1000, TCallBack( TimerCallbackL, &iData ) ); |
|
134 } |
|
135 |
|
136 // ----------------------------------------------------------------------------- |
|
137 // CXnWallpaperView::DoActivateL |
|
138 // ----------------------------------------------------------------------------- |
|
139 // |
|
140 void CXnWallpaperView::DoDeactivate() |
|
141 { |
|
142 if ( iContainer ) |
|
143 { |
|
144 iAvkonAppUi->RemoveFromStack( iContainer ); |
|
145 delete iContainer; |
|
146 iContainer = NULL; |
|
147 } |
|
148 } |
|
149 |
|
150 // ----------------------------------------------------------------------------- |
|
151 // CXnWallpaperView::TimerCallback |
|
152 // ----------------------------------------------------------------------------- |
|
153 // |
|
154 TInt CXnWallpaperView::TimerCallbackL(TAny *aPtr) |
|
155 { |
|
156 TInt errAddWallpaper = KErrNone; |
|
157 |
|
158 TXnWallpaperViewData* data = reinterpret_cast<TXnWallpaperViewData*>( aPtr ); |
|
159 data->iTimer->Cancel(); |
|
160 |
110 CDesCArrayFlat* files = |
161 CDesCArrayFlat* files = |
111 new (ELeave) CDesCArrayFlat( KFileArrayGranularity ); |
162 new (ELeave) CDesCArrayFlat( KFileArrayGranularity ); |
112 CleanupStack::PushL( files ); |
163 CleanupStack::PushL( files ); |
113 TBool selected = EFalse; |
164 TBool selected = EFalse; |
114 |
165 |
115 TBool multiple=EFalse; |
166 TRAPD( err, selected = MGFetch::RunL( *files, EImageFile, data->iMultiple ) ); |
116 if( aCustomMessage == KMulti ) |
|
117 { |
|
118 multiple = ETrue; |
|
119 } |
|
120 TRAPD( err, selected = MGFetch::RunL( *files, EImageFile, multiple ) ); |
|
121 if ( err == KErrNone && |
167 if ( err == KErrNone && |
122 selected && |
168 selected && |
123 files->MdcaCount() > 0 ) |
169 files->MdcaCount() > 0 ) |
124 { |
170 { |
125 // set wallpaper. |
171 // set wallpaper. |
126 if( files->MdcaCount() == 1 ) |
172 if( files->MdcaCount() == 1 ) |
127 { |
173 { |
128 iEngine.Editor()->BgManager().AddWallpaperL( files->MdcaPoint( 0 ) ); |
174 CXnAppUiAdapter* appui = static_cast< CXnAppUiAdapter* >( iAvkonAppUi ); |
|
175 CXnBackgroundManager& bgManager = appui->ViewAdapter().BgManager(); |
|
176 errAddWallpaper = bgManager.AddWallpaperL( files->MdcaPoint( 0 ) ); |
129 } |
177 } |
130 } |
178 } |
131 CleanupStack::PopAndDestroy( files ); |
179 CleanupStack::PopAndDestroy( files ); |
132 |
180 |
133 iAvkonAppUi->ActivateViewL( aPrevViewId ); |
181 if( errAddWallpaper == KErrCACorruptContent ) |
134 |
182 { |
135 } |
183 //load message text |
136 |
184 HBufC* msg = StringLoader::LoadLC( R_QTN_HS_CORRUPTED_IMAGE_NOTE ); |
137 // ----------------------------------------------------------------------------- |
185 //ensure that dialog will not disappear immediatelly - by const. param |
138 // CXnWallpaperView::DoActivateL |
186 CAknErrorNote* dialog = new (ELeave) CAknErrorNote( true ); |
139 // ----------------------------------------------------------------------------- |
187 CleanupStack::PushL( dialog ); |
140 // |
188 //show dialog to user and destroy it |
141 void CXnWallpaperView::DoDeactivate() |
189 dialog->ExecuteLD( *msg ); |
142 { |
190 CleanupStack::Pop( dialog ); |
143 if ( iContainer ) |
191 CleanupStack::PopAndDestroy( msg ); |
144 { |
192 } |
145 iAvkonAppUi->RemoveFromStack( iContainer ); |
193 |
146 delete iContainer; |
194 iAvkonAppUi->ActivateViewL( TVwsViewId( data->iAppUid, data->iViewUid ) ); |
147 iContainer = NULL; |
195 |
148 } |
196 return EFalse; |
149 } |
197 } |
|
198 |
150 |
199 |
151 // End of File |
200 // End of File |