133 |
136 |
134 // Set list as initial focused control |
137 // Set list as initial focused control |
135 iThisViewActive = EFalse; |
138 iThisViewActive = EFalse; |
136 iFirstStartCompleted = EFalse; |
139 iFirstStartCompleted = EFalse; |
137 } |
140 } |
138 |
141 |
139 // CFSEmailUiSearchListVisualiser::DoFirstStartL() |
142 // CFSEmailUiSearchListVisualiser::DoFirstStartL() |
140 // Purpose of this function is to do first start only when search list is |
143 // Purpose of this function is to do first start only when search list is |
141 // really needed to be shown. Implemented to make app startuo faster. |
144 // really needed to be shown. Implemented to make app startuo faster. |
142 void CFSEmailUiSearchListVisualiser::DoFirstStartL() |
145 void CFSEmailUiSearchListVisualiser::DoFirstStartL() |
143 { |
146 { |
144 FUNC_LOG; |
147 FUNC_LOG; |
145 TRect screenRect; |
148 TRect screenRect; |
146 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
149 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
147 |
150 |
148 // Create control and anchor layout |
151 // Create control and anchor layout |
149 iSearchListControl = CFreestyleEmailUiSearchListControl::NewL( *iEnv, this ); |
152 iSearchListControl = CFreestyleEmailUiSearchListControl::NewL( *iEnv, this ); |
150 iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iSearchListControl ); |
153 iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iSearchListControl ); |
151 iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled); |
154 iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled); |
152 SetSearchListLayoutAnchors(); |
155 SetSearchListLayoutAnchors(); |
153 |
156 |
154 // Create top bar layout |
157 // Create top bar layout |
155 iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
158 iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
156 iBarBgVisual = CAlfImageVisual::AddNewL( *iSearchListControl, iSearchTopBarLayout ); |
159 iBarBgVisual = CAlfImageVisual::AddNewL( *iSearchListControl, iSearchTopBarLayout ); |
157 /*<cmail> paltform layout changes to cmail |
160 /*<cmail> paltform layout changes to cmail |
158 TAlfTimedValue barBgTextureOpacity; |
161 TAlfTimedValue barBgTextureOpacity; |
159 barBgTextureOpacity.SetValueNow( 1 ); |
162 barBgTextureOpacity.SetValueNow( 1 ); |
160 iBarBgVisual->SetOpacity( barBgTextureOpacity ); |
163 iBarBgVisual->SetOpacity( barBgTextureOpacity ); |
165 |
168 |
166 /*<cmail> magnifier image is not in cmail |
169 /*<cmail> magnifier image is not in cmail |
167 // Add bar image component |
170 // Add bar image component |
168 iBarFindImage = CAlfImageVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
171 iBarFindImage = CAlfImageVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
169 TAlfTimedValue barFindImageOpacity; |
172 TAlfTimedValue barFindImageOpacity; |
170 barFindImageOpacity.SetValueNow( 1 ); |
173 barFindImageOpacity.SetValueNow( 1 ); |
171 iBarFindImage->SetOpacity( barFindImageOpacity ); |
174 iBarFindImage->SetOpacity( barFindImageOpacity ); |
172 CAlfTexture* barFindTexture = &iAppUi.FsTextureManager()->TextureByIndex( ESearchLookingGlassIcon ); |
175 CAlfTexture* barFindTexture = &iAppUi.FsTextureManager()->TextureByIndex( ESearchLookingGlassIcon ); |
173 barFindTexture->Size().SetSize( 15, 15 ); |
176 barFindTexture->Size().SetSize( 15, 15 ); |
174 iBarFindImage->SetImage( TAlfImage( *barFindTexture ) ); |
177 iBarFindImage->SetImage( TAlfImage( *barFindTexture ) ); |
175 */ //</cmail> |
178 */ //</cmail> |
176 |
179 |
177 // <cmail> |
180 // <cmail> |
178 // Add bar text component |
181 // Add bar text component |
179 iBarTextVisual = CAlfTextVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
182 iBarTextVisual = CAlfTextVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
180 iBarTextVisual->EnableShadow(EFalse); |
183 iBarTextVisual->EnableShadow(EFalse); |
181 iBarTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); |
184 iBarTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); |
182 // </cmail> |
185 // </cmail> |
183 |
186 |
184 /*<cmail> no initial text or opacity required in cmail |
187 /*<cmail> no initial text or opacity required in cmail |
185 HBufC* initialSearchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH ); |
188 HBufC* initialSearchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH ); |
186 iBarTextVisual->SetTextL( *initialSearchText ); |
189 iBarTextVisual->SetTextL( *initialSearchText ); |
187 CleanupStack::PopAndDestroy( initialSearchText ); |
190 CleanupStack::PopAndDestroy( initialSearchText ); |
188 TAlfTimedValue barTextVisualOpacity; |
191 TAlfTimedValue barTextVisualOpacity; |
189 barTextVisualOpacity.SetValueNow( 1 ); |
192 barTextVisualOpacity.SetValueNow( 1 ); |
190 iBarTextVisual->SetOpacity( barTextVisualOpacity ); |
193 iBarTextVisual->SetOpacity( barTextVisualOpacity ); |
191 |
194 |
192 CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold ); |
195 CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold ); |
193 iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail> |
196 iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail> |
194 if ( !AknLayoutUtils::LayoutMirrored() ) |
197 if ( !AknLayoutUtils::LayoutMirrored() ) |
195 { |
198 { |
196 iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter); |
199 iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter); |
197 } |
200 } |
198 else |
201 else |
199 { |
202 { |
200 iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter); |
203 iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter); |
201 } |
204 } |
202 |
205 |
203 // Create model |
206 // Create model |
204 iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue ); |
207 iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue ); |
205 |
208 |
206 // Create list and append to control group and anchor layout |
209 // Create list and append to control group and anchor layout |
207 iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
210 iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout ); |
208 iSearchListLayout->SetSize( TSize( screenRect.Width(), screenRect.Height()- |
211 iSearchListLayout->SetSize( TSize( screenRect.Width(), screenRect.Height()- |
209 iAppUi.LayoutHandler()->ControlBarHeight() ) ); |
212 iAppUi.LayoutHandler()->ControlBarHeight() ) ); |
210 iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout); |
213 iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout); |
211 iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv ); |
214 iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv ); |
212 iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways ); |
215 iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways ); |
213 |
216 |
214 // Set mark type and icon |
217 // Set mark type and icon |
215 iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable ); |
218 iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable ); |
216 iSearchTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) ); |
219 iSearchTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) ); |
217 iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) ); |
220 iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) ); |
218 iSearchTreeListVisualizer->SetFlipState( iKeyboardFlipOpen ); |
221 iSearchTreeListVisualizer->SetFlipState( iKeyboardFlipOpen ); |
219 iSearchTreeListVisualizer->SetFocusVisibility( iFocusVisible ); |
222 iSearchTreeListVisualizer->SetFocusVisibility( iFocusVisible ); |
220 iSearchList->SetIndentationL(0); |
223 iSearchList->SetIndentationL(0); |
221 |
224 |
222 //<cmail> events are now offered to controls in different order |
225 //<cmail> events are now offered to controls in different order |
223 ControlGroup().AppendL( iSearchListControl ); |
226 ControlGroup().AppendL( iSearchListControl ); |
224 ControlGroup().AppendL( iSearchList->TreeControl() ); |
227 ControlGroup().AppendL( iSearchList->TreeControl() ); |
225 //</cmail> |
228 //</cmail> |
226 //<cmail> touch |
229 //<cmail> touch |
227 iSearchList->AddObserverL(*this); |
230 iSearchList->AddObserverL(*this); |
228 //</cmail> |
231 //</cmail> |
229 iSearchOngoing = EFalse; |
232 iSearchOngoing = EFalse; |
230 |
233 |
231 // Set mail list background |
234 |
|
235 // Initializing the default stylus long tap popup menu |
|
236 if( !iStylusPopUpMenu ) |
|
237 { |
|
238 TPoint point( 0, 0 ); |
|
239 iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point ); |
|
240 TResourceReader reader; |
|
241 iCoeEnv->CreateResourceReaderLC( reader, |
|
242 R_STYLUS_POPUP_MENU_SEARCH_LIST_VIEW ); |
|
243 iStylusPopUpMenu->ConstructFromResourceL( reader ); |
|
244 CleanupStack::PopAndDestroy(); |
|
245 } |
|
246 |
|
247 // Set mail list background |
232 //<cmail> S60 skin support |
248 //<cmail> S60 skin support |
233 //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) ); |
249 //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) ); |
234 //</cmail> |
250 //</cmail> |
235 |
251 |
236 iSearchTreeListVisualizer->SetItemExpansionDelay( KItemExpansionDelay ); |
252 iSearchTreeListVisualizer->SetItemExpansionDelay( KItemExpansionDelay ); |
237 iSearchList->SetScrollTime( KListScrollingDelay, 0.5 ); |
253 iSearchList->SetScrollTime( KListScrollingDelay, 0.5 ); |
238 |
254 |
239 // Set empty text |
255 // Set empty text |
240 HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT ); |
256 HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT ); |
241 iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText ); |
257 iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText ); |
242 CleanupStack::PopAndDestroy( emptyText ); |
258 CleanupStack::PopAndDestroy( emptyText ); |
243 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
259 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
244 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
260 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
245 |
261 |
246 // Create startup timer |
262 // Create startup timer |
247 iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this ); |
263 iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this ); |
248 |
264 |
249 // Set page up and page down keys |
265 // Set page up and page down keys |
250 iSearchTreeListVisualizer->AddCustomPageUpKey( EStdKeyPageUp ); |
266 iSearchTreeListVisualizer->AddCustomPageUpKey( EStdKeyPageUp ); |
251 iSearchTreeListVisualizer->AddCustomPageDownKey( EStdKeyPageDown ); |
267 iSearchTreeListVisualizer->AddCustomPageDownKey( EStdKeyPageDown ); |
252 |
268 |
253 CAlfBrush* selectorBrush = iAppUi.FsTextureManager()->ListSelectorBrushL(); |
269 CAlfBrush* selectorBrush = iAppUi.FsTextureManager()->ListSelectorBrushL(); |
254 iSearchTreeListVisualizer->SetSelectorPropertiesL( selectorBrush, 1.0, CFsTreeVisualizerBase::EFsSelectorMoveSmoothly ); |
270 iSearchTreeListVisualizer->SetSelectorPropertiesL( selectorBrush, 1.0, CFsTreeVisualizerBase::EFsSelectorMoveSmoothly ); |
255 |
271 |
256 iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList ); |
272 iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList ); |
257 |
273 |
258 iFirstStartCompleted = ETrue; |
274 iFirstStartCompleted = ETrue; |
259 } |
275 } |
260 |
276 |
261 void CFSEmailUiSearchListVisualiser::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ ) |
277 void CFSEmailUiSearchListVisualiser::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ ) |
262 { |
278 { |
263 FUNC_LOG; |
279 FUNC_LOG; |
264 LaunchSearchDialogL(); |
280 LaunchSearchDialogL(); |
265 } |
281 } |
266 |
282 |
267 CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, |
283 CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, |
268 CAlfEnv& aEnv, |
284 CAlfEnv& aEnv, |
269 CAlfControlGroup& aSearchListControlGroup ) |
285 CAlfControlGroup& aSearchListControlGroup ) |
270 :CFsEmailUiViewBase( aSearchListControlGroup, *aAppUi ), |
286 :CFsEmailUiViewBase( aSearchListControlGroup, *aAppUi ), |
271 iEnv( &aEnv ), |
287 iEnv( &aEnv ), |
272 iLatestSearchText(0), |
288 iLatestSearchText( 0 ), |
273 iListAddedToControlGroup(EFalse), //<cmail> |
289 iListAddedToControlGroup( EFalse ), |
274 iPreparedForExit(EFalse) //<cmail> |
290 iConsumeStdKeyYes_KeyUp( EFalse ), // for consuming the call event if call for contact processed |
275 { |
291 iRequiredSearchPriority( KStandardSearchPriority ), // for search email priority decreasing |
276 FUNC_LOG; |
292 iPreparedForExit( EFalse ) |
277 } |
293 { |
278 |
294 FUNC_LOG; |
|
295 } |
|
296 |
279 CFSEmailUiSearchListVisualiser::~CFSEmailUiSearchListVisualiser() |
297 CFSEmailUiSearchListVisualiser::~CFSEmailUiSearchListVisualiser() |
280 { |
298 { |
281 FUNC_LOG; |
299 FUNC_LOG; |
282 if ( iStartupCallbackTimer ) |
300 if ( iStartupCallbackTimer ) |
283 { |
301 { |
284 iStartupCallbackTimer->Cancel(); |
302 iStartupCallbackTimer->Cancel(); |
285 delete iStartupCallbackTimer; |
303 delete iStartupCallbackTimer; |
286 } |
304 } |
287 iSearchStrings.ResetAndDestroy(); |
305 iSearchStrings.ResetAndDestroy(); |
288 iSearchListItemArray.Reset(); |
306 iSearchListItemArray.Reset(); |
289 delete iModel; |
307 delete iModel; |
290 delete iLatestSearchText; |
308 delete iLatestSearchText; |
291 delete iSearchList; |
309 delete iSearchList; |
292 |
310 delete iStylusPopUpMenu; |
293 } |
311 } |
294 |
312 |
295 void CFSEmailUiSearchListVisualiser::PrepareForExit() |
313 void CFSEmailUiSearchListVisualiser::PrepareForExit() |
296 { |
314 { |
297 FUNC_LOG; |
315 FUNC_LOG; |
373 // Store previous view ID |
392 // Store previous view ID |
374 iPreviousViewUid = aPrevViewId.iViewUid; |
393 iPreviousViewUid = aPrevViewId.iViewUid; |
375 TSearchListActivationData subView; |
394 TSearchListActivationData subView; |
376 TPckgBuf<TSearchListActivationData> viewData( subView ); |
395 TPckgBuf<TSearchListActivationData> viewData( subView ); |
377 viewData.Copy( aCustomMessage ); |
396 viewData.Copy( aCustomMessage ); |
378 subView = viewData(); |
397 subView = viewData(); |
379 |
398 |
380 // Update settings and set list mode according to settings |
399 // Update settings and set list mode according to settings |
381 UpdateMailListSettingsL(); |
400 UpdateMailListSettingsL(); |
382 |
401 |
383 if ( iMailBox ) |
402 if ( iMailBox ) |
384 { |
403 { |
385 delete iMailBox; |
404 delete iMailBox; |
386 iMailBox = NULL; |
405 iMailBox = NULL; |
387 } |
406 } |
388 iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId ); |
407 iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId ); |
389 // If mailbox data is not, try to get default MCE account |
408 // If mailbox data is not, try to get default MCE account |
390 if ( !iMailBox ) |
409 if ( !iMailBox ) |
391 { |
410 { |
392 CMsvSession* msvSession = iAppUi.GetMsvSession(); |
411 CMsvSession* msvSession = iAppUi.GetMsvSession(); |
393 CFSMailClient* client = iAppUi.GetMailClient(); |
412 CFSMailClient* client = iAppUi.GetMailClient(); |
394 iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession ); |
413 iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession ); |
395 } |
414 } |
396 |
415 |
397 if ( iMailBox ) |
416 if ( iMailBox ) |
398 { |
417 { |
399 iThisViewActive = ETrue; |
418 iThisViewActive = ETrue; |
400 //<cmail> visible/unvisible is not controlled by opacity in cmail |
419 //<cmail> visible/unvisible is not controlled by opacity in cmail |
401 //TAlfTimedValue opacity; |
420 //TAlfTimedValue opacity; |
402 //opacity.SetValueNow( 1 ); |
421 //opacity.SetValueNow( 1 ); |
403 //iScreenAnchorLayout->SetOpacity( opacity ); |
422 //iScreenAnchorLayout->SetOpacity( opacity ); |
404 //</cmail> |
423 //</cmail> |
405 iSearchList->ShowListL(); |
424 iSearchList->ShowListL(); |
406 iSearchList->SetFocusedL(ETrue); |
425 iSearchList->SetFocusedL(ETrue); |
407 // Set empty text color |
426 // Set empty text color |
408 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
427 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
409 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
428 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
410 |
429 |
411 // Launch search dialog automatically when activated |
430 // Launch search dialog automatically when activated |
412 if ( &aCustomMessage && aCustomMessageId == KStartNewSearch ) |
431 if ( &aCustomMessage && aCustomMessageId == KStartNewSearch ) |
413 { |
432 { |
414 // <cmail> list reseting moved into the begining of the function |
433 // <cmail> list reseting moved into the begining of the function |
415 // requeset async launching of the search dialog because DoActivateL must |
434 // requeset async launching of the search dialog because DoActivateL must |
416 // not be blocked |
435 // not be blocked |
417 iStartupCallbackTimer->Cancel(); // just in case |
436 iStartupCallbackTimer->Cancel(); // just in case |
418 iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() ); |
437 iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() ); |
419 } |
438 } |
420 else if ( iModel && iModel->Count() ) |
439 else if ( iModel && iModel->Count() ) |
421 { |
440 { |
422 // Need to make sure that return to this view works even if following function leaves. |
441 // Need to make sure that return to this view works even if following function leaves. |
423 TRAP_IGNORE( CheckAndUpdateFocusedMessageL() ); |
442 TRAP_IGNORE( CheckAndUpdateFocusedMessageL() ); |
424 } |
443 } |
425 } |
444 } |
426 CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel ); |
445 CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel ); |
427 // Set msk always empty when view is activated. |
446 // Set msk always empty when view is activated. |
428 SetMskL(); |
447 SetMskL(); |
429 // <cmail> |
448 // <cmail> |
430 ReScaleUiL(); // In case that Landscape/Portrait has changed. |
449 ReScaleUiL(); // In case that Landscape/Portrait has changed. |
431 // </cmail> |
450 // </cmail> |
469 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
488 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
470 { |
489 { |
471 if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) ) |
490 if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) ) |
472 { |
491 { |
473 // remove help support in pf5250 |
492 // remove help support in pf5250 |
474 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
493 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
475 } |
494 } |
476 |
495 |
477 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
496 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
478 if ( item && item->ModelItemType() == ETypeMailItem && |
497 if ( item && item->ModelItemType() == ETypeMailItem && |
479 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
498 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
480 { |
499 { |
481 // Highlighted mail is calendar msg |
500 // Highlighted mail is calendar msg |
482 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue); |
501 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue); |
483 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse); |
502 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse); |
484 } |
503 } |
485 else |
504 else |
486 { |
505 { |
487 // Highlighted mail is mail msg |
506 // Highlighted mail is mail msg |
488 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse); |
507 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse); |
489 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue); |
508 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue); |
490 } |
509 } |
491 aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse); |
510 aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse); |
492 } |
511 } |
493 } |
512 } |
494 else |
513 else |
495 { |
514 { |
496 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
515 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
497 { |
516 { |
498 |
517 |
499 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
518 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
500 { |
519 { |
501 // remove help support in pf5250 |
520 // remove help support in pf5250 |
502 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
521 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
503 } |
522 } |
504 |
523 |
505 aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue); |
524 aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue); |
506 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue); |
525 aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue); |
507 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue); |
526 aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue); |
508 aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue); |
527 aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue); |
509 aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue); |
528 aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue); |
510 } |
529 } |
511 } |
530 } |
512 |
531 |
513 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS || |
532 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS || |
514 aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS) |
533 aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS) |
515 { |
534 { |
516 if ( iSearchList->Count() ) |
535 if ( iSearchList->Count() ) |
517 { |
536 { |
518 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
537 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
519 if ( item && item->ModelItemType() == ETypeMailItem ) |
538 if ( item && item->ModelItemType() == ETypeMailItem ) |
520 { |
539 { |
521 CFSMailMessage* messagePtr = &item->MessagePtr(); |
540 CFSMailMessage* messagePtr = &item->MessagePtr(); |
522 if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_Read ) ) |
541 if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_Read ) ) |
523 { |
542 { |
524 aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue); |
543 aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue); |
525 } |
544 } |
526 else |
545 else |
527 { |
546 { |
528 aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue); |
547 aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue); |
529 } |
548 } |
530 } |
549 } |
531 } |
550 } |
532 } |
551 } |
533 |
552 |
534 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS) |
553 if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS) |
535 { |
554 { |
536 if ( iSearchList->Count() ) |
555 if ( iSearchList->Count() ) |
537 { |
556 { |
538 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
557 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
539 if ( item && item->ModelItemType() == ETypeMailItem ) |
558 if ( item && item->ModelItemType() == ETypeMailItem ) |
540 { |
559 { |
541 CFSMailMessage* messagePtr = &item->MessagePtr(); |
560 CFSMailMessage* messagePtr = &item->MessagePtr(); |
542 if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
561 if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
543 { |
562 { |
544 TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown ); |
563 TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown ); |
545 if ( iAppUi.MrViewerInstanceL() ) |
564 if ( iAppUi.MrViewerInstanceL() ) |
546 { |
565 { |
547 // Search must be stopped, otherwise resolve will lead to crash |
566 // Search must be stopped, otherwise resolve will lead to crash |
548 if ( iSearchOngoing ) |
567 if ( iSearchOngoing ) |
632 { |
651 { |
633 if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetBCCRecipients()[0]->GetEmailAddress()) ) |
652 if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetBCCRecipients()[0]->GetEmailAddress()) ) |
634 { |
653 { |
635 numRecipients++; |
654 numRecipients++; |
636 } |
655 } |
637 } |
656 } |
638 } |
657 } |
639 |
658 |
640 } |
659 } |
641 if ( numRecipients > 1 ) |
660 if ( numRecipients > 1 ) |
642 { |
661 { |
643 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, EFalse ); |
662 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, EFalse ); |
644 } |
663 } |
645 else if ( aMenuPane->MenuItemExists( EFsEmailUiCmdActionsReplyAll, menuIndex ) ) |
664 else if ( aMenuPane->MenuItemExists( EFsEmailUiCmdActionsReplyAll, menuIndex ) ) |
646 { |
665 { |
647 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
666 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue ); |
648 } |
667 } |
649 } |
668 } |
650 |
669 |
651 if ( !iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
670 if ( !iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
652 { |
671 { |
653 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
672 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
654 { |
673 { |
655 // remove help support in pf5250 |
674 // remove help support in pf5250 |
656 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
675 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
657 } |
676 } |
658 |
677 |
659 aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue); |
678 aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue); |
660 if ( iSearchCount == 0 ) |
679 if ( iSearchCount == 0 ) |
661 { |
680 { |
662 aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue); |
681 aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue); |
663 } |
682 } |
664 else |
683 else |
665 { |
684 { |
666 aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue); |
685 aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue); |
667 } |
686 } |
668 } |
687 } |
669 |
688 |
670 if ( iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
689 if ( iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE ) |
671 { |
690 { |
672 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
691 if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration )) |
673 { |
692 { |
674 // remove help support in pf5250 |
693 // remove help support in pf5250 |
675 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
694 aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue); |
676 } |
695 } |
677 |
696 |
678 aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue); |
697 aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue); |
679 aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue); |
698 aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue); |
680 } |
699 } |
681 |
700 |
682 iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextSearchResults ); |
701 iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextSearchResults ); |
683 } |
702 } |
684 |
703 |
685 void CFSEmailUiSearchListVisualiser::RefreshL() |
704 void CFSEmailUiSearchListVisualiser::RefreshL() |
686 { |
705 { |
688 if ( iFirstStartCompleted ) //Safety |
707 if ( iFirstStartCompleted ) //Safety |
689 { |
708 { |
690 if ( iModel && iModel->Count() ) |
709 if ( iModel && iModel->Count() ) |
691 { |
710 { |
692 // Check if zoom level has been switched and refresh items if so |
711 // Check if zoom level has been switched and refresh items if so |
693 TAknUiZoom prevZoomLevel = iCurrentZoomLevel; |
712 TAknUiZoom prevZoomLevel = iCurrentZoomLevel; |
694 CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel ); |
713 CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel ); |
695 if ( prevZoomLevel != iCurrentZoomLevel ) |
714 if ( prevZoomLevel != iCurrentZoomLevel ) |
696 { |
715 { |
697 for ( TInt i=0; i<iModel->Count(); i++ ) |
716 for ( TInt i=0; i<iModel->Count(); i++ ) |
698 { |
717 { |
699 // Set font height |
718 // Set font height |
700 iSearchListItemArray[i].iTreeItemVisualiser-> |
719 iSearchListItemArray[i].iTreeItemVisualiser-> |
701 SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() ); |
720 SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() ); |
702 iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[i].iSearchListItemId ); |
721 iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[i].iSearchListItemId ); |
703 } |
722 } |
704 } |
723 } |
705 } |
724 } |
706 } |
725 } |
707 } |
726 } |
708 |
727 |
709 |
728 |
710 void CFSEmailUiSearchListVisualiser::CreatePlainNodeL( const TDesC& aItemDataBuff, |
729 void CFSEmailUiSearchListVisualiser::CreatePlainNodeL( const TDesC& aItemDataBuff, |
711 CFsTreePlainOneLineNodeData* &aItemData, |
730 CFsTreePlainOneLineNodeData* &aItemData, |
712 CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const |
731 CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const |
713 { |
732 { |
714 FUNC_LOG; |
733 FUNC_LOG; |
715 aItemData = CFsTreePlainOneLineNodeData::NewL(); |
734 aItemData = CFsTreePlainOneLineNodeData::NewL(); |
716 aItemData->SetDataL( aItemDataBuff ); |
735 aItemData->SetDataL( aItemDataBuff ); |
717 aItemData->SetIconExpanded( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeExpanded) ); |
736 aItemData->SetIconExpanded( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeExpanded) ); |
718 aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) ); |
737 aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) ); |
719 aNodeVisualizer = CFsTreePlainOneLineNodeVisualizer::NewL( *iSearchList->TreeControl() ); |
738 aNodeVisualizer = CFsTreePlainOneLineNodeVisualizer::NewL( *iSearchList->TreeControl() ); |
720 TRect screenRect; |
739 TRect screenRect; |
721 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
740 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
722 TInt nodeHeight = iAppUi.LayoutHandler()->OneLineListNodeHeight(); |
741 TInt nodeHeight = iAppUi.LayoutHandler()->OneLineListNodeHeight(); |
723 aNodeVisualizer->SetSize( TSize(screenRect.Width(), nodeHeight) ); |
742 aNodeVisualizer->SetSize( TSize(screenRect.Width(), nodeHeight) ); |
724 aNodeVisualizer->SetExtendable(EFalse); |
743 aNodeVisualizer->SetExtendable(EFalse); |
725 // Set correct skin text colors for the list items |
744 // Set correct skin text colors for the list items |
726 TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor(); |
745 TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor(); |
727 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
746 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
728 aNodeVisualizer->SetFocusedStateTextColor( focusedColor ); |
747 aNodeVisualizer->SetFocusedStateTextColor( focusedColor ); |
729 aNodeVisualizer->SetNormalStateTextColor( normalColor ); |
748 aNodeVisualizer->SetNormalStateTextColor( normalColor ); |
730 } |
749 } |
731 |
750 |
732 |
751 |
733 void CFSEmailUiSearchListVisualiser::HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType ) |
752 void CFSEmailUiSearchListVisualiser::HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType ) |
734 { |
753 { |
735 FUNC_LOG; |
754 FUNC_LOG; |
736 CFsEmailUiViewBase::HandleDynamicVariantSwitchL( aType ); |
755 CFsEmailUiViewBase::HandleDynamicVariantSwitchL( aType ); |
737 if ( iFirstStartCompleted ) // Safety |
756 if ( iFirstStartCompleted ) // Safety |
738 { |
757 { |
739 if ( aType == EScreenLayoutChanged ) |
758 if ( aType == EScreenLayoutChanged ) |
740 { |
759 { |
741 SetStatusBarLayout(); |
760 SetStatusBarLayout(); |
742 } |
761 } |
743 |
762 |
744 if ( iSearchTreeListVisualizer ) |
763 if ( iSearchTreeListVisualizer ) |
745 { |
764 { |
746 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
765 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
747 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
766 iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); |
748 } |
767 } |
749 ReScaleUiL(); |
768 ReScaleUiL(); |
750 } |
769 } |
751 } |
770 } |
752 |
771 |
753 void CFSEmailUiSearchListVisualiser::GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const |
772 void CFSEmailUiSearchListVisualiser::GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const |
754 { |
773 { |
788 if( Layout_Meta_Data::IsLandscapeOrientation() ) |
815 if( Layout_Meta_Data::IsLandscapeOrientation() ) |
789 { |
816 { |
790 // landscape must use different layout |
817 // landscape must use different layout |
791 res = R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT; |
818 res = R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT; |
792 } |
819 } |
793 |
820 |
794 if ( StatusPane()->CurrentLayoutResId() != res ) |
821 if ( StatusPane()->CurrentLayoutResId() != res ) |
795 { |
822 { |
796 TRAP_IGNORE( |
823 TRAP_IGNORE( |
797 StatusPane()->SwitchLayoutL( res )); |
824 StatusPane()->SwitchLayoutL( res )); |
798 } |
825 } |
799 } |
826 } |
800 |
827 |
801 void CFSEmailUiSearchListVisualiser::HandleCommandL( TInt aCommand ) |
828 void CFSEmailUiSearchListVisualiser::HandleCommandL( TInt aCommand ) |
802 { |
829 { |
803 FUNC_LOG; |
830 FUNC_LOG; |
|
831 |
|
832 |
804 switch ( aCommand ) |
833 switch ( aCommand ) |
805 { |
834 { |
806 case EAknSoftkeySelect: |
835 case EAknSoftkeySelect: |
807 { |
836 { |
808 TInt modelCount(0); |
837 TInt modelCount(0); |
809 if ( iModel ) |
838 if ( iModel ) |
810 { |
839 { |
811 modelCount = iModel->Count(); |
840 modelCount = iModel->Count(); |
812 } |
841 } |
813 if ( modelCount ) // Safety check |
842 if ( modelCount ) // Safety check |
814 { |
843 { |
815 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
844 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
816 if ( item && item->ModelItemType() == ETypeMailItem ) |
845 if ( item && item->ModelItemType() == ETypeMailItem ) |
817 { |
846 { |
818 CFSMailMessage* messagePtr = &item->MessagePtr(); |
847 CFSMailMessage* messagePtr = &item->MessagePtr(); |
819 if ( messagePtr ) |
848 if ( messagePtr ) |
820 { |
849 { |
821 OpenHighlightedMailL(); |
850 OpenHighlightedMailL(); |
822 } |
851 } |
823 } |
852 } |
824 } |
853 } |
825 } |
854 } |
826 break; |
855 break; |
827 case EAknSoftkeyBack: |
856 case EAknSoftkeyBack: |
828 { |
857 { |
829 if ( !iAppUi.ViewSwitchingOngoing()) |
858 if ( !iAppUi.ViewSwitchingOngoing()) |
830 { |
859 { |
831 if ( iSearchOngoing ) |
860 if ( iSearchOngoing ) |
832 { |
861 { |
833 StopSearchL(); |
862 StopSearchL(); |
834 } |
863 } |
835 //<cmail> useless code removed |
864 //<cmail> useless code removed |
836 //HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH ); |
865 //HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH ); |
837 //iBarTextVisual->SetTextL( *searchText ); |
866 //iBarTextVisual->SetTextL( *searchText ); |
838 //CleanupStack::PopAndDestroy( searchText ); |
867 //CleanupStack::PopAndDestroy( searchText ); |
839 //</cmail> |
868 //</cmail> |
840 TVwsViewId viewId = TVwsViewId( KFSEmailUiUid, MailListId ); |
869 TVwsViewId viewId = TVwsViewId( KFSEmailUiUid, MailListId ); |
841 TMailListActivationData tmp; |
870 TMailListActivationData tmp; |
842 if ( iMsgDataCouldBeChanged ) |
871 if ( iMsgDataCouldBeChanged ) |
843 { |
872 { |
844 tmp.iRequestRefresh = ETrue; |
873 tmp.iRequestRefresh = ETrue; |
845 iMsgDataCouldBeChanged = EFalse; // List starts a new search |
874 iMsgDataCouldBeChanged = EFalse; // List starts a new search |
846 } |
875 } |
847 const TPckgBuf<TMailListActivationData> pkgOut( tmp ); |
876 const TPckgBuf<TMailListActivationData> pkgOut( tmp ); |
848 iAppUi.ReturnToPreviousViewL( pkgOut ); |
877 iAppUi.ReturnToPreviousViewL( pkgOut ); |
849 } |
878 } |
850 } |
879 } |
851 break; |
880 break; |
852 case EEikCmdExit: |
881 case EEikCmdExit: |
853 case EAknSoftkeyExit: |
882 case EAknSoftkeyExit: |
931 } |
960 } |
932 case EFsEmailUiCmdOpen: |
961 case EFsEmailUiCmdOpen: |
933 { |
962 { |
934 if ( iSearchList->Count() ) |
963 if ( iSearchList->Count() ) |
935 { |
964 { |
936 OpenHighlightedMailL(); |
965 OpenHighlightedMailL(); |
937 } |
966 } |
938 } |
967 } |
939 break; |
968 break; |
940 case EFsEmailUiCmdNewSearch: |
969 case EFsEmailUiCmdNewSearch: |
941 case EFsEmailUiCmdSearch: |
970 case EFsEmailUiCmdSearch: |
942 { |
971 { |
943 LaunchSearchDialogL(); |
972 LaunchSearchDialogL(); |
944 } |
973 } |
945 break; |
974 break; |
946 case EFsEmailUiCmdStopSearch: |
975 case EFsEmailUiCmdStopSearch: |
947 { |
976 { |
948 StopSearchL(); |
977 StopSearchL(); |
949 } |
978 } |
950 break; |
979 break; |
951 case EFsEmailUiCmdMessageDetails: |
980 case EFsEmailUiCmdMessageDetails: |
952 { |
981 { |
953 if ( iSearchList->Count() ) |
982 if ( iSearchList->Count() ) |
954 { |
983 { |
955 CFSEmailUiMailListModelItem* item = |
984 CFSEmailUiMailListModelItem* item = |
956 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) ); |
985 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) ); |
957 CFSMailMessage& msg = item->MessagePtr(); |
986 CFSMailMessage& msg = item->MessagePtr(); |
958 |
987 |
959 TMsgDetailsActivationData msgDetailsData; |
988 TMsgDetailsActivationData msgDetailsData; |
960 msgDetailsData.iMailBoxId = msg.GetMailBoxId(); |
989 msgDetailsData.iMailBoxId = msg.GetMailBoxId(); |
961 msgDetailsData.iFolderId = msg.GetFolderId(); |
990 msgDetailsData.iFolderId = msg.GetFolderId(); |
962 msgDetailsData.iMessageId = msg.GetMessageId(); |
991 msgDetailsData.iMessageId = msg.GetMessageId(); |
963 |
992 |
964 const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData ); |
993 const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData ); |
965 iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning, pkgOut); |
994 iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning, pkgOut); |
966 } |
995 } |
967 } |
996 } |
968 break; |
997 break; |
969 case EFsEmailUiCmdHelp: |
998 case EFsEmailUiCmdHelp: |
970 { |
999 { |
971 TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID ); |
1000 TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID ); |
972 } |
1001 } |
973 break; |
1002 break; |
974 case EFsEmailUiCmdActionsCallSender: |
1003 case EFsEmailUiCmdActionsCallSender: |
975 { |
1004 { |
976 if ( iSearchList->Count() ) |
1005 if ( iSearchList->Count() ) |
977 { |
1006 { |
978 CallToSenderL(); |
1007 CallToSenderL(); |
979 } |
1008 } |
980 } |
1009 } |
981 break; |
1010 break; |
982 case EFsEmailUiCmdActionsAddContact: |
1011 case EFsEmailUiCmdActionsAddContact: |
983 { |
1012 { |
984 if ( iSearchList->Count() ) |
1013 if ( iSearchList->Count() ) |
985 { |
1014 { |
986 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
1015 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
987 if ( item && item->ModelItemType() == ETypeMailItem ) |
1016 if ( item && item->ModelItemType() == ETypeMailItem ) |
988 { |
1017 { |
989 CFSMailAddress* fromAddress = item->MessagePtr().GetSender(); |
1018 CFSMailAddress* fromAddress = item->MessagePtr().GetSender(); |
990 TDesC* emailAddress(0); |
1019 TDesC* emailAddress(0); |
991 if ( fromAddress ) |
1020 if ( fromAddress ) |
992 { |
1021 { |
993 emailAddress = &fromAddress->GetEmailAddress(); |
1022 emailAddress = &fromAddress->GetEmailAddress(); |
994 } |
1023 } |
995 if ( emailAddress && emailAddress->Length() ) |
1024 if ( emailAddress && emailAddress->Length() ) |
996 { |
1025 { |
997 TAddToContactsType aType; |
1026 TAddToContactsType aType; |
998 //Query to "update existing" or "Create new" --> EFALSE = user choosed "cancel" |
1027 //Query to "update existing" or "Create new" --> EFALSE = user choosed "cancel" |
999 if ( CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddtoContactsQueryL( aType ) ) |
1028 if ( CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddtoContactsQueryL( aType ) ) |
1000 { |
1029 { |
1001 CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL( |
1030 CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL( |
1002 *emailAddress, EContactUpdateEmail, aType, this ); |
1031 *emailAddress, EContactUpdateEmail, aType, this ); |
1003 } |
1032 } |
1004 } |
1033 } |
1005 } |
1034 } |
1006 } |
1035 } |
1007 } |
1036 } |
1008 break; |
1037 break; |
1009 case EFsEmailUiCmdMarkAsReadUnreadToggle: |
1038 case EFsEmailUiCmdMarkAsReadUnreadToggle: |
1010 { |
1039 { |
1011 if ( iSearchList->Count() ) |
1040 if ( iSearchList->Count() ) |
1012 { |
1041 { |
1013 CFSEmailUiMailListModelItem* item = |
1042 CFSEmailUiMailListModelItem* item = |
1014 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() )); |
1043 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() )); |
1015 if ( item && item->ModelItemType() == ETypeMailItem ) |
1044 if ( item && item->ModelItemType() == ETypeMailItem ) |
1016 { |
1045 { |
1017 if ( item->MessagePtr().IsFlagSet(EFSMsgFlag_Read) ) |
1046 if ( item->MessagePtr().IsFlagSet(EFSMsgFlag_Read) ) |
1018 { |
1047 { |
1039 case EFsEmailUiCmdCalActionsAccept: |
1068 case EFsEmailUiCmdCalActionsAccept: |
1040 case EFsEmailUiCmdCalActionsTentative: |
1069 case EFsEmailUiCmdCalActionsTentative: |
1041 case EFsEmailUiCmdCalActionsDecline: |
1070 case EFsEmailUiCmdCalActionsDecline: |
1042 case EFsEmailUiCmdCalRemoveFromCalendar: |
1071 case EFsEmailUiCmdCalRemoveFromCalendar: |
1043 { |
1072 { |
1044 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
1073 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
1045 if ( item && item->ModelItemType() == ETypeMailItem && |
1074 if ( item && item->ModelItemType() == ETypeMailItem && |
1046 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
1075 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
1047 { |
1076 { |
1048 ChangeReadStatusOfHighlightedL( ETrue ); |
1077 ChangeReadStatusOfHighlightedL( ETrue ); |
1049 iAppUi.MailViewer().HandleMrCommandL( aCommand, |
1078 iAppUi.MailViewer().HandleMrCommandL( aCommand, |
1050 iAppUi.GetActiveMailbox()->GetId(), |
1079 iAppUi.GetActiveMailbox()->GetId(), |
1051 item->MessagePtr().GetFolderId(), |
1080 item->MessagePtr().GetFolderId(), |
1052 item->MessagePtr().GetMessageId() ); |
1081 item->MessagePtr().GetMessageId() ); |
1053 } |
1082 } |
1054 } |
1083 } |
1055 break; |
1084 break; |
1056 // <cmail> Prevent Download Manager opening with attachments |
1085 // <cmail> Prevent Download Manager opening with attachments |
1057 // case EFsEmailUiCmdDownloadManager: |
1086 // case EFsEmailUiCmdDownloadManager: |
1058 // { |
1087 // { |
1059 // if (iSearchOngoing) |
1088 // if (iSearchOngoing) |
1060 // { |
1089 // { |
1061 // StopSearchL(); |
1090 // StopSearchL(); |
1062 // } |
1091 // } |
1063 // iAppUi.EnterFsEmailViewL( DownloadManagerViewId ); |
1092 // iAppUi.EnterFsEmailViewL( DownloadManagerViewId ); |
1064 // } |
1093 // } |
1065 // break; |
1094 // break; |
1066 // </cmail> |
1095 // </cmail> |
1067 case EFsEmailUiCmdReadEmail: |
1096 case EFsEmailUiCmdReadEmail: |
1068 { |
1097 { |
1069 iAppUi.StartReadingEmailsL(); |
1098 iAppUi.StartReadingEmailsL(); |
1070 } |
1099 } |
1071 break; |
1100 break; |
1072 default: |
1101 default: |
1073 break; |
1102 break; |
1074 } |
1103 } |
|
1104 |
|
1105 // Check if the focus needs to be removed after selecting an command from |
|
1106 // the stylus popup menu. |
|
1107 if ( ( iStylusPopUpMenuVisible ) && |
|
1108 ( aCommand == KErrCancel || |
|
1109 aCommand == EFsEmailUiCmdActionsDelete || |
|
1110 aCommand == EFsEmailUiCmdMarkAsRead || |
|
1111 aCommand == EFsEmailUiCmdMarkAsUnread || |
|
1112 aCommand == EFsEmailUiCmdActionsMove || |
|
1113 aCommand == EFsEmailUiCmdMarkUnmarkToggle ) ) |
|
1114 { |
|
1115 // We end up here if the user selects an option from the pop up menu |
|
1116 // or exits the menu by tapping outside of it's area. |
|
1117 // Remove the focus from a list item if an item is focused. |
|
1118 iStylusPopUpMenuVisible = EFalse; |
|
1119 iAppUi.SetFocusVisibility( EFalse ); |
|
1120 } |
|
1121 |
1075 } |
1122 } |
1076 |
1123 |
1077 |
1124 |
1078 TInt CFSEmailUiSearchListVisualiser::LaunchSearchDialogL() |
1125 TInt CFSEmailUiSearchListVisualiser::LaunchSearchDialogL() |
1079 { |
1126 { |
1249 if ( iFirstStartCompleted ) //Safety |
1297 if ( iFirstStartCompleted ) //Safety |
1250 { |
1298 { |
1251 SetSearchListLayoutAnchors(); |
1299 SetSearchListLayoutAnchors(); |
1252 iScreenAnchorLayout->UpdateChildrenLayout(); |
1300 iScreenAnchorLayout->UpdateChildrenLayout(); |
1253 iSearchListLayout->UpdateChildrenLayout(); |
1301 iSearchListLayout->UpdateChildrenLayout(); |
1254 // Set bar text color from skin |
1302 // Set bar text color from skin |
1255 if ( iBarTextVisual ) |
1303 if ( iBarTextVisual ) |
1256 { |
1304 { |
1257 //<cmail> |
1305 //<cmail> |
1258 SetHeaderAttributesL(); |
1306 SetHeaderAttributesL(); |
1259 /*TRgb barTextColor( KRgbBlack ); |
1307 /*TRgb barTextColor( KRgbBlack ); |
1260 AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), |
1308 AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), |
1261 barTextColor, KAknsIIDFsTextColors, EAknsCIFsTextColorsCG10 ); |
1309 barTextColor, KAknsIIDFsTextColors, EAknsCIFsTextColorsCG10 ); |
1262 iBarTextVisual->SetColor( barTextColor );*/ |
1310 iBarTextVisual->SetColor( barTextColor );*/ |
1263 //</cmail> |
1311 //</cmail> |
1264 } |
1312 } |
1265 RefreshL(); |
1313 RefreshL(); |
1266 //iSearchTreeListVisualizer->HideList(); |
1314 //iSearchTreeListVisualizer->HideList(); |
1267 iSearchTreeListVisualizer->ShowListL(); |
1315 iSearchTreeListVisualizer->ShowListL(); |
1268 } |
1316 } |
1269 } |
1317 } |
1270 |
1318 |
1271 void CFSEmailUiSearchListVisualiser::SetSearchListLayoutAnchors() |
1319 void CFSEmailUiSearchListVisualiser::SetSearchListLayoutAnchors() |
1272 { |
1320 { |
1273 FUNC_LOG; |
1321 FUNC_LOG; |
1274 // Set anchors so that list leaves space for control bar |
1322 // Set anchors so that list leaves space for control bar |
1275 |
1323 |
1276 // The anchor layout mirrors itself automatically when necessary. |
1324 // The anchor layout mirrors itself automatically when necessary. |
1277 // There's no need to mirror anything manually here. |
1325 // There's no need to mirror anything manually here. |
1278 |
1326 |
1279 // BAR BACGROUND IMAGE |
1327 // BAR BACGROUND IMAGE |
1280 TRect contBarRect = iAppUi.LayoutHandler()->GetControlBarRect(); |
1328 TRect contBarRect = iAppUi.LayoutHandler()->GetControlBarRect(); |
1281 TPoint& tl( contBarRect.iTl ); |
1329 TPoint& tl( contBarRect.iTl ); |
1282 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0, |
1330 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0, |
1283 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1331 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1284 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1332 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1285 TAlfTimedPoint( tl.iX, tl.iY )); |
1333 TAlfTimedPoint( tl.iX, tl.iY )); |
1286 TPoint& br( contBarRect.iBr ); |
1334 TPoint& br( contBarRect.iBr ); |
1287 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0, |
1335 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0, |
1288 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1336 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1289 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1337 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1290 TAlfTimedPoint( br.iX, br.iY )); |
1338 TAlfTimedPoint( br.iX, br.iY )); |
1291 |
1339 |
1292 // TEXT |
1340 // TEXT |
1293 TRect textRect = iAppUi.LayoutHandler()->GetSearchListHeaderTextLayout().TextRect(); |
1341 TRect textRect = iAppUi.LayoutHandler()->GetSearchListHeaderTextLayout().TextRect(); |
1294 tl = textRect.iTl; |
1342 tl = textRect.iTl; |
1295 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1, |
1343 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1, |
1296 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1344 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1297 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1345 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1298 TAlfTimedPoint( tl.iX, tl.iY )); |
1346 TAlfTimedPoint( tl.iX, tl.iY )); |
1299 br = textRect.iBr; |
1347 br = textRect.iBr; |
1300 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1, |
1348 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1, |
1301 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1349 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1302 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1350 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1303 TAlfTimedPoint( br.iX, br.iY )); |
1351 TAlfTimedPoint( br.iX, br.iY )); |
1304 |
1352 |
1305 TRect listRect = iAppUi.LayoutHandler()->GetListRect( ETrue ); |
1353 TRect listRect = iAppUi.LayoutHandler()->GetListRect( ETrue ); |
1306 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2, |
1354 iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2, |
1307 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1355 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1308 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1356 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1309 TAlfTimedPoint(listRect.iTl.iX, listRect.iTl.iY)); |
1357 TAlfTimedPoint(listRect.iTl.iX, listRect.iTl.iY)); |
1310 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2, |
1358 iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2, |
1311 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1359 EAlfAnchorOriginLeft, EAlfAnchorOriginTop, |
1312 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1360 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute, |
1313 TAlfTimedPoint(listRect.iBr.iX, listRect.iBr.iY)); |
1361 TAlfTimedPoint(listRect.iBr.iX, listRect.iBr.iY)); |
1314 } |
1362 } |
1315 |
1363 |
1318 { |
1366 { |
1319 FUNC_LOG; |
1367 FUNC_LOG; |
1320 TFSMailMsgId msgId; // constructs null ID |
1368 TFSMailMsgId msgId; // constructs null ID |
1321 if ( 0 <= aItemIdx && aItemIdx < iModel->Count() ) |
1369 if ( 0 <= aItemIdx && aItemIdx < iModel->Count() ) |
1322 { |
1370 { |
1323 CFSEmailUiMailListModelItem* item = |
1371 CFSEmailUiMailListModelItem* item = |
1324 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx)); |
1372 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx)); |
1325 if ( item->ModelItemType() == ETypeMailItem ) |
1373 if ( item->ModelItemType() == ETypeMailItem ) |
1326 { |
1374 { |
1327 msgId = item->MessagePtr().GetMessageId(); |
1375 msgId = item->MessagePtr().GetMessageId(); |
1328 } |
1376 } |
1329 } |
1377 } |
1330 |
1378 |
1331 return msgId; |
1379 return msgId; |
1332 } |
1380 } |
1333 |
1381 |
1334 TFSMailMsgId CFSEmailUiSearchListVisualiser::MsgIdFromListId( TFsTreeItemId aListId ) const |
1382 TFSMailMsgId CFSEmailUiSearchListVisualiser::MsgIdFromListId( TFsTreeItemId aListId ) const |
1335 { |
1383 { |
1336 FUNC_LOG; |
1384 FUNC_LOG; |
1337 TFSMailMsgId msgId; |
1385 TFSMailMsgId msgId; |
1338 for ( TInt i=0; i<iModel->Count();i++) |
1386 for ( TInt i=0; i<iModel->Count();i++) |
1339 { |
1387 { |
1340 CFSEmailUiMailListModelItem* item = |
1388 CFSEmailUiMailListModelItem* item = |
1341 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1389 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1342 if ( item->ModelItemType() == ETypeMailItem && |
1390 if ( item->ModelItemType() == ETypeMailItem && |
1343 aListId == item->CorrespondingListId() ) |
1391 aListId == item->CorrespondingListId() ) |
1344 { |
1392 { |
1345 msgId = item->MessagePtr().GetMessageId(); |
1393 msgId = item->MessagePtr().GetMessageId(); |
1346 break; |
1394 break; |
1347 } |
1395 } |
1348 } |
1396 } |
1349 return msgId; |
1397 return msgId; |
1350 } |
1398 } |
1351 |
1399 |
1352 CFSMailMessage& CFSEmailUiSearchListVisualiser::MsgPtrFromListId( TFsTreeItemId aListId ) |
1400 CFSMailMessage& CFSEmailUiSearchListVisualiser::MsgPtrFromListId( TFsTreeItemId aListId ) |
1353 { |
1401 { |
1354 FUNC_LOG; |
1402 FUNC_LOG; |
1355 CFSMailMessage* msgPtr(NULL); |
1403 CFSMailMessage* msgPtr(NULL); |
1356 for ( TInt i=0; i<iModel->Count();i++) |
1404 for ( TInt i=0; i<iModel->Count();i++) |
1357 { |
1405 { |
1358 CFSEmailUiMailListModelItem* item = |
1406 CFSEmailUiMailListModelItem* item = |
1359 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1407 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1360 if ( aListId == item->CorrespondingListId() ) |
1408 if ( aListId == item->CorrespondingListId() ) |
1361 { |
1409 { |
1362 msgPtr = &item->MessagePtr(); |
1410 msgPtr = &item->MessagePtr(); |
1363 } |
1411 } |
1364 } |
1412 } |
1365 return *msgPtr; |
1413 return *msgPtr; |
1366 } |
1414 } |
1367 |
1415 |
1368 // Item data and visualiser helper functions |
1416 // Item data and visualiser helper functions |
1369 MFsTreeItemData* CFSEmailUiSearchListVisualiser::ItemDataFromItemId( TFsTreeItemId aItemId ) |
1417 MFsTreeItemData* CFSEmailUiSearchListVisualiser::ItemDataFromItemId( TFsTreeItemId aItemId ) |
1370 { |
1418 { |
1371 FUNC_LOG; |
1419 FUNC_LOG; |
1372 TInt i(0); |
1420 TInt i(0); |
1373 MFsTreeItemData* itemData(NULL); |
1421 MFsTreeItemData* itemData(NULL); |
1399 // Helpers to get the ordinal of a message in the iModel |
1447 // Helpers to get the ordinal of a message in the iModel |
1400 TInt CFSEmailUiSearchListVisualiser::ItemIndexFromMessageId( const TFSMailMsgId& aMessageId ) const |
1448 TInt CFSEmailUiSearchListVisualiser::ItemIndexFromMessageId( const TFSMailMsgId& aMessageId ) const |
1401 { |
1449 { |
1402 FUNC_LOG; |
1450 FUNC_LOG; |
1403 TInt idx = KErrNotFound; |
1451 TInt idx = KErrNotFound; |
1404 |
1452 |
1405 for ( TInt i=0; i<iModel->Count() ; i++ ) |
1453 for ( TInt i=0; i<iModel->Count() ; i++ ) |
1406 { |
1454 { |
1407 CFSEmailUiMailListModelItem* item = |
1455 CFSEmailUiMailListModelItem* item = |
1408 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1456 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1409 if ( item->ModelItemType() == ETypeMailItem && |
1457 if ( item->ModelItemType() == ETypeMailItem && |
1410 aMessageId == item->MessagePtr().GetMessageId() ) |
1458 aMessageId == item->MessagePtr().GetMessageId() ) |
1411 { |
1459 { |
1412 idx = i; |
1460 idx = i; |
1413 break; |
1461 break; |
1414 } |
1462 } |
1415 } |
1463 } |
1416 |
1464 |
1417 return idx; |
1465 return idx; |
1418 } |
1466 } |
1419 |
1467 |
1420 TInt CFSEmailUiSearchListVisualiser::NextMessageIndex( TInt aCurMsgIdx ) const |
1468 TInt CFSEmailUiSearchListVisualiser::NextMessageIndex( TInt aCurMsgIdx ) const |
1421 { |
1469 { |
1422 FUNC_LOG; |
1470 FUNC_LOG; |
1423 TInt idx = KErrNotFound; |
1471 TInt idx = KErrNotFound; |
1424 |
1472 |
1425 for ( TInt i=aCurMsgIdx+1 ; i<iModel->Count() ; i++ ) |
1473 for ( TInt i=aCurMsgIdx+1 ; i<iModel->Count() ; i++ ) |
1426 { |
1474 { |
1427 CFSEmailUiMailListModelItem* item = |
1475 CFSEmailUiMailListModelItem* item = |
1428 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1476 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1429 if ( item && item->ModelItemType() == ETypeMailItem ) |
1477 if ( item && item->ModelItemType() == ETypeMailItem ) |
1430 { |
1478 { |
1431 idx = i; |
1479 idx = i; |
1432 break; |
1480 break; |
1433 } |
1481 } |
1434 } |
1482 } |
1435 |
1483 |
1436 return idx; |
1484 return idx; |
1437 } |
1485 } |
1438 |
1486 |
1439 TInt CFSEmailUiSearchListVisualiser::PreviousMessageIndex( TInt aCurMsgIdx ) const |
1487 TInt CFSEmailUiSearchListVisualiser::PreviousMessageIndex( TInt aCurMsgIdx ) const |
1440 { |
1488 { |
1441 FUNC_LOG; |
1489 FUNC_LOG; |
1442 TInt idx = KErrNotFound; |
1490 TInt idx = KErrNotFound; |
1443 |
1491 |
1444 if ( aCurMsgIdx < iModel->Count() ) |
1492 if ( aCurMsgIdx < iModel->Count() ) |
1445 { |
1493 { |
1446 for ( TInt i=aCurMsgIdx-1 ; i>=0 ; i-- ) |
1494 for ( TInt i=aCurMsgIdx-1 ; i>=0 ; i-- ) |
1447 { |
1495 { |
1448 CFSEmailUiMailListModelItem* item = |
1496 CFSEmailUiMailListModelItem* item = |
1449 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1497 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i)); |
1450 if ( item && item->ModelItemType() == ETypeMailItem ) |
1498 if ( item && item->ModelItemType() == ETypeMailItem ) |
1451 { |
1499 { |
1452 idx = i; |
1500 idx = i; |
1453 break; |
1501 break; |
1454 } |
1502 } |
1455 } |
1503 } |
1456 } |
1504 } |
1457 |
1505 |
1458 return idx; |
1506 return idx; |
1459 } |
1507 } |
1460 |
1508 |
1461 |
1509 |
1462 void CFSEmailUiSearchListVisualiser::OpenHighlightedMailL() |
1510 void CFSEmailUiSearchListVisualiser::OpenHighlightedMailL() |
1463 { |
1511 { |
1464 FUNC_LOG; |
1512 FUNC_LOG; |
1465 if (iSearchOngoing) |
1513 if (iSearchOngoing) |
1466 { |
1514 { |
1467 StopSearchL(); |
1515 StopSearchL(); |
1468 } |
1516 } |
1469 |
1517 |
1470 CFSEmailUiMailListModelItem* item = |
1518 CFSEmailUiMailListModelItem* item = |
1471 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
1519 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) ); |
1472 if ( item->ModelItemType() == ETypeMailItem ) |
1520 if ( item->ModelItemType() == ETypeMailItem ) |
1473 { |
1521 { |
1474 // First make sure that the highlighted message really exists in the store |
1522 // First make sure that the highlighted message really exists in the store |
1475 // Get confirmed msg ptr |
1523 // Get confirmed msg ptr |
1476 CFSMailMessage* confirmedMsgPtr(0); |
1524 CFSMailMessage* confirmedMsgPtr(0); |
1477 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(), |
1525 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(), |
1478 item->MessagePtr().GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ) ); |
1526 item->MessagePtr().GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ) ); |
1479 if ( confirmedMsgPtr && err == KErrNone ) |
1527 if ( confirmedMsgPtr && err == KErrNone ) |
1480 { |
1528 { |
1481 CFSMailFolder* highlightedMsgFolder = |
1529 CFSMailFolder* highlightedMsgFolder = |
1482 iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), confirmedMsgPtr->GetFolderId() ); |
1530 iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), confirmedMsgPtr->GetFolderId() ); |
1483 CleanupStack::PushL( highlightedMsgFolder ); |
1531 CleanupStack::PushL( highlightedMsgFolder ); |
1484 TInt msgFolderType = highlightedMsgFolder->GetFolderType(); |
1532 TInt msgFolderType = highlightedMsgFolder->GetFolderType(); |
1485 TFSMailMsgId highlightedMsgFolderId = highlightedMsgFolder->GetFolderId(); |
1533 TFSMailMsgId highlightedMsgFolderId = highlightedMsgFolder->GetFolderId(); |
1486 CleanupStack::PopAndDestroy( highlightedMsgFolder ); |
1534 CleanupStack::PopAndDestroy( highlightedMsgFolder ); |
1487 // Pointer confirmed, store Id and delete not needed anymore |
1535 // Pointer confirmed, store Id and delete not needed anymore |
1488 TFSMailMsgId confirmedId = confirmedMsgPtr->GetMessageId(); |
1536 TFSMailMsgId confirmedId = confirmedMsgPtr->GetMessageId(); |
1489 delete confirmedMsgPtr; |
1537 delete confirmedMsgPtr; |
1490 |
1538 |
1491 // Open to editor from drafts |
1539 // Open to editor from drafts |
1492 if ( msgFolderType == EFSDraftsFolder ) |
1540 if ( msgFolderType == EFSDraftsFolder ) |
1493 { |
1541 { |
1494 TEditorLaunchParams params; |
1542 TEditorLaunchParams params; |
1495 params.iMailboxId = iAppUi.GetActiveMailboxId(); |
1543 params.iMailboxId = iAppUi.GetActiveMailboxId(); |
1496 params.iActivatedExternally = EFalse; |
1544 params.iActivatedExternally = EFalse; |
1497 params.iMsgId = confirmedId; |
1545 params.iMsgId = confirmedId; |
1498 params.iFolderId = highlightedMsgFolderId; |
1546 params.iFolderId = highlightedMsgFolderId; |
1499 iAppUi.LaunchEditorL( KEditorCmdOpen, params ); |
1547 iAppUi.LaunchEditorL( KEditorCmdOpen, params ); |
1500 } |
1548 } |
1501 else if ( msgFolderType == EFSOutbox ) |
1549 else if ( msgFolderType == EFSOutbox ) |
1502 { |
1550 { |
1503 TFsEmailUiUtility::ShowErrorNoteL( R_FREESTYLE_EMAIL_UI_OPEN_FROM_OUTBOX_NOTE, ETrue ); |
1551 TFsEmailUiUtility::ShowErrorNoteL( R_FREESTYLE_EMAIL_UI_OPEN_FROM_OUTBOX_NOTE, ETrue ); |
1504 } |
1552 } |
1505 else |
1553 else |
1506 { |
1554 { |
1507 THtmlViewerActivationData tmp; |
1555 THtmlViewerActivationData tmp; |
1508 tmp.iMailBoxId = iAppUi.GetActiveMailbox()->GetId(); |
1556 tmp.iMailBoxId = iAppUi.GetActiveMailbox()->GetId(); |
1509 tmp.iMessageId = confirmedId; |
1557 tmp.iMessageId = confirmedId; |
1510 tmp.iFolderId = highlightedMsgFolderId; |
1558 tmp.iFolderId = highlightedMsgFolderId; |
1511 |
1559 |
1512 const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp ); |
1560 const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp ); |
1513 ChangeReadStatusOfHighlightedL( ETrue ); |
1561 ChangeReadStatusOfHighlightedL( ETrue ); |
1514 iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut ); |
1562 iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut ); |
1515 } |
1563 } |
1516 } |
1564 } |
1517 else if ( err == KErrNotFound ) |
1565 else if ( err == KErrNotFound ) |
1518 { |
1566 { |
1519 TRAP_IGNORE( CheckAndUpdateFocusedMessageL() ); |
1567 TRAP_IGNORE( CheckAndUpdateFocusedMessageL() ); |
1520 } |
1568 } |
1521 } |
1569 } |
1522 } |
1570 } |
1523 |
1571 |
1524 |
1572 |
1568 } |
1616 } |
1569 } |
1617 } |
1570 else if ( markedCount == 1) |
1618 else if ( markedCount == 1) |
1571 { |
1619 { |
1572 messagePointer = &MsgPtrFromListId( markedEntries[0] ); |
1620 messagePointer = &MsgPtrFromListId( markedEntries[0] ); |
1573 } |
1621 } |
1574 } |
1622 } |
1575 if ( messagePointer ) |
1623 if ( messagePointer ) |
1576 { |
1624 { |
1577 // No reply/Forward for calendar messages, at least not in 1.0 |
1625 // No reply/Forward for calendar messages, at least not in 1.0 |
1578 if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
1626 if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
1579 { |
1627 { |
1580 TEditorLaunchParams params; |
1628 TEditorLaunchParams params; |
1581 params.iMailboxId = iAppUi.GetActiveMailboxId(); |
1629 params.iMailboxId = iAppUi.GetActiveMailboxId(); |
1582 params.iActivatedExternally = EFalse; |
1630 params.iActivatedExternally = EFalse; |
1583 params.iMsgId = messagePointer->GetMessageId(); |
1631 params.iMsgId = messagePointer->GetMessageId(); |
1584 iAppUi.LaunchEditorL( aMode, params ); |
1632 iAppUi.LaunchEditorL( aMode, params ); |
1585 } |
1633 } |
1586 } |
1634 } |
1587 } |
1635 } |
1588 } |
1636 } |
1589 |
1637 |
1590 void CFSEmailUiSearchListVisualiser::StartSearchL() |
1638 void CFSEmailUiSearchListVisualiser::StartSearchL() |
1591 { |
1639 { |
1592 FUNC_LOG; |
1640 FUNC_LOG; |
1593 iSearchCount++; |
1641 iSearchCount++; |
1594 |
1642 |
1595 // Reset previous results before starting new search |
1643 // Reset previous results before starting new search |
1596 // <cmail> fixed CS high cat. finding |
1644 // <cmail> fixed CS high cat. finding |
1597 ResetResultListL(); |
1645 ResetResultListL(); |
1598 TLex lex( *iLatestSearchText ); |
1646 TLex lex( *iLatestSearchText ); |
1599 while ( !lex.Eos() ) |
1647 while ( !lex.Eos() ) |
1600 { |
1648 { |
1601 HBufC* token = lex.NextToken().AllocLC(); |
1649 HBufC* token = lex.NextToken().AllocLC(); |
1602 |
1650 |
1603 iSearchStrings.AppendL( token ); |
1651 iSearchStrings.AppendL( token ); |
1604 |
1652 |
1605 CleanupStack::Pop( token ); |
1653 CleanupStack::Pop( token ); |
1606 } |
1654 } |
1607 |
1655 |
1608 TFSMailSortCriteria sortCriteria; |
1656 TFSMailSortCriteria sortCriteria; |
1609 sortCriteria.iField = EFSMailSortByDate; |
1657 sortCriteria.iField = EFSMailSortByDate; |
1610 sortCriteria.iOrder = EFSMailDescending; |
1658 sortCriteria.iOrder = EFSMailDescending; |
1611 iSearchOngoing = ETrue; |
1659 iSearchOngoing = ETrue; |
1612 // Model and list is set to be empty, set also MSK to empty |
1660 // Model and list is set to be empty, set also MSK to empty |
1613 SetMskL(); |
1661 SetMskL(); |
1614 // Initialisr TextSearcher |
1662 // Initialisr TextSearcher |
1615 |
1663 |
1616 // Start search. |
1664 // Start search. |
1617 iMailBox->SearchL( iSearchStrings, sortCriteria, *this ); |
1665 iMailBox->SearchL( iSearchStrings, sortCriteria, *this ); |
1618 } |
1666 } |
1619 |
1667 |
1620 void CFSEmailUiSearchListVisualiser::StopSearchL() |
1668 void CFSEmailUiSearchListVisualiser::StopSearchL() |
1621 { |
1669 { |
1622 FUNC_LOG; |
1670 FUNC_LOG; |
1623 iSearchOngoing = EFalse; |
1671 iSearchOngoing = EFalse; |
1624 if ( iMailBox ) |
1672 if ( iMailBox ) |
1625 { |
1673 { |
1626 iMailBox->CancelSearch(); |
1674 iMailBox->CancelSearch(); |
1627 } |
1675 } |
1628 HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH_RESULTS ); |
1676 HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH_RESULTS ); |
1629 HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 ); |
1677 HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 ); |
1630 finalText->Des().Append( *searchText ); |
1678 finalText->Des().Append( *searchText ); |
1631 finalText->Des().Append( KSpace ); |
1679 finalText->Des().Append( KSpace ); |
1632 finalText->Des().Append( *iLatestSearchText ); |
1680 finalText->Des().Append( *iLatestSearchText ); |
1633 iBarTextVisual->SetTextL( *finalText ); |
1681 iBarTextVisual->SetTextL( *finalText ); |
1634 CleanupStack::PopAndDestroy( finalText ); |
1682 CleanupStack::PopAndDestroy( finalText ); |
1635 CleanupStack::PopAndDestroy( searchText ); |
1683 CleanupStack::PopAndDestroy( searchText ); |
|
1684 iRequiredSearchPriority = KStandardSearchPriority; // <cmail> return back |
1636 } |
1685 } |
1637 |
1686 |
1638 void CFSEmailUiSearchListVisualiser::ResetResultListL() |
1687 void CFSEmailUiSearchListVisualiser::ResetResultListL() |
1639 { |
1688 { |
1640 // <cmail> fixed CS high cat. finding |
1689 FUNC_LOG; |
1641 FUNC_LOG; |
1690 if( iModel ) |
1642 iModel->Reset(); |
1691 { |
1643 iSearchList->RemoveAllL(); |
1692 iModel->Reset(); |
|
1693 } |
|
1694 if( iSearchList ) |
|
1695 { |
|
1696 iSearchList->RemoveAllL(); |
|
1697 } |
1644 iSearchListItemArray.Reset(); |
1698 iSearchListItemArray.Reset(); |
1645 iSearchStrings.ResetAndDestroy(); |
1699 iSearchStrings.ResetAndDestroy(); |
1646 } |
1700 } |
1647 |
1701 |
1648 void CFSEmailUiSearchListVisualiser::MatchFoundL( CFSMailMessage* aMatchMessage ) |
1702 void CFSEmailUiSearchListVisualiser::MatchFoundL( CFSMailMessage* aMatchMessage ) |
1649 { |
1703 { |
1650 FUNC_LOG; |
1704 FUNC_LOG; |
1651 |
1705 |
1652 if ( !iSearchList->IsFocused() ) |
1706 if ( !iSearchList->IsFocused() ) |
1653 { |
1707 { |
1654 iSearchList->SetFocusedL( ETrue ); |
1708 iSearchList->SetFocusedL( ETrue ); |
1655 } |
1709 } |
1656 |
1710 |
1657 // Delete receved owned object and add confirmed msg pointer to model insteaed |
1711 // Delete receved owned object and add confirmed msg pointer to model insteaed |
1658 // This is done because it seems that matched message objects seems to be different |
1712 // This is done because it seems that matched message objects seems to be different |
1659 // in some protocols than original messages |
1713 // in some protocols than original messages |
1660 CleanupStack::PushL( aMatchMessage ); |
1714 CleanupStack::PushL( aMatchMessage ); |
1661 CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
1715 CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
1662 aMatchMessage->GetFolderId(), aMatchMessage->GetMessageId(), EFSMsgDataEnvelope ); |
1716 aMatchMessage->GetFolderId(), aMatchMessage->GetMessageId(), EFSMsgDataEnvelope ); |
1663 CleanupStack::PopAndDestroy( aMatchMessage ); |
1717 CleanupStack::PopAndDestroy( aMatchMessage ); |
1664 |
1718 |
1665 if ( confirmedMsgPtr ) // Append item into model and list if msg pointer was confirmed |
1719 if ( confirmedMsgPtr ) // Append item into model and list if msg pointer was confirmed |
1666 { |
1720 { |
1667 // Append to model |
1721 // Append to model |
1668 CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem); |
1722 CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem); |
1669 iModel->AppendL(newItem); |
1723 iModel->AppendL(newItem); |
1670 |
1724 |
1671 // Append to list |
1725 // Append to list |
1672 TRect screenRect; |
1726 TRect screenRect; |
1673 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
1727 AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); |
1674 |
1728 |
1675 CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender(); |
1729 CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender(); |
1676 TDesC* diplayName(0); |
1730 TDesC* diplayName = NULL; |
1677 if ( fromAddress ) |
1731 if ( fromAddress ) |
1678 { |
1732 { |
1679 diplayName = &fromAddress->GetDisplayName(); |
1733 diplayName = &fromAddress->GetDisplayName(); |
1680 } |
1734 } |
1681 |
1735 |
1682 // Set first line of data |
1736 // Set first line of data |
1683 HBufC* dispName(0); |
1737 HBufC* dispName = NULL; |
1684 if ( fromAddress && diplayName && diplayName->Length() != 0 ) |
1738 if ( fromAddress && diplayName && diplayName->Length() != 0 ) |
1685 { |
1739 { |
1686 dispName = HBufC::NewLC( diplayName->Length() ); |
1740 dispName = HBufC::NewLC( diplayName->Length() ); |
1687 dispName->Des().Append( *diplayName ); |
1741 dispName->Des().Append( *diplayName ); |
1688 } |
1742 } |
1692 dispName->Des().Append( fromAddress->GetEmailAddress() ); |
1746 dispName->Des().Append( fromAddress->GetEmailAddress() ); |
1693 } |
1747 } |
1694 else |
1748 else |
1695 { |
1749 { |
1696 dispName = HBufC::NewLC( 0 ); |
1750 dispName = HBufC::NewLC( 0 ); |
1697 dispName->Des().Append( KNullDesC ); |
1751 dispName->Des().Append( KNullDesC ); |
1698 } |
1752 } |
1699 |
1753 |
1700 // Drop out unwanted characters from display name such as <> and "" |
1754 // Drop out unwanted characters from display name such as <> and "" |
1701 // And set display name data |
1755 // And set display name data |
1702 if ( dispName ) |
1756 if ( dispName ) |
1703 { |
1757 { |
1704 TFsEmailUiUtility::StripDisplayName( *dispName ); |
1758 TFsEmailUiUtility::StripDisplayName( *dispName ); |
1705 } |
1759 } |
1706 // Create item data and |
1760 // Create item data and |
1707 CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL(); |
1761 CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL(); |
1708 |
1762 |
1709 itemData->SetDataL( *dispName ); |
1763 itemData->SetDataL( *dispName ); |
1710 CleanupStack::PopAndDestroy( dispName ); |
1764 CleanupStack::PopAndDestroy( dispName ); |
1711 |
1765 |
1712 // Set time text data |
1766 // Set time text data |
1713 HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse ); |
1767 HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse ); |
1714 itemData->SetDateTimeDataL ( *timeText ); |
1768 itemData->SetDateTimeDataL ( *timeText ); |
1715 CleanupStack::PopAndDestroy(); |
1769 CleanupStack::PopAndDestroy(); |
1716 |
1770 |
1717 // Set second line of data |
1771 // Set second line of data |
1718 |
|
1719 HBufC* subjectText = TFsEmailUiUtility::CreateSubjectTextLC( confirmedMsgPtr ); |
1772 HBufC* subjectText = TFsEmailUiUtility::CreateSubjectTextLC( confirmedMsgPtr ); |
1720 |
1773 itemData->SetSecondaryDataL( *subjectText ); |
1721 |
|
1722 itemData->SetSecondaryDataL( *subjectText); |
|
1723 |
|
1724 |
|
1725 |
|
1726 |
|
1727 CleanupStack::PopAndDestroy( subjectText ); |
1774 CleanupStack::PopAndDestroy( subjectText ); |
1728 |
1775 |
1729 |
|
1730 // Set message icon |
1776 // Set message icon |
1731 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() ); |
1777 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() ); |
1732 itemData->SetIcon ( *itemTexture ); |
1778 itemData->SetIcon ( *itemTexture ); |
1733 CFsTreePlainTwoLineItemVisualizer* itemVisualizer = CFsTreePlainTwoLineItemVisualizer::NewL(*iSearchList->TreeControl()); |
1779 CFsTreePlainTwoLineItemVisualizer* itemVisualizer = CFsTreePlainTwoLineItemVisualizer::NewL(*iSearchList->TreeControl()); |
1734 |
1780 |
1735 |
1781 itemVisualizer->SetExtendable( ETrue ); |
1736 itemVisualizer->SetExtendable( ETrue ); |
|
1737 TInt itemHeight = iAppUi.LayoutHandler()->OneLineListItemHeight(); |
1782 TInt itemHeight = iAppUi.LayoutHandler()->OneLineListItemHeight(); |
1738 |
1783 |
1739 itemVisualizer->SetSize(TSize(screenRect.Width(), itemHeight)); |
1784 itemVisualizer->SetSize( TSize( screenRect.Width(), itemHeight ) ); |
1740 itemVisualizer->SetExtendedSize(TSize(screenRect.Width(), 2*itemHeight)); |
1785 itemVisualizer->SetExtendedSize( TSize( screenRect.Width(), 2*itemHeight ) ); |
1741 |
1786 |
1742 // Set menu icon |
|
1743 itemVisualizer->SetFlags( itemVisualizer->Flags() | KFsTreeListItemHasMenu ); |
|
1744 |
|
1745 // Set font height |
1787 // Set font height |
1746 itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() ); |
1788 itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() ); |
1747 |
1789 |
1748 // Set font bolding |
1790 // Set font bolding |
1749 if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ) ) |
1791 if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ) ) |
1750 { |
1792 { |
1751 itemVisualizer->SetTextBold( EFalse ); |
1793 itemVisualizer->SetTextBold( EFalse ); |
1752 } |
1794 } |
1753 else |
1795 else |
1754 { |
1796 { |
1755 itemVisualizer->SetTextBold( ETrue ); |
1797 itemVisualizer->SetTextBold( ETrue ); |
1756 } |
1798 } |
1757 |
1799 |
1758 // Set correct skin text colors for the list items |
1800 // Set correct skin text colors for the list items |
1759 TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor(); |
1801 TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor(); |
1760 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
1802 TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); |
1761 itemVisualizer->SetFocusedStateTextColor( focusedColor ); |
1803 itemVisualizer->SetFocusedStateTextColor( focusedColor ); |
1762 itemVisualizer->SetNormalStateTextColor( normalColor ); |
1804 itemVisualizer->SetNormalStateTextColor( normalColor ); |
1763 |
1805 |
1764 switch ( iListMode ) |
1806 switch ( iListMode ) |
1765 { |
1807 { |
1766 case EListControlTypeDoubleLinePreviewOn: |
1808 case EListControlTypeDoubleLinePreviewOn: |
1767 case EListControlTypeSingleLinePreviewOn: |
1809 case EListControlTypeSingleLinePreviewOn: |
1768 itemVisualizer->SetPreviewPaneOn( ETrue ); |
1810 itemVisualizer->SetPreviewPaneOn( ETrue ); |
1769 itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) ); |
1811 itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) ); |
1770 // fall through |
1812 // fall through |
1771 case EListControlTypeDoubleLinePreviewOff: |
1813 case EListControlTypeDoubleLinePreviewOff: |
1772 case EListControlTypeSingleLinePreviewOff: |
1814 case EListControlTypeSingleLinePreviewOff: |
1773 itemVisualizer->SetExtendable(ETrue); |
1815 itemVisualizer->SetExtendable(ETrue); |
1774 itemVisualizer->SetExtendedSize(TSize(screenRect.Width(), 2*itemHeight)); |
1816 itemVisualizer->SetExtendedSize(TSize(screenRect.Width(), 2*itemHeight)); |
1788 if ( TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ) ) |
1830 if ( TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ) ) |
1789 { |
1831 { |
1790 if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
1832 if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
1791 { |
1833 { |
1792 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
1834 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
1793 itemVisualizer->SetFlagIconVisible( ETrue ); |
1835 itemVisualizer->SetFlagIconVisible( ETrue ); |
1794 } |
1836 } |
1795 else if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) ) |
1837 else if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) ) |
1796 { |
1838 { |
1797 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) ); |
1839 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) ); |
1798 itemVisualizer->SetFlagIconVisible( ETrue ); |
1840 itemVisualizer->SetFlagIconVisible( ETrue ); |
1799 } |
1841 } |
1800 else |
1842 else |
1801 { |
1843 { |
1802 itemVisualizer->SetFlagIconVisible( EFalse ); |
1844 itemVisualizer->SetFlagIconVisible( EFalse ); |
1803 } |
1845 } |
1804 } |
1846 } |
1805 else |
1847 else |
1806 { |
1848 { |
1807 itemVisualizer->SetFlagIconVisible( EFalse ); |
1849 itemVisualizer->SetFlagIconVisible( EFalse ); |
1808 } |
1850 } |
1809 |
1851 |
1810 TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID ); |
1852 TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID ); |
1811 if (iSearchList->FocusedItem() == KFsTreeNoneID) |
1853 if (iSearchList->FocusedItem() == KFsTreeNoneID) |
1812 { |
1854 { |
1813 iSearchList->SetFocusedItemL(itemId); |
1855 iSearchList->SetFocusedItemL(itemId); |
1814 } |
1856 } |
1815 |
1857 |
1816 SSearchListItem searchListItem; |
1858 SSearchListItem searchListItem; |
1817 searchListItem.iSearchListItemId = itemId; |
1859 searchListItem.iSearchListItemId = itemId; |
1818 searchListItem.iTreeItemData = itemData; |
1860 searchListItem.iTreeItemData = itemData; |
1819 searchListItem.iTreeItemVisualiser = itemVisualizer; |
1861 searchListItem.iTreeItemVisualiser = itemVisualizer; |
1820 iSearchListItemArray.AppendL( searchListItem ); |
1862 iSearchListItemArray.AppendL( searchListItem ); |
1821 newItem->AddCorrespondingListId( itemId ); |
1863 newItem->AddCorrespondingListId( itemId ); |
1822 |
1864 |
1823 if ( iSearchList->Count() == 1 ) // Call only once, temp fix because of error in generic |
1865 if ( iSearchList->Count() == 1 ) // Call only once, temp fix because of error in generic |
1824 { |
1866 { |
1825 if ( iListMode == EListControlTypeDoubleLinePreviewOn || |
1867 if ( iListMode == EListControlTypeDoubleLinePreviewOn || |
1826 iListMode == EListControlTypeDoubleLinePreviewOff ) |
1868 iListMode == EListControlTypeDoubleLinePreviewOff ) |
1851 { |
1893 { |
1852 FUNC_LOG; |
1894 FUNC_LOG; |
1853 if ( iFirstStartCompleted ) // Safety |
1895 if ( iFirstStartCompleted ) // Safety |
1854 { |
1896 { |
1855 CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); |
1897 CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox(); |
1856 if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled |
1898 if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled |
1857 { |
1899 { |
1858 if ( iModel && iModel->Count() && aEvent == TFSEventMailDeleted ) |
1900 if ( iModel && iModel->Count() && aEvent == TFSEventMailDeleted ) |
1859 { |
1901 { |
1860 RArray<TFSMailMsgId>* removedEntries = static_cast<RArray<TFSMailMsgId>*>(aParam1); |
1902 RArray<TFSMailMsgId>* removedEntries = static_cast<RArray<TFSMailMsgId>*>(aParam1); |
1861 if ( removedEntries && removedEntries->Count() ) |
1903 if ( removedEntries && removedEntries->Count() ) |
1862 { |
1904 { |
1863 RemoveMsgItemsFromListIfFoundL( *removedEntries ); |
1905 RemoveMsgItemsFromListIfFoundL( *removedEntries ); |
1864 } |
1906 } |
1865 } |
1907 } |
1866 else if ( iModel && iModel->Count() && aEvent == TFSEventMailChanged ) |
1908 else if ( iModel && iModel->Count() && aEvent == TFSEventMailChanged ) |
1867 { |
1909 { |
1868 // Get array of changed entries |
1910 // Get array of changed entries |
1869 RArray<TFSMailMsgId>* entries = static_cast<RArray<TFSMailMsgId>*>(aParam1); |
1911 RArray<TFSMailMsgId>* entries = static_cast<RArray<TFSMailMsgId>*>(aParam1); |
1870 // Get ID of the folder that this cahnge concerns. |
1912 // Get ID of the folder that this cahnge concerns. |
1871 TFSMailMsgId* parentFolderId = static_cast<TFSMailMsgId*>( aParam2 ); |
1913 TFSMailMsgId* parentFolderId = static_cast<TFSMailMsgId*>( aParam2 ); |
1872 for ( TInt i=0 ; i < entries->Count() ; i++) |
1914 for ( TInt i=0 ; i < entries->Count() ; i++) |
1873 { |
1915 { |
1874 TFSMailMsgId entryId = (*entries)[i]; |
1916 TFSMailMsgId entryId = (*entries)[i]; |
1875 CFSMailMessage* confirmedMsgPtr(0); |
1917 CFSMailMessage* confirmedMsgPtr(0); |
1876 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
1918 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
1877 *parentFolderId, entryId, EFSMsgDataEnvelope ) ); |
1919 *parentFolderId, entryId, EFSMsgDataEnvelope ) ); |
1878 if ( confirmedMsgPtr && err == KErrNone ) |
1920 if ( confirmedMsgPtr && err == KErrNone ) |
1879 { |
1921 { |
1880 CleanupStack::PushL( confirmedMsgPtr ); |
1922 CleanupStack::PushL( confirmedMsgPtr ); |
1881 UpdateMsgIconAndBoldingL( confirmedMsgPtr ); |
1923 UpdateMsgIconAndBoldingL( confirmedMsgPtr ); |
1882 CleanupStack::PopAndDestroy( confirmedMsgPtr ); |
1924 CleanupStack::PopAndDestroy( confirmedMsgPtr ); |
1883 } |
1925 } |
1884 } |
1926 } |
1885 } |
1927 } |
1886 } |
1928 } |
1887 } |
1929 } |
1999 selectedItem->MessagePtr().SaveMessageL(); // Save flag |
2042 selectedItem->MessagePtr().SaveMessageL(); // Save flag |
2000 // Switch icon to correct one |
2043 // Switch icon to correct one |
2001 UpdateMsgIconAndBoldingL( HighlightedIndex() ); |
2044 UpdateMsgIconAndBoldingL( HighlightedIndex() ); |
2002 } |
2045 } |
2003 } |
2046 } |
2004 } |
2047 } |
2005 |
2048 |
2006 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL() |
2049 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL() |
2007 { |
2050 { |
2008 FUNC_LOG; |
2051 FUNC_LOG; |
2009 if ( iModel && iModel->Count() ) // Needed safety check |
2052 if ( iModel && iModel->Count() ) // Needed safety check |
2010 { |
2053 { |
2011 TInt highlightedIndex = HighlightedIndex(); |
2054 TInt highlightedIndex = HighlightedIndex(); |
2012 CFSEmailUiMailListModelItem* selectedItem = |
2055 CFSEmailUiMailListModelItem* selectedItem = |
2013 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex )); |
2056 static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex )); |
2014 if ( selectedItem->ModelItemType() == ETypeMailItem ) |
2057 if ( selectedItem->ModelItemType() == ETypeMailItem ) |
2015 { |
2058 { |
2016 CFSMailMessage* msgPtr = &selectedItem->MessagePtr(); |
2059 CFSMailMessage* msgPtr = &selectedItem->MessagePtr(); |
2017 if ( msgPtr ) |
2060 if ( msgPtr ) |
2018 { |
2061 { |
2019 CFSMailFolder* folderPtr = |
2062 CFSMailFolder* folderPtr = |
2020 iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), msgPtr->GetFolderId() ); |
2063 iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), msgPtr->GetFolderId() ); |
2021 CleanupStack::PushL( folderPtr ); |
2064 CleanupStack::PushL( folderPtr ); |
2022 |
2065 |
2023 if ( !folderPtr ) |
2066 if ( !folderPtr ) |
2024 { |
2067 { |
2025 // Pointer is not valid anymore, msg has been delete, |
2068 // Pointer is not valid anymore, msg has been delete, |
2026 // so it must be removed from the search list |
2069 // so it must be removed from the search list |
2027 RemoveFocusedFromListL(); |
2070 RemoveFocusedFromListL(); |
2028 } |
2071 } |
2029 else |
2072 else |
2030 { |
2073 { |
2031 CFSMailMessage* confirmedMsgPtr(0); |
2074 CFSMailMessage* confirmedMsgPtr(0); |
2032 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
2075 TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), |
2033 folderPtr->GetFolderId(), msgPtr->GetMessageId(), EFSMsgDataEnvelope ) ); |
2076 folderPtr->GetFolderId(), msgPtr->GetMessageId(), EFSMsgDataEnvelope ) ); |
2034 if ( confirmedMsgPtr && err == KErrNone) |
2077 if ( confirmedMsgPtr && err == KErrNone) |
2035 { |
2078 { |
2036 CleanupStack::PushL( confirmedMsgPtr ); |
2079 CleanupStack::PushL( confirmedMsgPtr ); |
2037 UpdateMsgIconAndBoldingL( confirmedMsgPtr ); |
2080 UpdateMsgIconAndBoldingL( confirmedMsgPtr ); |
2038 CleanupStack::PopAndDestroy( confirmedMsgPtr ); |
2081 CleanupStack::PopAndDestroy( confirmedMsgPtr ); |
2039 } |
2082 } |
2040 else |
2083 else |
2041 { |
2084 { |
2042 RemoveFocusedFromListL(); |
2085 RemoveFocusedFromListL(); |
2043 } |
2086 } |
2044 } |
2087 } |
2045 |
2088 |
2046 CleanupStack::PopAndDestroy( folderPtr ); |
2089 CleanupStack::PopAndDestroy( folderPtr ); |
2047 } |
2090 } |
2048 } |
2091 } |
2049 } |
2092 } |
2050 } |
2093 } |
2051 |
2094 |
2052 void CFSEmailUiSearchListVisualiser::RemoveFocusedFromListL() |
2095 void CFSEmailUiSearchListVisualiser::RemoveFocusedFromListL() |
2053 { |
2096 { |
2054 FUNC_LOG; |
2097 FUNC_LOG; |
2055 iMsgDataCouldBeChanged = ETrue; |
2098 iMsgDataCouldBeChanged = ETrue; |
2056 SSearchListItem item; |
2099 SSearchListItem item; |
2057 item.iSearchListItemId = iSearchList->FocusedItem(); |
2100 item.iSearchListItemId = iSearchList->FocusedItem(); |
2058 TInt IndexToBeDestroyed = iSearchListItemArray.Find( item ); |
2101 TInt IndexToBeDestroyed = iSearchListItemArray.Find( item ); |
2059 iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array. |
2102 iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array. |
2060 iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model |
2103 iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model |
2061 iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list |
2104 iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list |
2062 } |
2105 } |
2063 |
2106 |
2064 |
2107 |
2065 // Updates our own message object with the data from a given message object. |
2108 // Updates our own message object with the data from a given message object. |
2066 // The messages are matched with the message ID. |
2109 // The messages are matched with the message ID. |
2106 CFSEmailUiMailListModelItem* item = |
2149 CFSEmailUiMailListModelItem* item = |
2107 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(aListIndex) ); |
2150 static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(aListIndex) ); |
2108 if ( item && item->ModelItemType()==ETypeMailItem ) |
2151 if ( item && item->ModelItemType()==ETypeMailItem ) |
2109 { |
2152 { |
2110 CFSMailMessage* msgPtr = &item->MessagePtr(); |
2153 CFSMailMessage* msgPtr = &item->MessagePtr(); |
2111 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() ); |
2154 CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() ); |
2112 CFsTreePlainTwoLineItemData* itemData = |
2155 CFsTreePlainTwoLineItemData* itemData = |
2113 static_cast<CFsTreePlainTwoLineItemData*>( iSearchListItemArray[aListIndex].iTreeItemData ); |
2156 static_cast<CFsTreePlainTwoLineItemData*>( iSearchListItemArray[aListIndex].iTreeItemData ); |
2114 CFsTreePlainTwoLineItemVisualizer* itemVis = |
2157 CFsTreePlainTwoLineItemVisualizer* itemVis = |
2115 static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser ); |
2158 static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser ); |
2116 itemData->SetIcon( *itemTexture ); |
2159 itemData->SetIcon( *itemTexture ); |
2117 if ( msgPtr->IsFlagSet( EFSMsgFlag_Read ) ) |
2160 if ( msgPtr->IsFlagSet( EFSMsgFlag_Read ) ) |
2118 { |
2161 { |
2119 itemVis->SetTextBold( EFalse ); |
2162 itemVis->SetTextBold( EFalse ); |
2120 } |
2163 } |
2121 else |
2164 else |
2122 { |
2165 { |
2123 itemVis->SetTextBold( ETrue ); |
2166 itemVis->SetTextBold( ETrue ); |
2124 } |
2167 } |
2125 // Set follow up flag icon correctly |
2168 // Set follow up flag icon correctly |
2126 if ( TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ) ) |
2169 if ( TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() ) ) |
2127 { |
2170 { |
2128 if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
2171 if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) ) |
2129 { |
2172 { |
2130 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
2173 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) ); |
2131 itemVis->SetFlagIconVisible( ETrue ); |
2174 itemVis->SetFlagIconVisible( ETrue ); |
2132 } |
2175 } |
2133 else if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) ) |
2176 else if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) ) |
2134 { |
2177 { |
2135 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) ); |
2178 itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) ); |
2136 itemVis->SetFlagIconVisible( ETrue ); |
2179 itemVis->SetFlagIconVisible( ETrue ); |
2137 } |
2180 } |
2138 else |
2181 else |
2139 { |
2182 { |
2140 itemVis->SetFlagIconVisible( EFalse ); |
2183 itemVis->SetFlagIconVisible( EFalse ); |
2141 } |
2184 } |
2142 } |
2185 } |
2143 else |
2186 else |
2144 { |
2187 { |
2145 itemVis->SetFlagIconVisible( EFalse ); |
2188 itemVis->SetFlagIconVisible( EFalse ); |
2146 } |
2189 } |
2147 iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[aListIndex].iSearchListItemId ); |
2190 iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[aListIndex].iSearchListItemId ); |
2148 } |
2191 } |
2149 } |
2192 } |
2150 } |
2193 } |
2151 |
2194 |
2152 |
2195 |
2153 // Delete messages |
2196 // Delete messages |
2154 void CFSEmailUiSearchListVisualiser::DeleteFocusedMessageL() |
2197 void CFSEmailUiSearchListVisualiser::DeleteFocusedMessageL() |
2155 { |
2198 { |
2156 FUNC_LOG; |
2199 FUNC_LOG; |
2157 if ( iSearchList->Count() ) |
2200 if ( iSearchList->Count() ) |
2158 { |
2201 { |
2177 if ( iAppUi.GetCRHandler()->WarnBeforeDelete() ) |
2220 if ( iAppUi.GetCRHandler()->WarnBeforeDelete() ) |
2178 { |
2221 { |
2179 okToDelete = TFsEmailUiUtility::ShowConfirmationQueryL( queryTextId, *msgSubject ); |
2222 okToDelete = TFsEmailUiUtility::ShowConfirmationQueryL( queryTextId, *msgSubject ); |
2180 } |
2223 } |
2181 CleanupStack::PopAndDestroy( msgSubject ); |
2224 CleanupStack::PopAndDestroy( msgSubject ); |
2182 |
2225 |
2183 if ( okToDelete ) |
2226 if ( okToDelete ) |
2184 { |
2227 { |
2185 iMsgDataCouldBeChanged = ETrue; // Refresh |
2228 iMsgDataCouldBeChanged = ETrue; // Refresh |
2186 // Delete message from framework, and perform internal housekeeping |
2229 // Delete message from framework, and perform internal housekeeping |
2187 TFSMailMsgId msgId = messagePtr.GetMessageId(); |
2230 TFSMailMsgId msgId = messagePtr.GetMessageId(); |
2188 RArray<TFSMailMsgId> msgIds; |
2231 RArray<TFSMailMsgId> msgIds; |
2189 msgIds.Append( msgId ); |
2232 msgIds.Append( msgId ); |
2190 TFSMailMsgId folderId = messagePtr.GetFolderId(); |
2233 TFSMailMsgId folderId = messagePtr.GetFolderId(); |
2191 TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId(); |
2234 TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId(); |
2192 iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds ); |
2235 iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds ); |
2193 msgIds.Reset(); |
2236 msgIds.Reset(); |
2194 SSearchListItem item; |
2237 SSearchListItem item; |
2195 item.iSearchListItemId = iSearchList->FocusedItem(); |
2238 item.iSearchListItemId = iSearchList->FocusedItem(); |
2196 TInt IndexToBeDestroyed = iSearchListItemArray.Find( item ); |
2239 TInt IndexToBeDestroyed = iSearchListItemArray.Find( item ); |
2197 iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array. |
2240 iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array. |
2198 iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model |
2241 iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model |
2199 iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list |
2242 iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list |
2200 } |
2243 } |
2201 } |
2244 } |
2202 } |
2245 } |
2203 } |
2246 } |
2204 |
2247 |
2205 |
2248 |
2206 // Navigation functions, used mainly from viewer |
2249 // Navigation functions, used mainly from viewer |
2207 TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, |
2250 TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, |
2208 TFSMailMsgId& aFoundNextMsgId, |
2251 TFSMailMsgId& aFoundNextMsgId, |
2209 TFSMailMsgId& aFoundNextMsgFolderId ) const |
2252 TFSMailMsgId& aFoundNextMsgFolderId ) const |
2210 { |
2253 { |
2211 FUNC_LOG; |
2254 FUNC_LOG; |
2212 TBool ret(EFalse); |
2255 TBool ret(EFalse); |
2217 TInt nextIdx = NextMessageIndex(curIdx); |
2260 TInt nextIdx = NextMessageIndex(curIdx); |
2218 if ( nextIdx >= 0 ) |
2261 if ( nextIdx >= 0 ) |
2219 { |
2262 { |
2220 ret = ETrue; |
2263 ret = ETrue; |
2221 aFoundNextMsgId = MsgIdFromIndex(nextIdx); |
2264 aFoundNextMsgId = MsgIdFromIndex(nextIdx); |
2222 CFSEmailUiMailListModelItem* item = |
2265 CFSEmailUiMailListModelItem* item = |
2223 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( nextIdx )); |
2266 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( nextIdx )); |
2224 if ( item->ModelItemType() == ETypeMailItem ) |
2267 if ( item->ModelItemType() == ETypeMailItem ) |
2225 { |
2268 { |
2226 aFoundNextMsgFolderId = item->MessagePtr().GetFolderId(); |
2269 aFoundNextMsgFolderId = item->MessagePtr().GetFolderId(); |
2227 } |
2270 } |
2228 } |
2271 } |
2229 } |
2272 } |
2230 |
2273 |
2231 return ret; |
2274 return ret; |
2232 } |
2275 } |
2233 |
2276 |
2234 |
2277 |
2235 TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, |
2278 TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, |
2236 TFSMailMsgId& aFoundPreviousMsgId, |
2279 TFSMailMsgId& aFoundPreviousMsgId, |
2237 TFSMailMsgId& aFoundPrevMsgFolderId ) const |
2280 TFSMailMsgId& aFoundPrevMsgFolderId ) const |
2238 { |
2281 { |
2239 FUNC_LOG; |
2282 FUNC_LOG; |
2240 TBool ret(EFalse); |
2283 TBool ret(EFalse); |
2241 |
2284 |
2242 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2285 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2243 if ( curIdx >= 0 ) |
2286 if ( curIdx >= 0 ) |
2244 { |
2287 { |
2245 TInt prevIdx = PreviousMessageIndex(curIdx); |
2288 TInt prevIdx = PreviousMessageIndex(curIdx); |
2246 if ( prevIdx >= 0 ) |
2289 if ( prevIdx >= 0 ) |
2247 { |
2290 { |
2248 ret = ETrue; |
2291 ret = ETrue; |
2249 aFoundPreviousMsgId = MsgIdFromIndex(prevIdx); |
2292 aFoundPreviousMsgId = MsgIdFromIndex(prevIdx); |
2250 CFSEmailUiMailListModelItem* item = |
2293 CFSEmailUiMailListModelItem* item = |
2251 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( prevIdx )); |
2294 static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( prevIdx )); |
2252 if ( item->ModelItemType() == ETypeMailItem ) |
2295 if ( item->ModelItemType() == ETypeMailItem ) |
2253 { |
2296 { |
2254 aFoundPrevMsgFolderId = item->MessagePtr().GetFolderId(); |
2297 aFoundPrevMsgFolderId = item->MessagePtr().GetFolderId(); |
2255 } |
2298 } |
2256 } |
2299 } |
2257 } |
2300 } |
2258 |
2301 |
2259 return ret; |
2302 return ret; |
2260 } |
2303 } |
2261 |
2304 |
2262 TInt CFSEmailUiSearchListVisualiser::MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId ) |
2305 TInt CFSEmailUiSearchListVisualiser::MoveToNextMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId ) |
2263 { |
2306 { |
2264 FUNC_LOG; |
2307 FUNC_LOG; |
2265 TInt ret(KErrNotFound); |
2308 TInt ret(KErrNotFound); |
2266 |
2309 |
2267 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2310 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2268 TInt nextIdx = NextMessageIndex( curIdx ); |
2311 TInt nextIdx = NextMessageIndex( curIdx ); |
2269 |
2312 |
2270 if ( curIdx >= 0 && nextIdx >= 0 ) |
2313 if ( curIdx >= 0 && nextIdx >= 0 ) |
2271 { |
2314 { |
2272 // Focus the new message |
2315 // Focus the new message |
2273 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[nextIdx].iSearchListItemId ); |
2316 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[nextIdx].iSearchListItemId ); |
2274 ChangeReadStatusOfHighlightedL( ETrue ); |
2317 ChangeReadStatusOfHighlightedL( ETrue ); |
2276 ret = KErrNone; |
2319 ret = KErrNone; |
2277 } |
2320 } |
2278 if ( ret == KErrNone ) |
2321 if ( ret == KErrNone ) |
2279 { |
2322 { |
2280 OpenHighlightedMailL(); |
2323 OpenHighlightedMailL(); |
2281 } |
2324 } |
2282 return ret; |
2325 return ret; |
2283 } |
2326 } |
2284 |
2327 |
2285 TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId ) |
2328 TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgL( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundPreviousMsgId ) |
2286 { |
2329 { |
2287 FUNC_LOG; |
2330 FUNC_LOG; |
2288 TInt ret(KErrNotFound); |
2331 TInt ret(KErrNotFound); |
2289 |
2332 |
2290 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2333 TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId ); |
2291 TInt prevIdx = PreviousMessageIndex( curIdx ); |
2334 TInt prevIdx = PreviousMessageIndex( curIdx ); |
2292 |
2335 |
2293 if ( curIdx >= 0 && prevIdx >= 0 ) |
2336 if ( curIdx >= 0 && prevIdx >= 0 ) |
2294 { |
2337 { |
2295 // Focus the new message |
2338 // Focus the new message |
2296 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[prevIdx].iSearchListItemId ); |
2339 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[prevIdx].iSearchListItemId ); |
2297 ChangeReadStatusOfHighlightedL( ETrue ); |
2340 ChangeReadStatusOfHighlightedL( ETrue ); |
2298 aFoundPreviousMsgId = MsgIdFromIndex( prevIdx ); |
2341 aFoundPreviousMsgId = MsgIdFromIndex( prevIdx ); |
2299 ret = KErrNone; |
2342 ret = KErrNone; |
2300 } |
2343 } |
2301 |
2344 |
2302 if ( ret == KErrNone ) |
2345 if ( ret == KErrNone ) |
2303 { |
2346 { |
2304 OpenHighlightedMailL(); |
2347 OpenHighlightedMailL(); |
2305 } |
2348 } |
2306 return ret; |
2349 return ret; |
2307 } |
2350 } |
2308 |
2351 |
2309 TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId ) |
2352 TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId ) |
2310 { |
2353 { |
2311 FUNC_LOG; |
2354 FUNC_LOG; |
2312 TInt ret(KErrNotFound); |
2355 TInt ret(KErrNotFound); |
2313 |
2356 |
2314 TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId ); |
2357 TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId ); |
2315 if ( idx >= 0 ) |
2358 if ( idx >= 0 ) |
2316 { |
2359 { |
2317 // Focus the previous message |
2360 // Focus the previous message |
2318 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[idx].iSearchListItemId ); |
2361 iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[idx].iSearchListItemId ); |
2319 ChangeReadStatusOfHighlightedL( ETrue ); |
2362 ChangeReadStatusOfHighlightedL( ETrue ); |
2320 ret = KErrNone; |
2363 ret = KErrNone; |
2321 } |
2364 } |
2322 |
2365 |
2323 if ( ret == KErrNone ) |
2366 if ( ret == KErrNone ) |
2324 { |
2367 { |
2325 OpenHighlightedMailL(); |
2368 OpenHighlightedMailL(); |
2326 } |
2369 } |
2327 |
2370 |
2328 return ret; |
2371 return ret; |
2329 } |
2372 } |
2330 |
2373 |
2331 // Helper functions to get highlighted message id and folder id |
2374 // Helper functions to get highlighted message id and folder id |
2332 TFSMailMsgId CFSEmailUiSearchListVisualiser::HighlightedMessageFolderId() |
2375 TFSMailMsgId CFSEmailUiSearchListVisualiser::HighlightedMessageFolderId() |
2333 { |
2376 { |
2334 FUNC_LOG; |
2377 FUNC_LOG; |
2335 TFSMailMsgId ret; |
2378 TFSMailMsgId ret; |
2336 if ( iSearchList->Count() && iModel ) |
2379 if ( iSearchList->Count() && iModel ) |
2337 { |
2380 { |
2338 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2381 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2339 if ( item && item->ModelItemType() == ETypeMailItem ) |
2382 if ( item && item->ModelItemType() == ETypeMailItem ) |
2340 { |
2383 { |
2341 ret = item->MessagePtr().GetFolderId(); |
2384 ret = item->MessagePtr().GetFolderId(); |
2342 } |
2385 } |
2343 } |
2386 } |
2344 return ret; |
2387 return ret; |
2345 } |
2388 } |
2346 |
2389 |
2347 TFSMailMsgId CFSEmailUiSearchListVisualiser::HighlightedMessageId() |
2390 TFSMailMsgId CFSEmailUiSearchListVisualiser::HighlightedMessageId() |
2348 { |
2391 { |
2349 FUNC_LOG; |
2392 FUNC_LOG; |
2350 TFSMailMsgId ret; |
2393 TFSMailMsgId ret; |
2351 if ( iSearchList->Count() && iModel ) |
2394 if ( iSearchList->Count() && iModel ) |
2352 { |
2395 { |
2353 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2396 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2354 if ( item && item->ModelItemType() == ETypeMailItem ) |
2397 if ( item && item->ModelItemType() == ETypeMailItem ) |
2355 { |
2398 { |
2356 ret = item->MessagePtr().GetMessageId(); |
2399 ret = item->MessagePtr().GetMessageId(); |
2357 } |
2400 } |
2358 } |
2401 } |
2359 return ret; |
2402 return ret; |
2360 } |
2403 } |
2361 |
2404 |
2362 |
2405 |
2364 // --------------------------------------------------------------------------- |
2407 // --------------------------------------------------------------------------- |
2365 // CFSEmailUiSearchListVisualiser::TreeListEventL |
2408 // CFSEmailUiSearchListVisualiser::TreeListEventL |
2366 // From MFsTreeListObserver |
2409 // From MFsTreeListObserver |
2367 // --------------------------------------------------------------------------- |
2410 // --------------------------------------------------------------------------- |
2368 // |
2411 // |
2369 void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent, const TFsTreeItemId /*aId*/ ) |
2412 void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent, |
|
2413 const TFsTreeItemId /*aId*/, |
|
2414 const TPoint& aPoint ) |
2370 { |
2415 { |
2371 FUNC_LOG; |
2416 FUNC_LOG; |
2372 |
2417 |
2373 switch(aEvent) |
2418 switch(aEvent) |
2374 { |
2419 { |
2375 case MFsTreeListObserver::EFsTreeListItemTouchAction: |
2420 case MFsTreeListObserver::EFsTreeListItemTouchAction: |
2376 DoHandleActionL(); |
2421 DoHandleActionL(); |
2377 break; |
2422 break; |
2378 case MFsTreeListObserver::EFsTreeListItemTouchLongTap: |
2423 case MFsTreeListObserver::EFsTreeListItemTouchLongTap: |
2379 if ( iSearchList->Count() ) |
2424 if ( iSearchList->Count() ) |
2380 { |
2425 { |
2381 LaunchActionMenuL(); |
2426 LaunchStylusPopupMenuL( aPoint ); |
2382 } |
2427 } |
2383 break; |
2428 break; |
2384 case MFsTreeListObserver::EFsTreeListItemWillGetFocused: |
2429 case MFsTreeListObserver::EFsTreeListItemWillGetFocused: |
2385 { |
2430 { |
2386 SetMskL(); |
2431 SetMskL(); |
2387 break; |
2432 break; |
2388 } |
2433 } |
2389 case MFsTreeListObserver::EFsFocusVisibilityChange: |
2434 case MFsTreeListObserver::EFsFocusVisibilityChange: |
2390 { |
2435 { |
2391 iAppUi.SetFocusVisibility( EFalse ); |
2436 iAppUi.SetFocusVisibility( EFalse ); |
2392 break; |
2437 break; |
2393 } |
2438 } |
2394 case MFsTreeListObserver::EFsTreeListItemTouchFocused: |
2439 case MFsTreeListObserver::EFsTreeListItemTouchFocused: |
2395 default: |
2440 default: |
2396 //Just ignore rest of events |
2441 //Just ignore rest of events |
2397 break; |
2442 break; |
2398 } |
2443 } |
2399 } |
2444 } |
2400 |
2445 |
2401 // --------------------------------------------------------------------------- |
2446 // --------------------------------------------------------------------------- |
2402 // CFSEmailUiSearchListVisualiser::DoHandleActionL |
2447 // CFSEmailUiSearchListVisualiser::DoHandleActionL |
2403 // --------------------------------------------------------------------------- |
2448 // --------------------------------------------------------------------------- |
2404 // |
2449 // |
2405 void CFSEmailUiSearchListVisualiser::DoHandleActionL() |
2450 void CFSEmailUiSearchListVisualiser::DoHandleActionL() |
2406 { |
2451 { |
2407 FUNC_LOG; |
2452 FUNC_LOG; |
2408 TInt modelCount = 0; |
2453 TInt modelCount = 0; |
2409 |
2454 |
2410 if ( iModel ) |
2455 if ( iModel ) |
2411 { |
2456 { |
2412 modelCount = iModel->Count(); |
2457 modelCount = iModel->Count(); |
2413 } |
2458 } |
2414 if ( modelCount ) // Safety check |
2459 if ( modelCount ) // Safety check |
2415 { |
2460 { |
2416 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2461 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
2417 if ( item && item->ModelItemType() == ETypeMailItem ) |
2462 if ( item && item->ModelItemType() == ETypeMailItem ) |
2418 { |
2463 { |
2419 CFSMailMessage* messagePtr = &item->MessagePtr(); |
2464 CFSMailMessage* messagePtr = &item->MessagePtr(); |
2420 if ( messagePtr ) |
2465 if ( messagePtr ) |
2421 { |
2466 { |
2422 OpenHighlightedMailL(); |
2467 OpenHighlightedMailL(); |
2423 } |
2468 } |
2424 } |
2469 } |
2425 } |
2470 } |
2426 } |
2471 } |
2427 |
2472 |
2428 //</cmail> |
2473 //</cmail> |
2429 |
2474 |
2430 // --------------------------------------------------------------------------- |
2475 // --------------------------------------------------------------------------- |
2431 // From MFSEmailUiContactHandlerObserver |
2476 // From MFSEmailUiContactHandlerObserver |
2432 // The ownership of the CLS items in the contacts array is transferred to the |
2477 // The ownership of the CLS items in the contacts array is transferred to the |
2433 // observer, and they must be deleted by the observer. |
2478 // observer, and they must be deleted by the observer. |
2460 { |
2507 { |
2461 CFSMailAddress* fromAddress = item->MessagePtr().GetSender(); |
2508 CFSMailAddress* fromAddress = item->MessagePtr().GetSender(); |
2462 TDesC* emailAddress(0); |
2509 TDesC* emailAddress(0); |
2463 if ( fromAddress ) |
2510 if ( fromAddress ) |
2464 { |
2511 { |
2465 emailAddress = &fromAddress->GetEmailAddress(); |
2512 emailAddress = &fromAddress->GetEmailAddress(); |
2466 } |
2513 } |
2467 if ( emailAddress && emailAddress->Length() ) |
2514 if ( emailAddress && emailAddress->Length() ) |
2468 { |
2515 { |
2469 CFsDelayedLoader::InstanceL()->GetContactHandlerL()-> |
2516 CFsDelayedLoader::InstanceL()->GetContactHandlerL()-> |
2470 FindAndCallToContactByEmailL( *emailAddress, |
2517 FindAndCallToContactByEmailL( *emailAddress, |
2471 iAppUi.GetActiveMailbox(), this, ETrue ); |
2518 iAppUi.GetActiveMailbox(), this, ETrue ); |
2472 } |
2519 iRequiredSearchPriority = KCallingSearchPriority; //decrease priority to enable search for contact |
2473 } |
2520 return ETrue; // searching started - consume keyup event |
|
2521 } |
|
2522 } |
|
2523 return EFalse; //no calling key up will execute Call app |
2474 } |
2524 } |
2475 |
2525 |
2476 |
2526 |
2477 // --------------------------------------------------------------------------- |
2527 // --------------------------------------------------------------------------- |
2478 // Logic for changing msk |
2528 // Logic for changing msk |
2479 // --------------------------------------------------------------------------- |
2529 // --------------------------------------------------------------------------- |
2480 // |
2530 // |
2481 void CFSEmailUiSearchListVisualiser::SetMskL() |
2531 void CFSEmailUiSearchListVisualiser::SetMskL() |
2482 { |
2532 { |
2483 FUNC_LOG; |
2533 FUNC_LOG; |
2484 if ( iFirstStartCompleted ) |
2534 if ( iFirstStartCompleted ) |
2485 { |
2535 { |
2486 if ( iSearchList && iSearchList->Count() ) |
2536 if ( iSearchList && iSearchList->Count() ) |
2487 { |
2537 { |
2488 ChangeMskCommandL( R_FSE_QTN_MSK_OPEN ); |
2538 ChangeMskCommandL( R_FSE_QTN_MSK_OPEN ); |
2489 } |
2539 } |
2490 else |
2540 else |
2491 { |
2541 { |
2492 ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY ); |
2542 ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY ); |
2493 } |
2543 } |
2494 } |
2544 } |
2495 } |
2545 } |
2496 |
|
2497 |
|
2498 // --------------------------------------------------------------------------- |
|
2499 // LaunchActionMenuL |
|
2500 // Function launches action menu based on the highlighted or marked messages |
|
2501 // --------------------------------------------------------------------------- |
|
2502 // |
|
2503 void CFSEmailUiSearchListVisualiser::LaunchActionMenuL() |
|
2504 { |
|
2505 FUNC_LOG; |
|
2506 if ( iModel && iModel->Count() ) |
|
2507 { |
|
2508 // Remove old items from action menu |
|
2509 CFSEmailUiActionMenu::RemoveAllL(); |
|
2510 // Construct item list |
|
2511 RFsEActionMenuIdList itemList; |
|
2512 CleanupClosePushL( itemList ); |
|
2513 |
|
2514 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex())); |
|
2515 // Right click action menu for calendar events |
|
2516 if ( item && item->ModelItemType() == ETypeMailItem && |
|
2517 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) |
|
2518 { |
|
2519 TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown ); |
|
2520 if ( iAppUi.MrViewerInstanceL() ) |
|
2521 { |
|
2522 // Search must be stopped, otherwise resolve will lead to crash |
|
2523 if ( iSearchOngoing ) |
|
2524 { |
|
2525 StopSearchL(); |
|
2526 } |
|
2527 mrMethod = iAppUi.MrViewerInstanceL()->ResolveMeetingRequestMethodL( item->MessagePtr() ); |
|
2528 } |
|
2529 switch ( mrMethod ) |
|
2530 { |
|
2531 case EESMRMeetingRequestMethodRequest: |
|
2532 itemList.AppendL( FsEActionMenuAccept ); |
|
2533 itemList.AppendL( FsEActionMenuTentative ); |
|
2534 itemList.AppendL( FsEActionMenuDecline ); |
|
2535 break; |
|
2536 case EESMRMeetingRequestMethodCancellation: |
|
2537 { |
|
2538 TBool supportsRemove = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaRemoveFromCalendar ); |
|
2539 if( supportsRemove ) |
|
2540 { |
|
2541 itemList.AppendL( FsEActionMenuRemoveFormCal ); |
|
2542 } |
|
2543 break; |
|
2544 } |
|
2545 default: |
|
2546 case EESMRMeetingRequestMethodUnknown: |
|
2547 case EESMRMeetingRequestMethodResponse: |
|
2548 itemList.AppendL( FsEActionMenuOpen); |
|
2549 break; |
|
2550 } |
|
2551 } |
|
2552 // Right click action menu for normal mail items |
|
2553 else |
|
2554 { |
|
2555 itemList.AppendL( FsEActionMenuReply ); |
|
2556 //Get # of recipients |
|
2557 TInt numRecipients(0); |
|
2558 CFSMailMessage* messagePtr = &item->MessagePtr(); |
|
2559 if ( messagePtr ) |
|
2560 { |
|
2561 numRecipients =TFsEmailUiUtility::CountRecepients( messagePtr ); |
|
2562 if ( numRecipients == 1 ) |
|
2563 { |
|
2564 //check if the malbox ownmailaddress is same as the recipients email address. If not, then assume that the |
|
2565 //email is a distribution list and we need to inc num of Recipients so that "Reply ALL" option appears in UI. |
|
2566 if ( messagePtr->GetToRecipients().Count() ) |
|
2567 { |
|
2568 if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetToRecipients()[0]->GetEmailAddress()) ) |
|
2569 { |
|
2570 numRecipients++; |
|
2571 } |
|
2572 } |
|
2573 if ( messagePtr->GetCCRecipients().Count() ) |
|
2574 { |
|
2575 if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetCCRecipients()[0]->GetEmailAddress()) ) |
|
2576 { |
|
2577 numRecipients++; |
|
2578 } |
|
2579 } |
|
2580 if ( messagePtr->GetBCCRecipients().Count() ) |
|
2581 { |
|
2582 if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetBCCRecipients()[0]->GetEmailAddress()) ) |
|
2583 { |
|
2584 numRecipients++; |
|
2585 } |
|
2586 } |
|
2587 } |
|
2588 |
|
2589 } |
|
2590 |
|
2591 if ( numRecipients > 1 ) |
|
2592 { |
|
2593 itemList.AppendL( FsEActionMenuReplyAll ); |
|
2594 } |
|
2595 itemList.AppendL( FsEActionMenuForward ); |
|
2596 } |
|
2597 // Add mark as read/unread options |
|
2598 if ( item->MessagePtr().IsFlagSet(EFSMsgFlag_Read) ) |
|
2599 { |
|
2600 itemList.AppendL( FsEActionMenuMarkUnread ); |
|
2601 } |
|
2602 else |
|
2603 { |
|
2604 itemList.AppendL( FsEActionMenuMarkRead ); |
|
2605 } |
|
2606 itemList.AppendL( FsEActionMenuDelete ); |
|
2607 |
|
2608 // <cmail> Touch |
|
2609 TActionMenuCustomItemId itemId = CFSEmailUiActionMenu::ExecuteL( itemList, EFscCustom, 0, this ); |
|
2610 // </cmail> |
|
2611 CleanupStack::PopAndDestroy( &itemList ); |
|
2612 HandleActionMenuCommandL( itemId ); |
|
2613 } |
|
2614 } |
|
2615 |
|
2616 |
|
2617 // <cmail> |
|
2618 // --------------------------------------------------------------------------- |
|
2619 // ActionMenuPosition |
|
2620 // --------------------------------------------------------------------------- |
|
2621 // |
|
2622 TPoint CFSEmailUiSearchListVisualiser::ActionMenuPosition() |
|
2623 { |
|
2624 TAlfRealRect focusRect; |
|
2625 TFsTreeItemId listItemId = iSearchList->FocusedItem(); |
|
2626 iSearchList->GetItemDisplayRectTarget(listItemId, focusRect); |
|
2627 return focusRect.iTl; |
|
2628 } |
|
2629 // </cmail> |
|
2630 |
|
2631 |
|
2632 // --------------------------------------------------------------------------- |
|
2633 // HandleActionMenuCommandL |
|
2634 // Action menu command callback handler |
|
2635 // --------------------------------------------------------------------------- |
|
2636 // |
|
2637 void CFSEmailUiSearchListVisualiser::HandleActionMenuCommandL( TActionMenuCustomItemId itemId ) |
|
2638 { |
|
2639 FUNC_LOG; |
|
2640 // Map each Action Menu ID to correcponding command ID. |
|
2641 TInt commandId = KErrNotFound; |
|
2642 |
|
2643 switch( itemId ) |
|
2644 { |
|
2645 case FsEActionMenuOpenCalendarEvent: |
|
2646 case FsEActionMenuOpen: |
|
2647 commandId = EFsEmailUiCmdOpen; |
|
2648 break; |
|
2649 case FsEActionMenuAccept: |
|
2650 commandId = EFsEmailUiCmdCalActionsAccept; |
|
2651 break; |
|
2652 case FsEActionMenuTentative: |
|
2653 commandId = EFsEmailUiCmdCalActionsTentative; |
|
2654 break; |
|
2655 case FsEActionMenuDecline: |
|
2656 commandId = EFsEmailUiCmdCalActionsDecline; |
|
2657 break; |
|
2658 case FsEActionMenuRemoveFormCal: |
|
2659 commandId = EFsEmailUiCmdCalRemoveFromCalendar; |
|
2660 break; |
|
2661 case FsEActionMenuMarkRead: |
|
2662 commandId = EFsEmailUiCmdMarkAsRead; |
|
2663 break; |
|
2664 case FsEActionMenuMarkUnread: |
|
2665 commandId = EFsEmailUiCmdMarkAsUnread; |
|
2666 break; |
|
2667 case FsEActionMenuDelete: |
|
2668 commandId = EFsEmailUiCmdActionsDelete; |
|
2669 break; |
|
2670 case FsEActionMenuReply: |
|
2671 commandId = EFsEmailUiCmdActionsReply; |
|
2672 break; |
|
2673 case FsEActionMenuReplyAll: |
|
2674 commandId = EFsEmailUiCmdActionsReplyAll; |
|
2675 break; |
|
2676 case FsEActionMenuForward: |
|
2677 commandId = EFsEmailUiCmdActionsForward; |
|
2678 break; |
|
2679 case FsEActionMenuMove: |
|
2680 commandId = EFsEmailUiCmdActionsMoveMessage; |
|
2681 break; |
|
2682 case FsEActionMenuMoveToDrafts: |
|
2683 commandId = EFsEmailUiCmdActionsMoveToDrafts; |
|
2684 break; |
|
2685 case FsEActionMenuDismissed: |
|
2686 commandId = KErrCancel; |
|
2687 break; |
|
2688 default: |
|
2689 __ASSERT_DEBUG( EFalse, Panic( EFSEmailUiUnexpectedValue ) ); |
|
2690 break; |
|
2691 } |
|
2692 |
|
2693 if ( commandId >= 0 ) |
|
2694 { |
|
2695 HandleCommandL( commandId ); |
|
2696 } |
|
2697 } |
|
2698 |
2546 |
2699 //<cmail> |
2547 //<cmail> |
2700 // --------------------------------------------------------------------------- |
2548 // --------------------------------------------------------------------------- |
2701 // CFSEmailUiSearchListVisualiser::SetHeaderTextAttributesL() |
2549 // CFSEmailUiSearchListVisualiser::SetHeaderTextAttributesL() |
2702 // |
2550 // |