--- a/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp Thu Jan 07 12:38:38 2010 +0200
+++ b/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp Mon Jan 18 20:08:26 2010 +0200
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -58,9 +58,9 @@
// </cmail>
#include <featmgr.h>
//</cmail>
+#include <aknstyluspopupmenu.h>
//<cmail>
-#include "cfsccontactactionmenu.h"
#include "mfsccontactactionmenumodel.h"
#include "fscontrolbar.h"
#include "fscontrolbuttoninterface.h"
@@ -101,11 +101,14 @@
//</cmail>
static const TInt KItemExpansionDelay = 400;
static const TInt KListScrollingDelay = 200;
-static const TInt KMaxPreviewPaneLength = 60;
+static const TInt KMaxPreviewPaneLength = 60;
+
+//<cmail> define search required priorities
+#define KStandardSearchPriority CActive::EPriorityStandard
+#define KCallingSearchPriority ( CActive::EPriorityIdle - 1 )
-
-CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewL(CAlfEnv& aEnv,
+CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewL(CAlfEnv& aEnv,
CFreestyleEmailUiAppUi* aAppUi,
CAlfControlGroup& aSearchListControlGroup )
{
@@ -115,7 +118,7 @@
return self;
}
-CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewLC(CAlfEnv& aEnv,
+CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewLC(CAlfEnv& aEnv,
CFreestyleEmailUiAppUi* aAppUi,
CAlfControlGroup& aSearchListControlGroup)
{
@@ -135,7 +138,7 @@
iThisViewActive = EFalse;
iFirstStartCompleted = EFalse;
}
-
+
// CFSEmailUiSearchListVisualiser::DoFirstStartL()
// Purpose of this function is to do first start only when search list is
// really needed to be shown. Implemented to make app startuo faster.
@@ -143,8 +146,8 @@
{
FUNC_LOG;
TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
-
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+
// Create control and anchor layout
iSearchListControl = CFreestyleEmailUiSearchListControl::NewL( *iEnv, this );
iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iSearchListControl );
@@ -152,7 +155,7 @@
SetSearchListLayoutAnchors();
// Create top bar layout
- iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
+ iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
iBarBgVisual = CAlfImageVisual::AddNewL( *iSearchListControl, iSearchTopBarLayout );
/*<cmail> paltform layout changes to cmail
TAlfTimedValue barBgTextureOpacity;
@@ -167,11 +170,11 @@
// Add bar image component
iBarFindImage = CAlfImageVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout );
TAlfTimedValue barFindImageOpacity;
- barFindImageOpacity.SetValueNow( 1 );
+ barFindImageOpacity.SetValueNow( 1 );
iBarFindImage->SetOpacity( barFindImageOpacity );
CAlfTexture* barFindTexture = &iAppUi.FsTextureManager()->TextureByIndex( ESearchLookingGlassIcon );
barFindTexture->Size().SetSize( 15, 15 );
- iBarFindImage->SetImage( TAlfImage( *barFindTexture ) );
+ iBarFindImage->SetImage( TAlfImage( *barFindTexture ) );
*/ //</cmail>
// <cmail>
@@ -180,69 +183,82 @@
iBarTextVisual->EnableShadow(EFalse);
iBarTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
// </cmail>
-
+
/*<cmail> no initial text or opacity required in cmail
HBufC* initialSearchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH );
- iBarTextVisual->SetTextL( *initialSearchText );
+ iBarTextVisual->SetTextL( *initialSearchText );
CleanupStack::PopAndDestroy( initialSearchText );
TAlfTimedValue barTextVisualOpacity;
barTextVisualOpacity.SetValueNow( 1 );
iBarTextVisual->SetOpacity( barTextVisualOpacity );
-
+
CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold );
- iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail>
+ iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail>
if ( !AknLayoutUtils::LayoutMirrored() )
{
- iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter);
+ iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter);
}
else
{
- iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter);
+ iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter);
}
// Create model
- iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue );
+ iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue );
// Create list and append to control group and anchor layout
- iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
+ iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
iSearchListLayout->SetSize( TSize( screenRect.Width(), screenRect.Height()-
iAppUi.LayoutHandler()->ControlBarHeight() ) );
- iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout);
- iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv );
+ iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout);
+ iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv );
iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways );
-
+
// Set mark type and icon
- iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable );
+ iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable );
iSearchTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) );
- iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );
+ iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );
iSearchTreeListVisualizer->SetFlipState( iKeyboardFlipOpen );
iSearchTreeListVisualizer->SetFocusVisibility( iFocusVisible );
iSearchList->SetIndentationL(0);
//<cmail> events are now offered to controls in different order
ControlGroup().AppendL( iSearchListControl );
- ControlGroup().AppendL( iSearchList->TreeControl() );
+ ControlGroup().AppendL( iSearchList->TreeControl() );
//</cmail>
//<cmail> touch
- iSearchList->AddObserverL(*this);
+ iSearchList->AddObserverL(*this);
//</cmail>
iSearchOngoing = EFalse;
-
- // Set mail list background
+
+
+ // Initializing the default stylus long tap popup menu
+ if( !iStylusPopUpMenu )
+ {
+ TPoint point( 0, 0 );
+ iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
+ TResourceReader reader;
+ iCoeEnv->CreateResourceReaderLC( reader,
+ R_STYLUS_POPUP_MENU_SEARCH_LIST_VIEW );
+ iStylusPopUpMenu->ConstructFromResourceL( reader );
+ CleanupStack::PopAndDestroy();
+ }
+
+ // Set mail list background
//<cmail> S60 skin support
- //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) );
+ //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) );
//</cmail>
-
+
iSearchTreeListVisualizer->SetItemExpansionDelay( KItemExpansionDelay );
iSearchList->SetScrollTime( KListScrollingDelay, 0.5 );
// Set empty text
HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT );
- iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText );
+ iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText );
CleanupStack::PopAndDestroy( emptyText );
TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
- iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
-
+ iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
+
// Create startup timer
iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this );
@@ -252,30 +268,32 @@
CAlfBrush* selectorBrush = iAppUi.FsTextureManager()->ListSelectorBrushL();
iSearchTreeListVisualizer->SetSelectorPropertiesL( selectorBrush, 1.0, CFsTreeVisualizerBase::EFsSelectorMoveSmoothly );
-
- iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList );
-
+
+ iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList );
+
iFirstStartCompleted = ETrue;
}
void CFSEmailUiSearchListVisualiser::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
{
FUNC_LOG;
- LaunchSearchDialogL();
+ LaunchSearchDialogL();
}
-
-CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi,
- CAlfEnv& aEnv,
+
+CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi,
+ CAlfEnv& aEnv,
CAlfControlGroup& aSearchListControlGroup )
:CFsEmailUiViewBase( aSearchListControlGroup, *aAppUi ),
iEnv( &aEnv ),
- iLatestSearchText(0),
- iListAddedToControlGroup(EFalse), //<cmail>
- iPreparedForExit(EFalse) //<cmail>
+ iLatestSearchText( 0 ),
+ iListAddedToControlGroup( EFalse ),
+ iConsumeStdKeyYes_KeyUp( EFalse ), // for consuming the call event if call for contact processed
+ iRequiredSearchPriority( KStandardSearchPriority ), // for search email priority decreasing
+ iPreparedForExit( EFalse )
{
FUNC_LOG;
}
-
+
CFSEmailUiSearchListVisualiser::~CFSEmailUiSearchListVisualiser()
{
FUNC_LOG;
@@ -285,11 +303,11 @@
delete iStartupCallbackTimer;
}
iSearchStrings.ResetAndDestroy();
- iSearchListItemArray.Reset();
+ iSearchListItemArray.Reset();
delete iModel;
delete iLatestSearchText;
delete iSearchList;
-
+ delete iStylusPopUpMenu;
}
void CFSEmailUiSearchListVisualiser::PrepareForExit()
@@ -302,15 +320,16 @@
TRAP_IGNORE(ControlGroup().AppendL( iSearchList->TreeControl() ));
if(iSearchListControl)
TRAP_IGNORE(ControlGroup().AppendL( iSearchListControl ));
- iListAddedToControlGroup = ETrue;
+ iListAddedToControlGroup = ETrue;
}*/
//<cmail>
if ( iSearchOngoing )
{
TRAP_IGNORE( StopSearchL() );
- }
+ }
delete iMailBox;
iMailBox = NULL;
+ TRAP_IGNORE( ResetResultListL() );
iPreparedForExit = ETrue;
}
@@ -331,12 +350,12 @@
return ret;
}
-
+
TUid CFSEmailUiSearchListVisualiser::Id() const
{
FUNC_LOG;
- return SearchListViewId;
- }
+ return SearchListViewId;
+ }
// <cmail> Toolbar
/*void CFSEmailUiSearchListVisualiser::DoActivateL(const TVwsViewId& aPrevViewId,
@@ -350,16 +369,16 @@
FUNC_LOG;
if ( !iFirstStartCompleted )
{
- DoFirstStartL();
+ DoFirstStartL();
}
// <cmail>
//iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways );
if ( aCustomMessageId != KStartListReturnToPreviousFolder )
{
- iBarTextVisual->SetTextL(KNullDesC);
+ iBarTextVisual->SetTextL(KNullDesC);
}
-
+
if ( &aCustomMessage && aCustomMessageId == KStartNewSearch )
{
// If new search, clear old search list
@@ -375,7 +394,7 @@
TSearchListActivationData subView;
TPckgBuf<TSearchListActivationData> viewData( subView );
viewData.Copy( aCustomMessage );
- subView = viewData();
+ subView = viewData();
// Update settings and set list mode according to settings
UpdateMailListSettingsL();
@@ -385,20 +404,20 @@
delete iMailBox;
iMailBox = NULL;
}
- iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId );
+ iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId );
// If mailbox data is not, try to get default MCE account
if ( !iMailBox )
{
CMsvSession* msvSession = iAppUi.GetMsvSession();
CFSMailClient* client = iAppUi.GetMailClient();
- iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession );
+ iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession );
}
-
- if ( iMailBox )
+
+ if ( iMailBox )
{
iThisViewActive = ETrue;
//<cmail> visible/unvisible is not controlled by opacity in cmail
- //TAlfTimedValue opacity;
+ //TAlfTimedValue opacity;
//opacity.SetValueNow( 1 );
//iScreenAnchorLayout->SetOpacity( opacity );
//</cmail>
@@ -406,7 +425,7 @@
iSearchList->SetFocusedL(ETrue);
// Set empty text color
TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
- iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
+ iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
// Launch search dialog automatically when activated
if ( &aCustomMessage && aCustomMessageId == KStartNewSearch )
@@ -415,15 +434,15 @@
// requeset async launching of the search dialog because DoActivateL must
// not be blocked
iStartupCallbackTimer->Cancel(); // just in case
- iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() );
+ iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() );
}
else if ( iModel && iModel->Count() )
{
// Need to make sure that return to this view works even if following function leaves.
- TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
+ TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
}
}
- CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel );
+ CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel );
// Set msk always empty when view is activated.
SetMskL();
// <cmail>
@@ -444,7 +463,7 @@
iListAddedToControlGroup = EFalse;
}
iThisViewActive = EFalse;
-
+
if ( !iAppUi.AppUiExitOngoing() )
{
if ( iSearchList->IsFocused() )
@@ -453,12 +472,12 @@
}
iSearchTreeListVisualizer->NotifyControlVisibilityChange( EFalse );
}
- }
-
+ }
+
CFSEmailUiMailListModel* CFSEmailUiSearchListVisualiser::Model()
{
FUNC_LOG;
- return iModel;
+ return iModel;
}
void CFSEmailUiSearchListVisualiser::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane )
@@ -471,76 +490,76 @@
if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) )
{
// remove help support in pf5250
- aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
+ aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
}
-
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
- if ( item && item->ModelItemType() == ETypeMailItem &&
- item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
+
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ if ( item && item->ModelItemType() == ETypeMailItem &&
+ item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
{
// Highlighted mail is calendar msg
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse);
}
else
{
// Highlighted mail is mail msg
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
- }
- aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
+ }
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse);
}
}
else
{
if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE )
{
-
+
if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
{
// remove help support in pf5250
- aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
+ aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
}
-
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue);
- }
+
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue);
+ }
}
-
+
if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS ||
aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS)
{
if ( iSearchList->Count() )
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
CFSMailMessage* messagePtr = &item->MessagePtr();
if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_Read ) )
{
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue);
}
else
- {
- aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue);
- }
+ {
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue);
+ }
}
- }
- }
-
+ }
+ }
+
if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS)
{
if ( iSearchList->Count() )
- {
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ {
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
CFSMailMessage* messagePtr = &item->MessagePtr();
if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_CalendarMsg ) )
- {
+ {
TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown );
if ( iAppUi.MrViewerInstanceL() )
{
@@ -560,10 +579,10 @@
break;
case EESMRMeetingRequestMethodCancellation:
{
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);
-
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);
+
TBool supportsRemove = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaRemoveFromCalendar );
if( !supportsRemove )
{
@@ -575,36 +594,36 @@
case EESMRMeetingRequestMethodUnknown:
case EESMRMeetingRequestMethodResponse:
{
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalRemoveFromCalendar, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalRemoveFromCalendar, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);
}
break;
- }
- }
+ }
+ }
}
-
+
}
}
-
+
if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_MORE )
{
// <cmail> Prevent Download Manager opening with attachments
// if ( iAppUi.DownloadInfoMediator() && !iAppUi.DownloadInfoMediator()->IsAnyAttachmentDownloads() )
// {
-// aMenuPane->SetItemDimmed(EFsEmailUiCmdDownloadManager, ETrue);
+// aMenuPane->SetItemDimmed(EFsEmailUiCmdDownloadManager, ETrue);
// }
// </cmail>
}
-
- if (aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS)
+
+ if (aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS)
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
CFSMailMessage* messagePtr = &item->MessagePtr();
- TInt menuIndex( 0 );
-
+ TInt menuIndex( 0 );
+
//Get # of recipients
TInt numRecipients(0);
if ( messagePtr )
@@ -634,10 +653,10 @@
{
numRecipients++;
}
- }
+ }
}
-
- }
+
+ }
if ( numRecipients > 1 )
{
aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, EFalse );
@@ -647,23 +666,23 @@
aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
}
}
-
+
if ( !iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE )
{
if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
{
// remove help support in pf5250
- aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
+ aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
}
-
- aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue);
+
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue);
if ( iSearchCount == 0 )
{
- aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
}
else
{
- aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
}
}
@@ -672,13 +691,13 @@
if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
{
// remove help support in pf5250
- aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
+ aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
}
-
- aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
- aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
- }
-
+
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
+ aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
+ }
+
iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextSearchResults );
}
@@ -690,7 +709,7 @@
if ( iModel && iModel->Count() )
{
// Check if zoom level has been switched and refresh items if so
- TAknUiZoom prevZoomLevel = iCurrentZoomLevel;
+ TAknUiZoom prevZoomLevel = iCurrentZoomLevel;
CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel );
if ( prevZoomLevel != iCurrentZoomLevel )
{
@@ -698,15 +717,15 @@
{
// Set font height
iSearchListItemArray[i].iTreeItemVisualiser->
- SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
+ SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[i].iSearchListItemId );
- }
+ }
}
- }
+ }
}
}
-
+
void CFSEmailUiSearchListVisualiser::CreatePlainNodeL( const TDesC& aItemDataBuff,
CFsTreePlainOneLineNodeData* &aItemData,
CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const
@@ -715,21 +734,21 @@
aItemData = CFsTreePlainOneLineNodeData::NewL();
aItemData->SetDataL( aItemDataBuff );
aItemData->SetIconExpanded( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeExpanded) );
- aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) );
+ aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) );
aNodeVisualizer = CFsTreePlainOneLineNodeVisualizer::NewL( *iSearchList->TreeControl() );
TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
TInt nodeHeight = iAppUi.LayoutHandler()->OneLineListNodeHeight();
aNodeVisualizer->SetSize( TSize(screenRect.Width(), nodeHeight) );
aNodeVisualizer->SetExtendable(EFalse);
- // Set correct skin text colors for the list items
+ // Set correct skin text colors for the list items
TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
aNodeVisualizer->SetFocusedStateTextColor( focusedColor );
- aNodeVisualizer->SetNormalStateTextColor( normalColor );
+ aNodeVisualizer->SetNormalStateTextColor( normalColor );
}
-
+
void CFSEmailUiSearchListVisualiser::HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType )
{
FUNC_LOG;
@@ -740,13 +759,13 @@
{
SetStatusBarLayout();
}
-
+
if ( iSearchTreeListVisualizer )
{
TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
- iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
+ iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
}
- ReScaleUiL();
+ ReScaleUiL();
}
}
@@ -774,6 +793,14 @@
TBool aVisible )
{
CFsEmailUiViewBase::FocusVisibilityChange( aVisible );
+
+ if ( iStylusPopUpMenuVisible && !aVisible )
+ {
+ // Do not allow to remove the focus from a list element if the pop up
+ // menu was just launched.
+ return;
+ }
+
iSearchTreeListVisualizer->SetFocusVisibility( aVisible );
}
@@ -790,7 +817,7 @@
// landscape must use different layout
res = R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT;
}
-
+
if ( StatusPane()->CurrentLayoutResId() != res )
{
TRAP_IGNORE(
@@ -801,6 +828,8 @@
void CFSEmailUiSearchListVisualiser::HandleCommandL( TInt aCommand )
{
FUNC_LOG;
+
+
switch ( aCommand )
{
case EAknSoftkeySelect:
@@ -808,22 +837,22 @@
TInt modelCount(0);
if ( iModel )
{
- modelCount = iModel->Count();
+ modelCount = iModel->Count();
}
if ( modelCount ) // Safety check
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
CFSMailMessage* messagePtr = &item->MessagePtr();
if ( messagePtr )
{
- OpenHighlightedMailL();
+ OpenHighlightedMailL();
}
}
}
- }
- break;
+ }
+ break;
case EAknSoftkeyBack:
{
if ( !iAppUi.ViewSwitchingOngoing())
@@ -834,18 +863,18 @@
}
//<cmail> useless code removed
//HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH );
- //iBarTextVisual->SetTextL( *searchText );
+ //iBarTextVisual->SetTextL( *searchText );
//CleanupStack::PopAndDestroy( searchText );
//</cmail>
TVwsViewId viewId = TVwsViewId( KFSEmailUiUid, MailListId );
- TMailListActivationData tmp;
+ TMailListActivationData tmp;
if ( iMsgDataCouldBeChanged )
{
tmp.iRequestRefresh = ETrue;
iMsgDataCouldBeChanged = EFalse; // List starts a new search
- }
- const TPckgBuf<TMailListActivationData> pkgOut( tmp );
- iAppUi.ReturnToPreviousViewL( pkgOut );
+ }
+ const TPckgBuf<TMailListActivationData> pkgOut( tmp );
+ iAppUi.ReturnToPreviousViewL( pkgOut );
}
}
break;
@@ -860,7 +889,7 @@
if ( iSearchList->Count() )
{
iMsgDataCouldBeChanged = ETrue;
- ReplyL( NULL ); // Function will check marked/highlighted msg
+ ReplyL( NULL ); // Function will check marked/highlighted msg
}
}
break;
@@ -881,7 +910,7 @@
iMsgDataCouldBeChanged = ETrue;
ForwardL( NULL ); // Function will check marked/highlighted msg
}
- }
+ }
break;
case EFsEmailUiCmdGoToTop:
{
@@ -933,36 +962,36 @@
{
if ( iSearchList->Count() )
{
- OpenHighlightedMailL();
+ OpenHighlightedMailL();
}
}
- break;
+ break;
case EFsEmailUiCmdNewSearch:
case EFsEmailUiCmdSearch:
{
- LaunchSearchDialogL();
+ LaunchSearchDialogL();
}
- break;
+ break;
case EFsEmailUiCmdStopSearch:
{
StopSearchL();
}
- break;
+ break;
case EFsEmailUiCmdMessageDetails:
{
if ( iSearchList->Count() )
{
CFSEmailUiMailListModelItem* item =
- static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
+ static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
CFSMailMessage& msg = item->MessagePtr();
-
+
TMsgDetailsActivationData msgDetailsData;
msgDetailsData.iMailBoxId = msg.GetMailBoxId();
msgDetailsData.iFolderId = msg.GetFolderId();
msgDetailsData.iMessageId = msg.GetMessageId();
-
+
const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
- iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning, pkgOut);
+ iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning, pkgOut);
}
}
break;
@@ -970,27 +999,27 @@
{
TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
}
- break;
+ break;
case EFsEmailUiCmdActionsCallSender:
{
if ( iSearchList->Count() )
{
- CallToSenderL();
+ CallToSenderL();
}
}
break;
case EFsEmailUiCmdActionsAddContact:
{
- if ( iSearchList->Count() )
+ if ( iSearchList->Count() )
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
CFSMailAddress* fromAddress = item->MessagePtr().GetSender();
TDesC* emailAddress(0);
if ( fromAddress )
{
- emailAddress = &fromAddress->GetEmailAddress();
+ emailAddress = &fromAddress->GetEmailAddress();
}
if ( emailAddress && emailAddress->Length() )
{
@@ -998,19 +1027,19 @@
//Query to "update existing" or "Create new" --> EFALSE = user choosed "cancel"
if ( CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddtoContactsQueryL( aType ) )
{
- CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL(
- *emailAddress, EContactUpdateEmail, aType, this );
- }
+ CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL(
+ *emailAddress, EContactUpdateEmail, aType, this );
+ }
}
}
}
- }
+ }
break;
case EFsEmailUiCmdMarkAsReadUnreadToggle:
{
if ( iSearchList->Count() )
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
if ( item && item->ModelItemType() == ETypeMailItem )
{
@@ -1041,37 +1070,55 @@
case EFsEmailUiCmdCalActionsDecline:
case EFsEmailUiCmdCalRemoveFromCalendar:
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
- if ( item && item->ModelItemType() == ETypeMailItem &&
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ if ( item && item->ModelItemType() == ETypeMailItem &&
item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
{
ChangeReadStatusOfHighlightedL( ETrue );
- iAppUi.MailViewer().HandleMrCommandL( aCommand,
+ iAppUi.MailViewer().HandleMrCommandL( aCommand,
iAppUi.GetActiveMailbox()->GetId(),
item->MessagePtr().GetFolderId(),
item->MessagePtr().GetMessageId() );
- }
+ }
}
- break;
+ break;
// <cmail> Prevent Download Manager opening with attachments
// case EFsEmailUiCmdDownloadManager:
// {
// if (iSearchOngoing)
// {
// StopSearchL();
-// }
-// iAppUi.EnterFsEmailViewL( DownloadManagerViewId );
-// }
+// }
+// iAppUi.EnterFsEmailViewL( DownloadManagerViewId );
+// }
// break;
// </cmail>
case EFsEmailUiCmdReadEmail:
{
iAppUi.StartReadingEmailsL();
- }
+ }
break;
default:
break;
- }
+ }
+
+ // Check if the focus needs to be removed after selecting an command from
+ // the stylus popup menu.
+ if ( ( iStylusPopUpMenuVisible ) &&
+ ( aCommand == KErrCancel ||
+ aCommand == EFsEmailUiCmdActionsDelete ||
+ aCommand == EFsEmailUiCmdMarkAsRead ||
+ aCommand == EFsEmailUiCmdMarkAsUnread ||
+ aCommand == EFsEmailUiCmdActionsMove ||
+ aCommand == EFsEmailUiCmdMarkUnmarkToggle ) )
+ {
+ // We end up here if the user selects an option from the pop up menu
+ // or exits the menu by tapping outside of it's area.
+ // Remove the focus from a list item if an item is focused.
+ iStylusPopUpMenuVisible = EFalse;
+ iAppUi.SetFocusVisibility( EFalse );
+ }
+
}
@@ -1094,7 +1141,7 @@
if ( iSearchOngoing )
{
StopSearchL();
- }
+ }
//<cmail> make list and header visible by showing control group
else if( !iListAddedToControlGroup )
{
@@ -1105,15 +1152,15 @@
iSearchList->SetScrollbarVisibilityL( EFsScrollbarAuto );
//</cmail>
// Set searching text
- HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCHING );
+ HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCHING );
HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + KSpace().Length() );
finalText->Des().Append( *searchText );
finalText->Des().Append( KSpace );
- finalText->Des().Append( *iLatestSearchText );
- iBarTextVisual->SetTextL( *finalText );
- CleanupStack::PopAndDestroy( finalText );
- CleanupStack::PopAndDestroy( searchText );
- StartSearchL();
+ finalText->Des().Append( *iLatestSearchText );
+ iBarTextVisual->SetTextL( *finalText );
+ CleanupStack::PopAndDestroy( finalText );
+ CleanupStack::PopAndDestroy( searchText );
+ StartSearchL();
}
return ret;
}
@@ -1147,7 +1194,7 @@
else
{
iListMode = EListControlTypeDoubleLinePreviewOn;
- }
+ }
}
}
else
@@ -1156,13 +1203,22 @@
iListMode = EListControlTypeDoubleLinePreviewOff;
}
}
-
-
+
+
TBool CFSEmailUiSearchListVisualiser::OfferEventL(const TAlfEvent& aEvent)
{
FUNC_LOG;
TBool result(EFalse);
-
+ // On KeyUp of EStdKeyYes usually Call application is called - prevent it if call for contact was previously called
+ if ( iConsumeStdKeyYes_KeyUp && aEvent.IsKeyEvent() && (aEvent.Code() == EEventKeyUp ))
+ {
+ iConsumeStdKeyYes_KeyUp = EFalse; // in case call button was consumed elsewhere first key up enables calling Call application
+ if ( EStdKeyYes == aEvent.KeyEvent().iScanCode)
+ {
+ result = ETrue; // consume not to switch to Call application when call to contact was processed
+ }
+ }
+
if ( aEvent.IsKeyEvent() && aEvent.Code() == EEventKey )
{
TInt scanCode = aEvent.KeyEvent().iScanCode;
@@ -1186,7 +1242,7 @@
{
return ETrue;
}
-
+
}
switch ( scanCode )
{
@@ -1196,32 +1252,24 @@
{
if ( iSearchList->Count() )
{
- OpenHighlightedMailL();
+ OpenHighlightedMailL();
}
- result = ETrue;
+ result = ETrue;
}
break;
case EStdKeyYes:
{
if ( iSearchList->Count() )
{
- CallToSenderL();
+ result = CallToSenderL();
+ iConsumeStdKeyYes_KeyUp = result;
}
}
break;
- case EStdKeyRightArrow:
- {
- if ( iSearchList->Count() )
- {
- LaunchActionMenuL();
- }
- result = ETrue;
- }
- break;
default:
{
// check keyboard shortcuts:
- TInt command =
+ TInt command =
iAppUi.ShortcutBinding().CommandForShortcutKey( aEvent.KeyEvent(),
CFSEmailUiShortcutBinding::EContextSearchResults );
if ( command >= 0 )
@@ -1237,8 +1285,8 @@
{
iSearchList->TreeControl()->OfferEventL(aEvent);
}
-
- return result;
+
+ return result;
}
@@ -1251,20 +1299,20 @@
SetSearchListLayoutAnchors();
iScreenAnchorLayout->UpdateChildrenLayout();
iSearchListLayout->UpdateChildrenLayout();
- // Set bar text color from skin
+ // Set bar text color from skin
if ( iBarTextVisual )
{
//<cmail>
SetHeaderAttributesL();
/*TRgb barTextColor( KRgbBlack );
- AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
+ AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
barTextColor, KAknsIIDFsTextColors, EAknsCIFsTextColorsCG10 );
iBarTextVisual->SetColor( barTextColor );*/
//</cmail>
}
RefreshL();
//iSearchTreeListVisualizer->HideList();
- iSearchTreeListVisualizer->ShowListL();
+ iSearchTreeListVisualizer->ShowListL();
}
}
@@ -1275,39 +1323,39 @@
// The anchor layout mirrors itself automatically when necessary.
// There's no need to mirror anything manually here.
-
+
// BAR BACGROUND IMAGE
TRect contBarRect = iAppUi.LayoutHandler()->GetControlBarRect();
TPoint& tl( contBarRect.iTl );
- iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( tl.iX, tl.iY ));
TPoint& br( contBarRect.iBr );
- iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( br.iX, br.iY ));
-
+
// TEXT
TRect textRect = iAppUi.LayoutHandler()->GetSearchListHeaderTextLayout().TextRect();
tl = textRect.iTl;
- iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( tl.iX, tl.iY ));
br = textRect.iBr;
- iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint( br.iX, br.iY ));
TRect listRect = iAppUi.LayoutHandler()->GetListRect( ETrue );
- iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint(listRect.iTl.iX, listRect.iTl.iY));
- iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2,
+ iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2,
EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
TAlfTimedPoint(listRect.iBr.iX, listRect.iBr.iY));
@@ -1320,24 +1368,24 @@
TFSMailMsgId msgId; // constructs null ID
if ( 0 <= aItemIdx && aItemIdx < iModel->Count() )
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx));
if ( item->ModelItemType() == ETypeMailItem )
{
msgId = item->MessagePtr().GetMessageId();
}
}
-
+
return msgId;
}
-
+
TFSMailMsgId CFSEmailUiSearchListVisualiser::MsgIdFromListId( TFsTreeItemId aListId ) const
{
FUNC_LOG;
TFSMailMsgId msgId;
for ( TInt i=0; i<iModel->Count();i++)
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
if ( item->ModelItemType() == ETypeMailItem &&
aListId == item->CorrespondingListId() )
@@ -1345,7 +1393,7 @@
msgId = item->MessagePtr().GetMessageId();
break;
}
- }
+ }
return msgId;
}
@@ -1355,17 +1403,17 @@
CFSMailMessage* msgPtr(NULL);
for ( TInt i=0; i<iModel->Count();i++)
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
if ( aListId == item->CorrespondingListId() )
{
msgPtr = &item->MessagePtr();
}
}
- return *msgPtr;
+ return *msgPtr;
}
-
- // Item data and visualiser helper functions
+
+ // Item data and visualiser helper functions
MFsTreeItemData* CFSEmailUiSearchListVisualiser::ItemDataFromItemId( TFsTreeItemId aItemId )
{
FUNC_LOG;
@@ -1380,7 +1428,7 @@
}
return itemData;
}
-
+
MFsTreeItemVisualizer* CFSEmailUiSearchListVisualiser::ItemVisualiserFromItemId( TFsTreeItemId aItemId )
{
FUNC_LOG;
@@ -1401,10 +1449,10 @@
{
FUNC_LOG;
TInt idx = KErrNotFound;
-
+
for ( TInt i=0; i<iModel->Count() ; i++ )
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
if ( item->ModelItemType() == ETypeMailItem &&
aMessageId == item->MessagePtr().GetMessageId() )
@@ -1412,49 +1460,49 @@
idx = i;
break;
}
- }
-
+ }
+
return idx;
}
-
+
TInt CFSEmailUiSearchListVisualiser::NextMessageIndex( TInt aCurMsgIdx ) const
{
FUNC_LOG;
TInt idx = KErrNotFound;
-
+
for ( TInt i=aCurMsgIdx+1 ; i<iModel->Count() ; i++ )
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
if ( item && item->ModelItemType() == ETypeMailItem )
{
idx = i;
break;
}
- }
-
+ }
+
return idx;
}
-
+
TInt CFSEmailUiSearchListVisualiser::PreviousMessageIndex( TInt aCurMsgIdx ) const
{
FUNC_LOG;
TInt idx = KErrNotFound;
-
+
if ( aCurMsgIdx < iModel->Count() )
{
for ( TInt i=aCurMsgIdx-1 ; i>=0 ; i-- )
{
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
if ( item && item->ModelItemType() == ETypeMailItem )
{
idx = i;
break;
}
- }
+ }
}
-
+
return idx;
}
@@ -1465,29 +1513,29 @@
if (iSearchOngoing)
{
StopSearchL();
- }
-
+ }
+
CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
if ( item->ModelItemType() == ETypeMailItem )
{
// First make sure that the highlighted message really exists in the store
- // Get confirmed msg ptr
+ // Get confirmed msg ptr
CFSMailMessage* confirmedMsgPtr(0);
- TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
+ TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
item->MessagePtr().GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ) );
if ( confirmedMsgPtr && err == KErrNone )
{
- CFSMailFolder* highlightedMsgFolder =
+ CFSMailFolder* highlightedMsgFolder =
iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), confirmedMsgPtr->GetFolderId() );
- CleanupStack::PushL( highlightedMsgFolder );
+ CleanupStack::PushL( highlightedMsgFolder );
TInt msgFolderType = highlightedMsgFolder->GetFolderType();
TFSMailMsgId highlightedMsgFolderId = highlightedMsgFolder->GetFolderId();
- CleanupStack::PopAndDestroy( highlightedMsgFolder );
+ CleanupStack::PopAndDestroy( highlightedMsgFolder );
// Pointer confirmed, store Id and delete not needed anymore
TFSMailMsgId confirmedId = confirmedMsgPtr->GetMessageId();
delete confirmedMsgPtr;
-
+
// Open to editor from drafts
if ( msgFolderType == EFSDraftsFolder )
{
@@ -1496,7 +1544,7 @@
params.iActivatedExternally = EFalse;
params.iMsgId = confirmedId;
params.iFolderId = highlightedMsgFolderId;
- iAppUi.LaunchEditorL( KEditorCmdOpen, params );
+ iAppUi.LaunchEditorL( KEditorCmdOpen, params );
}
else if ( msgFolderType == EFSOutbox )
{
@@ -1504,19 +1552,19 @@
}
else
{
- THtmlViewerActivationData tmp;
+ THtmlViewerActivationData tmp;
tmp.iMailBoxId = iAppUi.GetActiveMailbox()->GetId();
tmp.iMessageId = confirmedId;
- tmp.iFolderId = highlightedMsgFolderId;
-
- const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp );
- ChangeReadStatusOfHighlightedL( ETrue );
- iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut );
- }
+ tmp.iFolderId = highlightedMsgFolderId;
+
+ const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp );
+ ChangeReadStatusOfHighlightedL( ETrue );
+ iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut );
+ }
}
else if ( err == KErrNotFound )
{
- TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
+ TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
}
}
}
@@ -1528,13 +1576,13 @@
FUNC_LOG;
DoReplyForwardL( KEditorCmdReply, aMsgPtr );
}
-
+
void CFSEmailUiSearchListVisualiser::ReplyAllL( CFSMailMessage* aMsgPtr )
{
FUNC_LOG;
DoReplyForwardL( KEditorCmdReplyAll, aMsgPtr );
}
-
+
void CFSEmailUiSearchListVisualiser::ForwardL( CFSMailMessage* aMsgPtr )
{
FUNC_LOG;
@@ -1548,14 +1596,14 @@
if ( iSearchOngoing )
{
StopSearchL();
- }
-
+ }
+
if ( iModel->Count() )
{
CFSMailMessage* messagePointer = aMsgPtr;
if ( !messagePointer )
{
- RFsTreeItemIdList markedEntries;
+ RFsTreeItemIdList markedEntries;
iSearchList->GetMarkedItemsL( markedEntries );
TInt markedCount = markedEntries.Count();
if ( markedCount == 0 )
@@ -1570,19 +1618,19 @@
else if ( markedCount == 1)
{
messagePointer = &MsgPtrFromListId( markedEntries[0] );
- }
+ }
}
if ( messagePointer )
{
// No reply/Forward for calendar messages, at least not in 1.0
- if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) )
+ if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) )
{
TEditorLaunchParams params;
params.iMailboxId = iAppUi.GetActiveMailboxId();
- params.iActivatedExternally = EFalse;
+ params.iActivatedExternally = EFalse;
params.iMsgId = messagePointer->GetMessageId();
- iAppUi.LaunchEditorL( aMode, params );
- }
+ iAppUi.LaunchEditorL( aMode, params );
+ }
}
}
}
@@ -1591,7 +1639,7 @@
{
FUNC_LOG;
iSearchCount++;
-
+
// Reset previous results before starting new search
// <cmail> fixed CS high cat. finding
ResetResultListL();
@@ -1599,12 +1647,12 @@
while ( !lex.Eos() )
{
HBufC* token = lex.NextToken().AllocLC();
-
+
iSearchStrings.AppendL( token );
-
+
CleanupStack::Pop( token );
}
-
+
TFSMailSortCriteria sortCriteria;
sortCriteria.iField = EFSMailSortByDate;
sortCriteria.iOrder = EFSMailDescending;
@@ -1612,7 +1660,7 @@
// Model and list is set to be empty, set also MSK to empty
SetMskL();
// Initialisr TextSearcher
-
+
// Start search.
iMailBox->SearchL( iSearchStrings, sortCriteria, *this );
}
@@ -1622,25 +1670,31 @@
FUNC_LOG;
iSearchOngoing = EFalse;
if ( iMailBox )
- {
+ {
iMailBox->CancelSearch();
- }
+ }
HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH_RESULTS );
HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 );
finalText->Des().Append( *searchText );
finalText->Des().Append( KSpace );
- finalText->Des().Append( *iLatestSearchText );
- iBarTextVisual->SetTextL( *finalText );
+ finalText->Des().Append( *iLatestSearchText );
+ iBarTextVisual->SetTextL( *finalText );
CleanupStack::PopAndDestroy( finalText );
- CleanupStack::PopAndDestroy( searchText );
+ CleanupStack::PopAndDestroy( searchText );
+ iRequiredSearchPriority = KStandardSearchPriority; // <cmail> return back
}
void CFSEmailUiSearchListVisualiser::ResetResultListL()
{
- // <cmail> fixed CS high cat. finding
FUNC_LOG;
- iModel->Reset();
- iSearchList->RemoveAllL();
+ if( iModel )
+ {
+ iModel->Reset();
+ }
+ if( iSearchList )
+ {
+ iSearchList->RemoveAllL();
+ }
iSearchListItemArray.Reset();
iSearchStrings.ResetAndDestroy();
}
@@ -1648,7 +1702,7 @@
void CFSEmailUiSearchListVisualiser::MatchFoundL( CFSMailMessage* aMatchMessage )
{
FUNC_LOG;
-
+
if ( !iSearchList->IsFocused() )
{
iSearchList->SetFocusedL( ETrue );
@@ -1658,29 +1712,29 @@
// This is done because it seems that matched message objects seems to be different
// in some protocols than original messages
CleanupStack::PushL( aMatchMessage );
- CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
+ CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
aMatchMessage->GetFolderId(), aMatchMessage->GetMessageId(), EFSMsgDataEnvelope );
CleanupStack::PopAndDestroy( aMatchMessage );
-
+
if ( confirmedMsgPtr ) // Append item into model and list if msg pointer was confirmed
{
// Append to model
- CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem);
+ CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem);
iModel->AppendL(newItem);
// Append to list
TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
- CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender();
- TDesC* diplayName(0);
+ CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender();
+ TDesC* diplayName = NULL;
if ( fromAddress )
{
- diplayName = &fromAddress->GetDisplayName();
+ diplayName = &fromAddress->GetDisplayName();
}
-
+
// Set first line of data
- HBufC* dispName(0);
+ HBufC* dispName = NULL;
if ( fromAddress && diplayName && diplayName->Length() != 0 )
{
dispName = HBufC::NewLC( diplayName->Length() );
@@ -1694,79 +1748,67 @@
else
{
dispName = HBufC::NewLC( 0 );
- dispName->Des().Append( KNullDesC );
+ dispName->Des().Append( KNullDesC );
}
-
+
// Drop out unwanted characters from display name such as <> and ""
// And set display name data
if ( dispName )
{
- TFsEmailUiUtility::StripDisplayName( *dispName );
+ TFsEmailUiUtility::StripDisplayName( *dispName );
}
- // Create item data and
- CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL();
+ // Create item data and
+ CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL();
- itemData->SetDataL( *dispName );
+ itemData->SetDataL( *dispName );
CleanupStack::PopAndDestroy( dispName );
-
+
// Set time text data
- HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse );
- itemData->SetDateTimeDataL ( *timeText );
+ HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse );
+ itemData->SetDateTimeDataL ( *timeText );
CleanupStack::PopAndDestroy();
// Set second line of data
-
HBufC* subjectText = TFsEmailUiUtility::CreateSubjectTextLC( confirmedMsgPtr );
-
-
- itemData->SetSecondaryDataL( *subjectText);
-
-
-
-
+ itemData->SetSecondaryDataL( *subjectText );
CleanupStack::PopAndDestroy( subjectText );
-
// Set message icon
- CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() );
+ CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() );
itemData->SetIcon ( *itemTexture );
CFsTreePlainTwoLineItemVisualizer* itemVisualizer = CFsTreePlainTwoLineItemVisualizer::NewL(*iSearchList->TreeControl());
-
-
- itemVisualizer->SetExtendable( ETrue );
+
+ itemVisualizer->SetExtendable( ETrue );
TInt itemHeight = iAppUi.LayoutHandler()->OneLineListItemHeight();
- itemVisualizer->SetSize(TSize(screenRect.Width(), itemHeight));
- itemVisualizer->SetExtendedSize(TSize(screenRect.Width(), 2*itemHeight));
-
- // Set menu icon
- itemVisualizer->SetFlags( itemVisualizer->Flags() | KFsTreeListItemHasMenu );
-
+ itemVisualizer->SetSize( TSize( screenRect.Width(), itemHeight ) );
+ itemVisualizer->SetExtendedSize( TSize( screenRect.Width(), 2*itemHeight ) );
+
// Set font height
- itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
+ itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
// Set font bolding
if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ) )
- {
+ {
itemVisualizer->SetTextBold( EFalse );
}
else
{
itemVisualizer->SetTextBold( ETrue );
- }
+ }
- // Set correct skin text colors for the list items
+ // Set correct skin text colors for the list items
TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
itemVisualizer->SetFocusedStateTextColor( focusedColor );
itemVisualizer->SetNormalStateTextColor( normalColor );
-
+
switch ( iListMode )
{
case EListControlTypeDoubleLinePreviewOn:
case EListControlTypeSingleLinePreviewOn:
- itemVisualizer->SetPreviewPaneOn( ETrue );
- itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) );
+ itemVisualizer->SetPreviewPaneOn( ETrue );
+ itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) );
// fall through
case EListControlTypeDoubleLinePreviewOff:
case EListControlTypeSingleLinePreviewOff:
@@ -1778,7 +1820,7 @@
}
// Update initial preview pane text for items if needed
- if ( iListMode == EListControlTypeSingleLinePreviewOn ||
+ if ( iListMode == EListControlTypeSingleLinePreviewOn ||
iListMode == EListControlTypeDoubleLinePreviewOn )
{
UpdatePreviewPaneTextForItemL( itemData, confirmedMsgPtr );
@@ -1790,35 +1832,35 @@
if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
{
itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
- itemVisualizer->SetFlagIconVisible( ETrue );
+ itemVisualizer->SetFlagIconVisible( ETrue );
}
else if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) )
{
itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) );
- itemVisualizer->SetFlagIconVisible( ETrue );
+ itemVisualizer->SetFlagIconVisible( ETrue );
}
else
{
- itemVisualizer->SetFlagIconVisible( EFalse );
- }
+ itemVisualizer->SetFlagIconVisible( EFalse );
+ }
}
else
{
itemVisualizer->SetFlagIconVisible( EFalse );
}
- TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID );
+ TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID );
if (iSearchList->FocusedItem() == KFsTreeNoneID)
{
iSearchList->SetFocusedItemL(itemId);
}
-
+
SSearchListItem searchListItem;
searchListItem.iSearchListItemId = itemId;
searchListItem.iTreeItemData = itemData;
- searchListItem.iTreeItemVisualiser = itemVisualizer;
+ searchListItem.iTreeItemVisualiser = itemVisualizer;
iSearchListItemArray.AppendL( searchListItem );
- newItem->AddCorrespondingListId( itemId );
+ newItem->AddCorrespondingListId( itemId );
if ( iSearchList->Count() == 1 ) // Call only once, temp fix because of error in generic
{
@@ -1830,14 +1872,14 @@
else
{
// Set the extendedability and extended size
- iSearchTreeListVisualizer->SetItemsAlwaysExtendedL( EFalse );
- }
-
+ iSearchTreeListVisualizer->SetItemsAlwaysExtendedL( EFalse );
+ }
+
// Set msk to "Open when first is found".
SetMskL();
- }
+ }
}
-
+
}
// ---------------------------------------------------------------------------
@@ -1853,7 +1895,7 @@
if ( iFirstStartCompleted ) // Safety
{
CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox();
- if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled
+ if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled
{
if ( iModel && iModel->Count() && aEvent == TFSEventMailDeleted )
{
@@ -1861,7 +1903,7 @@
if ( removedEntries && removedEntries->Count() )
{
RemoveMsgItemsFromListIfFoundL( *removedEntries );
- }
+ }
}
else if ( iModel && iModel->Count() && aEvent == TFSEventMailChanged )
{
@@ -1870,16 +1912,16 @@
// Get ID of the folder that this cahnge concerns.
TFSMailMsgId* parentFolderId = static_cast<TFSMailMsgId*>( aParam2 );
for ( TInt i=0 ; i < entries->Count() ; i++)
- {
+ {
TFSMailMsgId entryId = (*entries)[i];
- CFSMailMessage* confirmedMsgPtr(0);
- TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
+ CFSMailMessage* confirmedMsgPtr(0);
+ TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
*parentFolderId, entryId, EFSMsgDataEnvelope ) );
if ( confirmedMsgPtr && err == KErrNone )
{
CleanupStack::PushL( confirmedMsgPtr );
UpdateMsgIconAndBoldingL( confirmedMsgPtr );
- CleanupStack::PopAndDestroy( confirmedMsgPtr );
+ CleanupStack::PopAndDestroy( confirmedMsgPtr );
}
}
}
@@ -1891,7 +1933,7 @@
// RemoveMsgItemsFromListIfFoundL
// Message removing from list if found. Does not panic or return found status.
// ---------------------------------------------------------------------------
-//
+//
void CFSEmailUiSearchListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds )
{
FUNC_LOG;
@@ -1905,12 +1947,12 @@
TInt idx = ItemIndexFromMessageId( entryId );
if ( idx >= 0 )
{
- iSearchList->RemoveL( iSearchListItemArray[idx].iSearchListItemId ); // remove from list
- iSearchListItemArray.Remove( idx ); // remove from internal array.
+ iSearchList->RemoveL( iSearchListItemArray[idx].iSearchListItemId ); // remove from list
+ iSearchListItemArray.Remove( idx ); // remove from internal array.
iModel->RemoveAndDestroy( idx ); // Remove from model
- }
+ }
}
- }
+ }
}
}
@@ -1923,7 +1965,7 @@
{
FUNC_LOG;
// Preview pane data update
- if ( aMsgPtr && ( iListMode == EListControlTypeSingleLinePreviewOn ||
+ if ( aMsgPtr && ( iListMode == EListControlTypeSingleLinePreviewOn ||
iListMode == EListControlTypeDoubleLinePreviewOn ) )
{
CFSMailMessagePart* textPart = aMsgPtr->PlainTextBodyPartL();
@@ -1935,12 +1977,12 @@
HBufC* plainTextData16 = HBufC::NewLC( previewSize );
TPtr textPtr = plainTextData16->Des();
- textPart->GetContentToBufferL( textPtr, 0 ); // Zero is start offset
- // Crop out line feed, paragraph break, and tabulator
+ textPart->GetContentToBufferL( textPtr, 0 ); // Zero is start offset
+ // Crop out line feed, paragraph break, and tabulator
TFsEmailUiUtility::FilterListItemTextL( textPtr );
aItemData->SetPreviewPaneDataL( *plainTextData16 );
- CleanupStack::PopAndDestroy( plainTextData16 );
+ CleanupStack::PopAndDestroy( plainTextData16 );
}
// Else display message size in preview pane
@@ -1949,7 +1991,7 @@
TUint contentSize = aMsgPtr->ContentSize();
HBufC* sizeDesc = TFsEmailUiUtility::CreateSizeDescLC( contentSize );
HBufC* msgSizeText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_PREV_PANE_MSG_SIZE, *sizeDesc );
- aItemData->SetPreviewPaneDataL( *msgSizeText );
+ aItemData->SetPreviewPaneDataL( *msgSizeText );
CleanupStack::PopAndDestroy( msgSizeText );
CleanupStack::PopAndDestroy( sizeDesc );
}
@@ -1965,10 +2007,11 @@
HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 );
finalText->Des().Append( *searchText );
finalText->Des().Append( KSpace );
- finalText->Des().Append( *iLatestSearchText );
- iBarTextVisual->SetTextL( *finalText );
+ finalText->Des().Append( *iLatestSearchText );
+ iBarTextVisual->SetTextL( *finalText );
CleanupStack::PopAndDestroy( finalText );
- CleanupStack::PopAndDestroy( searchText );
+ CleanupStack::PopAndDestroy( searchText );
+ iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
}
@@ -1977,9 +2020,9 @@
FUNC_LOG;
if ( iSearchList->Count() )
{
- CFSEmailUiMailListModelItem* selectedItem =
+ CFSEmailUiMailListModelItem* selectedItem =
static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
-
+
TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
if ( (wasRead && !aRead) || (!wasRead && aRead) )
{
@@ -2001,22 +2044,22 @@
UpdateMsgIconAndBoldingL( HighlightedIndex() );
}
}
- }
-
+ }
+
void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL()
{
FUNC_LOG;
if ( iModel && iModel->Count() ) // Needed safety check
{
TInt highlightedIndex = HighlightedIndex();
- CFSEmailUiMailListModelItem* selectedItem =
- static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
+ CFSEmailUiMailListModelItem* selectedItem =
+ static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
if ( selectedItem->ModelItemType() == ETypeMailItem )
{
- CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
+ CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
if ( msgPtr )
{
- CFSMailFolder* folderPtr =
+ CFSMailFolder* folderPtr =
iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), msgPtr->GetFolderId() );
CleanupStack::PushL( folderPtr );
@@ -2024,28 +2067,28 @@
{
// Pointer is not valid anymore, msg has been delete,
// so it must be removed from the search list
- RemoveFocusedFromListL();
+ RemoveFocusedFromListL();
}
- else
+ else
{
CFSMailMessage* confirmedMsgPtr(0);
- TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
+ TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
folderPtr->GetFolderId(), msgPtr->GetMessageId(), EFSMsgDataEnvelope ) );
if ( confirmedMsgPtr && err == KErrNone)
{
CleanupStack::PushL( confirmedMsgPtr );
UpdateMsgIconAndBoldingL( confirmedMsgPtr );
- CleanupStack::PopAndDestroy( confirmedMsgPtr );
+ CleanupStack::PopAndDestroy( confirmedMsgPtr );
}
else
{
- RemoveFocusedFromListL();
+ RemoveFocusedFromListL();
}
}
-
+
CleanupStack::PopAndDestroy( folderPtr );
}
- }
+ }
}
}
@@ -2055,10 +2098,10 @@
iMsgDataCouldBeChanged = ETrue;
SSearchListItem item;
item.iSearchListItemId = iSearchList->FocusedItem();
- TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
- iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
- iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
- iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list
+ TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
+ iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
+ iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
+ iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list
}
@@ -2073,7 +2116,7 @@
{
CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) );
- if ( item && item->ModelItemType()==ETypeMailItem &&
+ if ( item && item->ModelItemType()==ETypeMailItem &&
item->MessagePtr().GetMessageId() == aMsgPtr->GetMessageId() )
{
// Update all flags
@@ -2083,12 +2126,12 @@
{
item->MessagePtr().ResetFlag( prevFlags );
item->MessagePtr().SetFlag( newFlags );
-
- // Save changed flags in internal model array
+
+ // Save changed flags in internal model array
item->MessagePtr().SaveMessageL();
iMsgDataCouldBeChanged = ETrue;
}
-
+
// Update the list item graphics
UpdateMsgIconAndBoldingL( i );
break;
@@ -2108,18 +2151,18 @@
if ( item && item->ModelItemType()==ETypeMailItem )
{
CFSMailMessage* msgPtr = &item->MessagePtr();
- CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() );
- CFsTreePlainTwoLineItemData* itemData =
+ CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() );
+ CFsTreePlainTwoLineItemData* itemData =
static_cast<CFsTreePlainTwoLineItemData*>( iSearchListItemArray[aListIndex].iTreeItemData );
- CFsTreePlainTwoLineItemVisualizer* itemVis =
- static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser );
- itemData->SetIcon( *itemTexture );
+ CFsTreePlainTwoLineItemVisualizer* itemVis =
+ static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser );
+ itemData->SetIcon( *itemTexture );
if ( msgPtr->IsFlagSet( EFSMsgFlag_Read ) )
- {
+ {
itemVis->SetTextBold( EFalse );
}
else
- {
+ {
itemVis->SetTextBold( ETrue );
}
// Set follow up flag icon correctly
@@ -2128,29 +2171,29 @@
if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
{
itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
- itemVis->SetFlagIconVisible( ETrue );
+ itemVis->SetFlagIconVisible( ETrue );
}
else if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) )
{
itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) );
- itemVis->SetFlagIconVisible( ETrue );
+ itemVis->SetFlagIconVisible( ETrue );
}
else
{
- itemVis->SetFlagIconVisible( EFalse );
- }
+ itemVis->SetFlagIconVisible( EFalse );
+ }
}
else
{
itemVis->SetFlagIconVisible( EFalse );
- }
+ }
iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[aListIndex].iSearchListItemId );
}
}
}
-
+
-// Delete messages
+// Delete messages
void CFSEmailUiSearchListVisualiser::DeleteFocusedMessageL()
{
FUNC_LOG;
@@ -2179,32 +2222,32 @@
okToDelete = TFsEmailUiUtility::ShowConfirmationQueryL( queryTextId, *msgSubject );
}
CleanupStack::PopAndDestroy( msgSubject );
-
+
if ( okToDelete )
{
iMsgDataCouldBeChanged = ETrue; // Refresh
// Delete message from framework, and perform internal housekeeping
- TFSMailMsgId msgId = messagePtr.GetMessageId();
+ TFSMailMsgId msgId = messagePtr.GetMessageId();
RArray<TFSMailMsgId> msgIds;
- msgIds.Append( msgId );
+ msgIds.Append( msgId );
TFSMailMsgId folderId = messagePtr.GetFolderId();
- TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId();
- iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds );
- msgIds.Reset();
+ TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId();
+ iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds );
+ msgIds.Reset();
SSearchListItem item;
item.iSearchListItemId = iSearchList->FocusedItem();
- TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
- iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
- iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
- iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list
- }
+ TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
+ iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
+ iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
+ iSearchList->RemoveL( iSearchList->FocusedItem() ); // remove from list
+ }
}
- }
+ }
}
// Navigation functions, used mainly from viewer
-TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId,
+TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId,
TFSMailMsgId& aFoundNextMsgId,
TFSMailMsgId& aFoundNextMsgFolderId ) const
{
@@ -2219,26 +2262,26 @@
{
ret = ETrue;
aFoundNextMsgId = MsgIdFromIndex(nextIdx);
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( nextIdx ));
if ( item->ModelItemType() == ETypeMailItem )
{
aFoundNextMsgFolderId = item->MessagePtr().GetFolderId();
- }
+ }
}
}
-
+
return ret;
}
-TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId,
+TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId,
TFSMailMsgId& aFoundPreviousMsgId,
TFSMailMsgId& aFoundPrevMsgFolderId ) const
{
FUNC_LOG;
TBool ret(EFalse);
-
+
TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
if ( curIdx >= 0 )
{
@@ -2247,15 +2290,15 @@
{
ret = ETrue;
aFoundPreviousMsgId = MsgIdFromIndex(prevIdx);
- CFSEmailUiMailListModelItem* item =
+ CFSEmailUiMailListModelItem* item =
static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( prevIdx ));
if ( item->ModelItemType() == ETypeMailItem )
{
aFoundPrevMsgFolderId = item->MessagePtr().GetFolderId();
- }
+ }
}
}
-
+
return ret;
}
@@ -2263,10 +2306,10 @@
{
FUNC_LOG;
TInt ret(KErrNotFound);
-
+
TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
TInt nextIdx = NextMessageIndex( curIdx );
-
+
if ( curIdx >= 0 && nextIdx >= 0 )
{
// Focus the new message
@@ -2278,7 +2321,7 @@
if ( ret == KErrNone )
{
OpenHighlightedMailL();
- }
+ }
return ret;
}
@@ -2286,10 +2329,10 @@
{
FUNC_LOG;
TInt ret(KErrNotFound);
-
+
TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
TInt prevIdx = PreviousMessageIndex( curIdx );
-
+
if ( curIdx >= 0 && prevIdx >= 0 )
{
// Focus the new message
@@ -2298,33 +2341,33 @@
aFoundPreviousMsgId = MsgIdFromIndex( prevIdx );
ret = KErrNone;
}
-
+
if ( ret == KErrNone )
{
OpenHighlightedMailL();
- }
+ }
return ret;
}
TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId )
{
FUNC_LOG;
- TInt ret(KErrNotFound);
-
- TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId );
+ TInt ret(KErrNotFound);
+
+ TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId );
if ( idx >= 0 )
- {
+ {
// Focus the previous message
iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[idx].iSearchListItemId );
ChangeReadStatusOfHighlightedL( ETrue );
- ret = KErrNone;
+ ret = KErrNone;
}
if ( ret == KErrNone )
{
OpenHighlightedMailL();
}
-
+
return ret;
}
@@ -2335,11 +2378,11 @@
TFSMailMsgId ret;
if ( iSearchList->Count() && iModel )
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
ret = item->MessagePtr().GetFolderId();
- }
+ }
}
return ret;
}
@@ -2350,11 +2393,11 @@
TFSMailMsgId ret;
if ( iSearchList->Count() && iModel )
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
ret = item->MessagePtr().GetMessageId();
- }
+ }
}
return ret;
}
@@ -2366,26 +2409,28 @@
// From MFsTreeListObserver
// ---------------------------------------------------------------------------
//
-void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent, const TFsTreeItemId /*aId*/ )
+void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent,
+ const TFsTreeItemId /*aId*/,
+ const TPoint& aPoint )
{
FUNC_LOG;
-
+
switch(aEvent)
{
case MFsTreeListObserver::EFsTreeListItemTouchAction:
- DoHandleActionL();
- break;
+ DoHandleActionL();
+ break;
case MFsTreeListObserver::EFsTreeListItemTouchLongTap:
if ( iSearchList->Count() )
- {
- LaunchActionMenuL();
- }
- break;
+ {
+ LaunchStylusPopupMenuL( aPoint );
+ }
+ break;
case MFsTreeListObserver::EFsTreeListItemWillGetFocused:
{
- SetMskL();
+ SetMskL();
break;
- }
+ }
case MFsTreeListObserver::EFsFocusVisibilityChange:
{
iAppUi.SetFocusVisibility( EFalse );
@@ -2394,8 +2439,8 @@
case MFsTreeListObserver::EFsTreeListItemTouchFocused:
default:
//Just ignore rest of events
- break;
- }
+ break;
+ }
}
// ---------------------------------------------------------------------------
@@ -2405,27 +2450,27 @@
void CFSEmailUiSearchListVisualiser::DoHandleActionL()
{
FUNC_LOG;
- TInt modelCount = 0;
-
+ TInt modelCount = 0;
+
if ( iModel )
{
- modelCount = iModel->Count();
+ modelCount = iModel->Count();
}
if ( modelCount ) // Safety check
{
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+ CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
if ( item && item->ModelItemType() == ETypeMailItem )
{
CFSMailMessage* messagePtr = &item->MessagePtr();
if ( messagePtr )
{
- OpenHighlightedMailL();
+ OpenHighlightedMailL();
}
}
- }
+ }
}
-//</cmail>
+//</cmail>
// ---------------------------------------------------------------------------
// From MFSEmailUiContactHandlerObserver
@@ -2437,6 +2482,7 @@
TContactHandlerCmd /*aCmd*/, const RPointerArray<CFSEmailUiClsItem>& /*aContacts*/ )
{
FUNC_LOG;
+ iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
}
// ---------------------------------------------------------------------------
@@ -2448,9 +2494,10 @@
TContactHandlerCmd /*aCmd*/, TInt /*aError*/ )
{
FUNC_LOG;
+ iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
}
-void CFSEmailUiSearchListVisualiser::CallToSenderL()
+TBool CFSEmailUiSearchListVisualiser::CallToSenderL()
{
FUNC_LOG;
CFSEmailUiMailListModelItem* item =
@@ -2462,22 +2509,25 @@
TDesC* emailAddress(0);
if ( fromAddress )
{
- emailAddress = &fromAddress->GetEmailAddress();
+ emailAddress = &fromAddress->GetEmailAddress();
}
if ( emailAddress && emailAddress->Length() )
{
CFsDelayedLoader::InstanceL()->GetContactHandlerL()->
FindAndCallToContactByEmailL( *emailAddress,
- iAppUi.GetActiveMailbox(), this, ETrue );
+ iAppUi.GetActiveMailbox(), this, ETrue );
+ iRequiredSearchPriority = KCallingSearchPriority; //decrease priority to enable search for contact
+ return ETrue; // searching started - consume keyup event
}
- }
+ }
+ return EFalse; //no calling key up will execute Call app
}
// ---------------------------------------------------------------------------
// Logic for changing msk
// ---------------------------------------------------------------------------
-//
+//
void CFSEmailUiSearchListVisualiser::SetMskL()
{
FUNC_LOG;
@@ -2485,217 +2535,15 @@
{
if ( iSearchList && iSearchList->Count() )
{
- ChangeMskCommandL( R_FSE_QTN_MSK_OPEN );
+ ChangeMskCommandL( R_FSE_QTN_MSK_OPEN );
}
else
{
- ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY );
+ ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY );
}
}
}
-
-// ---------------------------------------------------------------------------
-// LaunchActionMenuL
-// Function launches action menu based on the highlighted or marked messages
-// ---------------------------------------------------------------------------
-//
-void CFSEmailUiSearchListVisualiser::LaunchActionMenuL()
- {
- FUNC_LOG;
- if ( iModel && iModel->Count() )
- {
- // Remove old items from action menu
- CFSEmailUiActionMenu::RemoveAllL();
- // Construct item list
- RFsEActionMenuIdList itemList;
- CleanupClosePushL( itemList );
-
- CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
- // Right click action menu for calendar events
- if ( item && item->ModelItemType() == ETypeMailItem &&
- item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
- {
- TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown );
- if ( iAppUi.MrViewerInstanceL() )
- {
- // Search must be stopped, otherwise resolve will lead to crash
- if ( iSearchOngoing )
- {
- StopSearchL();
- }
- mrMethod = iAppUi.MrViewerInstanceL()->ResolveMeetingRequestMethodL( item->MessagePtr() );
- }
- switch ( mrMethod )
- {
- case EESMRMeetingRequestMethodRequest:
- itemList.AppendL( FsEActionMenuAccept );
- itemList.AppendL( FsEActionMenuTentative );
- itemList.AppendL( FsEActionMenuDecline );
- break;
- case EESMRMeetingRequestMethodCancellation:
- {
- TBool supportsRemove = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaRemoveFromCalendar );
- if( supportsRemove )
- {
- itemList.AppendL( FsEActionMenuRemoveFormCal );
- }
- break;
- }
- default:
- case EESMRMeetingRequestMethodUnknown:
- case EESMRMeetingRequestMethodResponse:
- itemList.AppendL( FsEActionMenuOpen);
- break;
- }
- }
- // Right click action menu for normal mail items
- else
- {
- itemList.AppendL( FsEActionMenuReply );
- //Get # of recipients
- TInt numRecipients(0);
- CFSMailMessage* messagePtr = &item->MessagePtr();
- if ( messagePtr )
- {
- numRecipients =TFsEmailUiUtility::CountRecepients( messagePtr );
- if ( numRecipients == 1 )
- {
- //check if the malbox ownmailaddress is same as the recipients email address. If not, then assume that the
- //email is a distribution list and we need to inc num of Recipients so that "Reply ALL" option appears in UI.
- if ( messagePtr->GetToRecipients().Count() )
- {
- if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetToRecipients()[0]->GetEmailAddress()) )
- {
- numRecipients++;
- }
- }
- if ( messagePtr->GetCCRecipients().Count() )
- {
- if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetCCRecipients()[0]->GetEmailAddress()) )
- {
- numRecipients++;
- }
- }
- if ( messagePtr->GetBCCRecipients().Count() )
- {
- if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetBCCRecipients()[0]->GetEmailAddress()) )
- {
- numRecipients++;
- }
- }
- }
-
- }
-
- if ( numRecipients > 1 )
- {
- itemList.AppendL( FsEActionMenuReplyAll );
- }
- itemList.AppendL( FsEActionMenuForward );
- }
- // Add mark as read/unread options
- if ( item->MessagePtr().IsFlagSet(EFSMsgFlag_Read) )
- {
- itemList.AppendL( FsEActionMenuMarkUnread );
- }
- else
- {
- itemList.AppendL( FsEActionMenuMarkRead );
- }
- itemList.AppendL( FsEActionMenuDelete );
-
-// <cmail> Touch
- TActionMenuCustomItemId itemId = CFSEmailUiActionMenu::ExecuteL( itemList, EFscCustom, 0, this );
-// </cmail>
- CleanupStack::PopAndDestroy( &itemList );
- HandleActionMenuCommandL( itemId );
- }
- }
-
-
-// <cmail>
-// ---------------------------------------------------------------------------
-// ActionMenuPosition
-// ---------------------------------------------------------------------------
-//
-TPoint CFSEmailUiSearchListVisualiser::ActionMenuPosition()
- {
- TAlfRealRect focusRect;
- TFsTreeItemId listItemId = iSearchList->FocusedItem();
- iSearchList->GetItemDisplayRectTarget(listItemId, focusRect);
- return focusRect.iTl;
- }
-// </cmail>
-
-
-// ---------------------------------------------------------------------------
-// HandleActionMenuCommandL
-// Action menu command callback handler
-// ---------------------------------------------------------------------------
-//
-void CFSEmailUiSearchListVisualiser::HandleActionMenuCommandL( TActionMenuCustomItemId itemId )
- {
- FUNC_LOG;
- // Map each Action Menu ID to correcponding command ID.
- TInt commandId = KErrNotFound;
-
- switch( itemId )
- {
- case FsEActionMenuOpenCalendarEvent:
- case FsEActionMenuOpen:
- commandId = EFsEmailUiCmdOpen;
- break;
- case FsEActionMenuAccept:
- commandId = EFsEmailUiCmdCalActionsAccept;
- break;
- case FsEActionMenuTentative:
- commandId = EFsEmailUiCmdCalActionsTentative;
- break;
- case FsEActionMenuDecline:
- commandId = EFsEmailUiCmdCalActionsDecline;
- break;
- case FsEActionMenuRemoveFormCal:
- commandId = EFsEmailUiCmdCalRemoveFromCalendar;
- break;
- case FsEActionMenuMarkRead:
- commandId = EFsEmailUiCmdMarkAsRead;
- break;
- case FsEActionMenuMarkUnread:
- commandId = EFsEmailUiCmdMarkAsUnread;
- break;
- case FsEActionMenuDelete:
- commandId = EFsEmailUiCmdActionsDelete;
- break;
- case FsEActionMenuReply:
- commandId = EFsEmailUiCmdActionsReply;
- break;
- case FsEActionMenuReplyAll:
- commandId = EFsEmailUiCmdActionsReplyAll;
- break;
- case FsEActionMenuForward:
- commandId = EFsEmailUiCmdActionsForward;
- break;
- case FsEActionMenuMove:
- commandId = EFsEmailUiCmdActionsMoveMessage;
- break;
- case FsEActionMenuMoveToDrafts:
- commandId = EFsEmailUiCmdActionsMoveToDrafts;
- break;
- case FsEActionMenuDismissed:
- commandId = KErrCancel;
- break;
- default:
- __ASSERT_DEBUG( EFalse, Panic( EFSEmailUiUnexpectedValue ) );
- break;
- }
-
- if ( commandId >= 0 )
- {
- HandleCommandL( commandId );
- }
- }
-
//<cmail>
// ---------------------------------------------------------------------------
// CFSEmailUiSearchListVisualiser::SetHeaderTextAttributesL()
@@ -2706,7 +2554,7 @@
//
void CFSEmailUiSearchListVisualiser::SetHeaderAttributesL()
{
- // Set bar text color/style from skin
+ // Set bar text color/style from skin
iBarTextVisual->SetTextStyle( iAppUi.LayoutHandler()->
FSTextStyleFromLayoutL( AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( 0 ) ).Id() );
iBarTextVisual->SetColor( iAppUi.LayoutHandler()->
@@ -2727,5 +2575,46 @@
+// ---------------------------------------------------------------------------
+// LaunchStylusPopupMenuL
+// Function launches avkon stylus popup menu based for the tapped item
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiSearchListVisualiser::LaunchStylusPopupMenuL( const TPoint& aPoint )
+ {
+ // Verify that the item's type is correct
+ CFSEmailUiMailListModelItem* item =
+ static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
+ if ( item && ( item->ModelItemType() == ETypeMailItem ) )
+ {
+ // Add mark as read / unread options
+ const CFSMailMessage& message = item->MessagePtr();
+
+ TBool messageRead( message.IsFlagSet( EFSMsgFlag_Read ) );
+ iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, !messageRead );
+ iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, messageRead );
+
+ // Set the position for the popup
+ iStylusPopUpMenu->SetPosition( aPoint );
+
+ // Display the popup and set the flag to indicate that the menu was
+ // launched so that list focus stays visible.
+ iStylusPopUpMenu->ShowMenu();
+ iStylusPopUpMenuVisible = ETrue;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ClientRequiredSearchPriority
+// the email searching priority may be decreased to enable searching for contacts
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiSearchListVisualiser::ClientRequiredSearchPriority( TInt *apRequiredSearchPriority )
+ {
+ FUNC_LOG;
+ if (iRequiredSearchPriority != (*apRequiredSearchPriority))
+ *apRequiredSearchPriority = iRequiredSearchPriority;
+ return;
+ }
// End of file