|
1 /* |
|
2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Base class for mail settings and wizard |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 // INCLUDE FILES |
|
21 #include <e32base.h> |
|
22 #include <avkon.hrh> |
|
23 #include <muiuflagger.h> |
|
24 #include <e32base.h> |
|
25 #include <hlplch.h> // HlpLauncher |
|
26 #include <coeaui.h> // CCoeAppUi |
|
27 |
|
28 #include "IMSSettingsBaseUi.h" |
|
29 #include "ImumInSettingsData.h" |
|
30 #include "IMSSettingsItemApprover.h" // CIMSSettingsItemApprover |
|
31 #include "IMSSettingsItemAccessPoint.h" // CIMSSettingsAccessPointItem |
|
32 #include "ImumMboxDefaultData.h" // CImumMboxDefaultData |
|
33 #include "ImumMboxSettingsCtrl.h" // CImumMboxSettingsCtrl |
|
34 #include "ImumInternalApiImpl.h" // CImumInternalApiImpl |
|
35 #include "ImumUtilsLogging.h" |
|
36 #include "EmailFeatureUtils.h" |
|
37 |
|
38 #include <cmapplicationsettingsui.h> |
|
39 |
|
40 // EXTERNAL DATA STRUCTURES |
|
41 // EXTERNAL FUNCTION PROTOTYPES |
|
42 // CONSTANTS |
|
43 // MACROS |
|
44 // LOCAL CONSTANTS AND MACROS |
|
45 // MODULE DATA STRUCTURES |
|
46 // LOCAL FUNCTION PROTOTYPES |
|
47 // FORWARD DECLARATIONS |
|
48 |
|
49 // ============================ MEMBER FUNCTIONS =============================== |
|
50 |
|
51 // ---------------------------------------------------------------------------- |
|
52 // CIMSSettingsBaseUI::CIMSSettingsBaseUI() |
|
53 // ---------------------------------------------------------------------------- |
|
54 // |
|
55 CIMSSettingsBaseUI::CIMSSettingsBaseUI( |
|
56 CIMSSettingsUi& aDialog, |
|
57 CImumInternalApiImpl& aMailboxApi, |
|
58 CEikFormattedCellListBox& aListBox, |
|
59 CAknTitlePane& aTitlePane, |
|
60 CMuiuFlags& aFlags ) |
|
61 : |
|
62 CMuiuDynamicSettingsDialog( aListBox, aTitlePane ), |
|
63 iBaseUiFlags( aFlags ), |
|
64 iDialog( aDialog ), |
|
65 iMailboxApi( aMailboxApi ), |
|
66 iItemApprover( NULL ), |
|
67 iNoteUi( NULL ), |
|
68 iDefaultData( NULL ) |
|
69 { |
|
70 IMUM_CONTEXT( CIMSSettingsBaseUI::CIMSSettingsBaseUI, 0, KLogUi ); |
|
71 |
|
72 } |
|
73 |
|
74 // ---------------------------------------------------------------------------- |
|
75 // CIMSSettingsBaseUI::~CIMSSettingsBaseUI() |
|
76 // ---------------------------------------------------------------------------- |
|
77 // |
|
78 CIMSSettingsBaseUI::~CIMSSettingsBaseUI() |
|
79 { |
|
80 IMUM_CONTEXT( CIMSSettingsBaseUI::~CIMSSettingsBaseUI, 0, KLogUi ); |
|
81 |
|
82 delete iNoteUi; |
|
83 delete iItemApprover; |
|
84 delete iDefaultData; |
|
85 } |
|
86 |
|
87 // ---------------------------------------------------------------------------- |
|
88 // CIMSSettingsBaseUI::BaseUiConstructL() |
|
89 // ---------------------------------------------------------------------------- |
|
90 // |
|
91 void CIMSSettingsBaseUI::BaseUiConstructL( |
|
92 CEikButtonGroupContainer& aSoftkeys, |
|
93 const TInt aSettingResourceId, |
|
94 const TBool aUpdateMSK ) |
|
95 { |
|
96 IMUM_CONTEXT( CIMSSettingsBaseUI::BaseUiConstructL, 0, KLogUi ); |
|
97 |
|
98 // Add the complete menu tree to settings |
|
99 SettingsConstructL( |
|
100 aSoftkeys, aSettingResourceId, aUpdateMSK, |
|
101 iBaseUiFlags.GF( EMailFeatureIdSapPolicyManagement ) ); |
|
102 |
|
103 iNoteUi = CIMSSettingsNoteUi::NewL( iMailboxApi, *this ); |
|
104 |
|
105 iItemApprover = |
|
106 ( CIMSSettingsItemApprover::NewL( |
|
107 iMailboxApi, iMailboxApi.CommDbUtilsL(), |
|
108 *iNoteUi, *this ) ); |
|
109 |
|
110 // Define default data |
|
111 iDefaultData = RestoreDefaultSettingsDataL(); |
|
112 } |
|
113 |
|
114 /****************************************************************************** |
|
115 |
|
116 Event Handling |
|
117 |
|
118 ******************************************************************************/ |
|
119 |
|
120 // ---------------------------------------------------------------------------- |
|
121 // CIMSSettingsBaseUI::HandleSettingPageEventL() |
|
122 // ---------------------------------------------------------------------------- |
|
123 // |
|
124 void CIMSSettingsBaseUI::HandleSettingPageEventL( |
|
125 CAknSettingPage* /* aSettingPage */, |
|
126 TAknSettingPageEvent /* aEventType */ ) |
|
127 { |
|
128 IMUM_CONTEXT( CIMSSettingsBaseUI::HandleSettingPageEventL, 0, KLogUi ); |
|
129 |
|
130 } |
|
131 |
|
132 // ---------------------------------------------------------------------------- |
|
133 // CIMSSettingsBaseUI::EventHandlerL() |
|
134 // ---------------------------------------------------------------------------- |
|
135 // |
|
136 TBool CIMSSettingsBaseUI::EventHandlerL( const TInt aCommandId ) |
|
137 { |
|
138 IMUM_CONTEXT( CIMSSettingsBaseUI::EventHandlerL, 0, KLogUi ); |
|
139 IMUM_IN(); |
|
140 |
|
141 TBool ok = ETrue; |
|
142 |
|
143 switch ( aCommandId ) |
|
144 { |
|
145 // Show help dialog |
|
146 case EAknCmdHelp: |
|
147 iDialog.LaunchHelp(); |
|
148 break; |
|
149 |
|
150 // User has pressed ok key |
|
151 case EAknSoftkeyOpen: |
|
152 case EAknSoftkeySelect: |
|
153 case EAknSoftkeyOk: |
|
154 KeyPressOKButtonL( aCommandId ); |
|
155 break; |
|
156 |
|
157 case EAknSoftkeyOptions: |
|
158 SetFlag( EImumSettingOpenOptionsMenu ); |
|
159 break; |
|
160 |
|
161 case EAknSoftkeyShow: |
|
162 case EAknSoftkeyDone: |
|
163 case EAknSoftkeyBack: |
|
164 KeyPressSoftkey( aCommandId ); |
|
165 break; |
|
166 |
|
167 // Emergency exit |
|
168 case EAknSoftkeyCancel: |
|
169 case EAknCmdExit: |
|
170 SetFlag( EImumSettingShouldExit ); |
|
171 break; |
|
172 |
|
173 default: |
|
174 ok = EFalse; |
|
175 break; |
|
176 } |
|
177 |
|
178 IMUM_OUT(); |
|
179 return ok; |
|
180 } |
|
181 |
|
182 // ---------------------------------------------------------------------------- |
|
183 // CIMSSettingsBaseUI::DoQuitL() |
|
184 // ---------------------------------------------------------------------------- |
|
185 // |
|
186 void CIMSSettingsBaseUI::DoQuitL() |
|
187 { |
|
188 IMUM_CONTEXT( CIMSSettingsBaseUI::DoQuitL, 0, KLogUi ); |
|
189 |
|
190 ChangeFlag( EImumSettingQueryClose, !Flag( EImumSettingShouldExit ) ); |
|
191 iDialog.DoQuitL(); |
|
192 } |
|
193 |
|
194 // ---------------------------------------------------------------------------- |
|
195 // CIMSSettingsBaseUI::OfferKeyEventL |
|
196 // ---------------------------------------------------------------------------- |
|
197 // |
|
198 TKeyResponse CIMSSettingsBaseUI::OfferKeyEventL( |
|
199 const TKeyEvent& aKeyEvent, |
|
200 TEventCode aType ) |
|
201 { |
|
202 IMUM_CONTEXT( CIMSSettingsBaseUI::OfferKeyEventL, 0, KLogUi ); |
|
203 IMUM_IN(); |
|
204 |
|
205 TBool ok = EFalse; |
|
206 |
|
207 // Handle the key events for wizard |
|
208 if ( aType == EEventKey ) |
|
209 { |
|
210 switch ( aKeyEvent.iCode ) |
|
211 { |
|
212 // Ignore left and right keys |
|
213 case EKeyLeftArrow: |
|
214 case EKeyRightArrow: |
|
215 ok = ETrue; |
|
216 break; |
|
217 |
|
218 // Selection key |
|
219 case EKeyOK: |
|
220 case EKeyEnter: |
|
221 ok = EventHandlerL( EAknSoftkeyOk ); |
|
222 break; |
|
223 |
|
224 // Red button |
|
225 case EKeyPhoneEnd: |
|
226 ok = EventHandlerL( EAknSoftkeyCancel ); |
|
227 break; |
|
228 |
|
229 default: |
|
230 break; |
|
231 } |
|
232 } |
|
233 |
|
234 TKeyResponse ret = ok ? EKeyWasConsumed : EKeyWasNotConsumed; |
|
235 |
|
236 if ( ret == EKeyWasNotConsumed ) |
|
237 { |
|
238 ret = CMuiuDynamicSettingsDialog::OfferKeyEventL( aKeyEvent, aType ); |
|
239 } |
|
240 |
|
241 IMUM_OUT(); |
|
242 return ret; |
|
243 } |
|
244 |
|
245 |
|
246 // ---------------------------------------------------------------------------- |
|
247 // CIMSSettingsBaseUI::ProcessCommandL |
|
248 // ---------------------------------------------------------------------------- |
|
249 // |
|
250 void CIMSSettingsBaseUI::ProcessCommandL( TInt aCommandId ) |
|
251 { |
|
252 IMUM_CONTEXT( CIMSSettingsBaseUI::ProcessCommandL, 0, KLogUi ); |
|
253 |
|
254 EventHandlerL( aCommandId ); |
|
255 // There are no key events if touch UI is used. Therefore requested commands |
|
256 // are executed here. |
|
257 iDialog.ExecFlags(); |
|
258 } |
|
259 |
|
260 /****************************************************************************** |
|
261 |
|
262 Private tools |
|
263 |
|
264 ******************************************************************************/ |
|
265 |
|
266 // ---------------------------------------------------------------------------- |
|
267 // CIMSSettingsBaseUI::RestoreDefaultSettingsDataL() |
|
268 // ---------------------------------------------------------------------------- |
|
269 // |
|
270 CImumMboxDefaultData* CIMSSettingsBaseUI::RestoreDefaultSettingsDataL() |
|
271 { |
|
272 return CImumMboxDefaultData::NewL( iMailboxApi ); |
|
273 } |
|
274 |
|
275 /****************************************************************************** |
|
276 |
|
277 Public tools |
|
278 |
|
279 ******************************************************************************/ |
|
280 |
|
281 // ---------------------------------------------------------------------------- |
|
282 // CIMSSettingsBaseUI::HidePermanently() |
|
283 // ---------------------------------------------------------------------------- |
|
284 // |
|
285 void CIMSSettingsBaseUI::HidePermanently( |
|
286 const TUid& aId, |
|
287 const TBool aNewState ) |
|
288 { |
|
289 IMUM_CONTEXT( CIMSSettingsBaseUI::HidePermanently, 0, KLogUi ); |
|
290 |
|
291 // Set next item |
|
292 HidePermanently( *GetItem( aId ), aNewState ); |
|
293 } |
|
294 |
|
295 // ---------------------------------------------------------------------------- |
|
296 // CIMSSettingsBaseUI::HidePermanently() |
|
297 // ---------------------------------------------------------------------------- |
|
298 // |
|
299 void CIMSSettingsBaseUI::HidePermanently( |
|
300 CMuiuSettingBase& aBaseItem, |
|
301 const TBool aNewState ) |
|
302 { |
|
303 IMUM_CONTEXT( CIMSSettingsBaseUI::HidePermanently, 0, KLogUi ); |
|
304 |
|
305 // Set next item |
|
306 aBaseItem.iItemFlags.ChangeFlag( |
|
307 EMuiuDynItemPermanentlyHidden, aNewState ); |
|
308 Refresh(); |
|
309 } |
|
310 |
|
311 // ---------------------------------------------------------------------------- |
|
312 // CIMSSettingsBaseUI::CreateCustomItemToArrayLC() |
|
313 // ---------------------------------------------------------------------------- |
|
314 // |
|
315 CMuiuSettingBase* CIMSSettingsBaseUI::CreateCustomItemToArrayLC( |
|
316 const TUid& aId ) |
|
317 { |
|
318 IMUM_CONTEXT( CIMSSettingsBaseUI::CreateCustomItemToArrayLC, 0, KLogUi ); |
|
319 |
|
320 CMuiuSettingBase* base = NULL; |
|
321 |
|
322 switch ( aId.iUid ) |
|
323 { |
|
324 // Access point editors require special items |
|
325 case EIMAWIap: |
|
326 case EIMASIncomingIap: |
|
327 case EIMASOutgoingIap: |
|
328 base = CIMSSettingsAccessPointItem::NewLC(); |
|
329 break; |
|
330 |
|
331 case EIMASUserFolderSubscription: |
|
332 base = CMuiuSettingsLinkExtended::NewLC(); |
|
333 break; |
|
334 |
|
335 default: |
|
336 break; |
|
337 } |
|
338 |
|
339 return base; |
|
340 } |
|
341 |
|
342 |
|
343 // ---------------------------------------------------------------------------- |
|
344 // CIMSSettingsBaseUI::SetItemIapItem() |
|
345 // ---------------------------------------------------------------------------- |
|
346 // |
|
347 void CIMSSettingsBaseUI::SetItemIapItemL( CIMSSettingsAccessPointItem& aIapItem ) |
|
348 { |
|
349 IMUM_CONTEXT( CIMSSettingsBaseUI::SetItemIapItemL, 0, KLogUi ); |
|
350 |
|
351 CMsvCommDbUtilities& commdbUtils= iMailboxApi.CommDbUtilsL(); |
|
352 commdbUtils.GetWizardRadioButton( aIapItem ); |
|
353 } |
|
354 |
|
355 // ---------------------------------------------------------------------------- |
|
356 // CIMSSettingsBaseUI::Flag() |
|
357 // ---------------------------------------------------------------------------- |
|
358 // |
|
359 TBool CIMSSettingsBaseUI::Flag( TUint aFlag ) |
|
360 { |
|
361 return iBaseUiFlags.Flag( aFlag ); |
|
362 } |
|
363 |
|
364 // ---------------------------------------------------------------------------- |
|
365 // CIMSSettingsBaseUI::SetFlag() |
|
366 // ---------------------------------------------------------------------------- |
|
367 // |
|
368 void CIMSSettingsBaseUI::SetFlag( TUint aFlag ) |
|
369 { |
|
370 IMUM_CONTEXT( CIMSSettingsBaseUI::SetFlag, 0, KLogUi ); |
|
371 |
|
372 iBaseUiFlags.SetFlag( aFlag ); |
|
373 } |
|
374 |
|
375 // ---------------------------------------------------------------------------- |
|
376 // CIMSSettingsBaseUI::ClearFlag() |
|
377 // ---------------------------------------------------------------------------- |
|
378 // |
|
379 void CIMSSettingsBaseUI::ClearFlag( TUint aFlag ) |
|
380 { |
|
381 IMUM_CONTEXT( CIMSSettingsBaseUI::ClearFlag, 0, KLogUi ); |
|
382 |
|
383 iBaseUiFlags.ClearFlag( aFlag ); |
|
384 } |
|
385 |
|
386 // ---------------------------------------------------------------------------- |
|
387 // CIMSSettingsBaseUI::ChangeFlag() |
|
388 // ---------------------------------------------------------------------------- |
|
389 // |
|
390 void CIMSSettingsBaseUI::ChangeFlag( |
|
391 TUint aFlag, |
|
392 TBool aNewState ) |
|
393 { |
|
394 IMUM_CONTEXT( CIMSSettingsBaseUI::ChangeFlag, 0, KLogUi ); |
|
395 |
|
396 iBaseUiFlags.ChangeFlag( aFlag, aNewState ); |
|
397 } |
|
398 |
|
399 // ---------------------------------------------------------------------------- |
|
400 // CIMSSettingsBaseUI::Flags() |
|
401 // ---------------------------------------------------------------------------- |
|
402 // |
|
403 const CMuiuFlags& CIMSSettingsBaseUI::Flags() |
|
404 { |
|
405 IMUM_CONTEXT( CIMSSettingsBaseUI::Flags, 0, KLogUi ); |
|
406 |
|
407 return iBaseUiFlags; |
|
408 } |
|
409 |
|
410 // ---------------------------------------------------------------------------- |
|
411 // CIMSSettingsBaseUI::FindItem() |
|
412 // ---------------------------------------------------------------------------- |
|
413 // |
|
414 TInt CIMSSettingsBaseUI::FindItem( |
|
415 CIMSSettingsAccessPointItem*& aItem, |
|
416 const TUid& aId ) |
|
417 { |
|
418 IMUM_CONTEXT( CIMSSettingsBaseUI::FindItem, 0, KLogUi ); |
|
419 |
|
420 CMuiuSettingBase* base = GetUninitializedItem( aId ); |
|
421 |
|
422 if ( base != NULL ) |
|
423 { |
|
424 aItem = static_cast<CIMSSettingsAccessPointItem*>( base ); |
|
425 return KErrNone; |
|
426 } |
|
427 |
|
428 return KErrNotFound; |
|
429 } |
|
430 |
|
431 |
|
432 // ---------------------------------------------------------------------------- |
|
433 // CIMSSettingsBaseUI::FindItem() |
|
434 // ---------------------------------------------------------------------------- |
|
435 // |
|
436 TInt CIMSSettingsBaseUI::FindItem( |
|
437 CMuiuSettingsLinkExtended*& aItem, |
|
438 const TUid& aId ) |
|
439 { |
|
440 IMUM_CONTEXT( CIMSSettingsBaseUI::FindItem, 0, KLogUi ); |
|
441 |
|
442 CMuiuSettingBase* base = GetUninitializedItem( aId ); |
|
443 |
|
444 if ( base != NULL ) |
|
445 { |
|
446 aItem = static_cast<CMuiuSettingsLinkExtended*>( base ); |
|
447 return KErrNone; |
|
448 } |
|
449 |
|
450 return KErrNotFound; |
|
451 } |
|
452 |
|
453 // ---------------------------------------------------------------------------- |
|
454 // CIMSSettingsBaseUI::GetUninitializedItem() |
|
455 // ---------------------------------------------------------------------------- |
|
456 // |
|
457 CMuiuSettingBase* CIMSSettingsBaseUI::GetUninitializedItem( |
|
458 const TUid& aId ) |
|
459 { |
|
460 IMUM_CONTEXT( CIMSSettingsBaseUI::GetUninitializedItem, 0, KLogUi ); |
|
461 |
|
462 return GetItem( aId ); |
|
463 } |
|
464 |
|
465 // ---------------------------------------------------------------------------- |
|
466 // CIMSSettingsBaseUI::BackupItemCreateUndefinedL() |
|
467 // ---------------------------------------------------------------------------- |
|
468 // |
|
469 CMuiuSettingBase* CIMSSettingsBaseUI::CreateItemForBackupL( |
|
470 CMuiuSettingBase& aBaseItem ) |
|
471 { |
|
472 IMUM_CONTEXT( CIMSSettingsBaseUI::CreateItemForBackupL, 0, KLogUi ); |
|
473 |
|
474 CIMSSettingsAccessPointItem* iapBackup = NULL; |
|
475 |
|
476 if ( aBaseItem.iItemId.iUid == EIMAWIap ) |
|
477 { |
|
478 iapBackup = |
|
479 CIMSSettingsAccessPointItem::NewL(); |
|
480 |
|
481 CIMSSettingsAccessPointItem* iapItem = |
|
482 static_cast<CIMSSettingsAccessPointItem*>( &aBaseItem ); |
|
483 |
|
484 *iapBackup = *iapItem; |
|
485 } |
|
486 |
|
487 return iapBackup; |
|
488 } |
|
489 |
|
490 // ---------------------------------------------------------------------------- |
|
491 // CIMSSettingsBaseUI::UpdateAccessPointItem() |
|
492 // ---------------------------------------------------------------------------- |
|
493 // |
|
494 void CIMSSettingsBaseUI::UpdateAccessPointItem( |
|
495 CMuiuSettingBase& aBaseItem ) |
|
496 { |
|
497 IMUM_CONTEXT( CIMSSettingsBaseUI::UpdateAccessPointItem, 0, KLogUi ); |
|
498 |
|
499 // Preprocessing for item is only need for iap accesspoint setting |
|
500 CIMSSettingsAccessPointItem* iapItem = |
|
501 static_cast<CIMSSettingsAccessPointItem*>( &aBaseItem ); |
|
502 |
|
503 // Copy the text to the item, ignore any errors on copy |
|
504 TRAP_IGNORE( |
|
505 iMailboxApi.CommDbUtilsL().SettingsItemIapStringL( *iapItem ) ); |
|
506 } |
|
507 |
|
508 // ---------------------------------------------------------------------------- |
|
509 // CIMSSettingsBaseUI::SetReadOnly() |
|
510 // ---------------------------------------------------------------------------- |
|
511 // |
|
512 void CIMSSettingsBaseUI::SetReadOnly( |
|
513 const TUid& aId, |
|
514 const TBool aNewState ) |
|
515 { |
|
516 IMUM_CONTEXT( CIMSSettingsBaseUI::SetReadOnly, 0, KLogUi ); |
|
517 |
|
518 GetItem( aId )->iItemFlags.ChangeFlag( EMuiuDynItemReadOnly, aNewState ); |
|
519 } |
|
520 |
|
521 |
|
522 // ---------------------------------------------------------------------------- |
|
523 // CIMSSettingsBaseUI::GetHelpContext() |
|
524 // ---------------------------------------------------------------------------- |
|
525 // |
|
526 void CIMSSettingsBaseUI::GetHelpContext( |
|
527 TCoeHelpContext& /* aContext */ ) const |
|
528 { |
|
529 IMUM_CONTEXT( CIMSSettingsBaseUI::GetHelpContext, 0, KLogUi ); |
|
530 |
|
531 // Empty |
|
532 } |
|
533 |
|
534 // --------------------------------------------------------------------------- |
|
535 // CIMSSettingsBaseUI::CurrentMailboxId() |
|
536 // --------------------------------------------------------------------------- |
|
537 // |
|
538 TMsvId CIMSSettingsBaseUI::CurrentMailboxId() |
|
539 { |
|
540 IMUM_CONTEXT( CIMSSettingsBaseUI::CurrentMailboxId, 0, KLogUi ); |
|
541 |
|
542 return KErrNotFound; |
|
543 } |
|
544 |
|
545 |
|
546 // End of File |