emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp
changeset 2 5253a20d2a1e
parent 0 8466d47a6819
child 4 e7aa27f58ae1
--- a/emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp	Thu Jan 07 12:38:38 2010 +0200
+++ b/emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp	Mon Jan 18 20:08:26 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2007 - 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"
@@ -15,7 +15,6 @@
 *
 */
 
-
 // SYSTEM INCLUDES
 #include "emailtrace.h"
 #include <aknViewAppUi.h>
@@ -30,19 +29,15 @@
 #include <akncontext.h>
 #include <akntitle.h>
 #include <FreestyleEmailUi.rsg>
-//<cmail>
 #include <featmgr.h>
-//</cmail>
+#include <aknstyluspopupmenu.h>
 
 #include "CFSMailCommon.h"
 #include "CFSMailBox.h"
 #include "ESMailSettingsPlugin.h"
 #include "ESMailSettingsPluginUids.hrh"
-//</cmail>
 #include <gsfwviewuids.h> // Uids for general settings activation
-// <cmail> 
 #include <csxhelp/cmail.hlp.hrh>
-// </cmail>
 
 // LOCAL INCLUDES
 #include "FreestyleEmailUiUtilities.h"
@@ -61,15 +56,16 @@
 // code that could leave.
 // ---------------------------------------------------------------------------
 //
-CFsEmailSettingsListView::CFsEmailSettingsListView( CAlfControlGroup& aControlGroup, 
-        CFreestyleEmailUiAppUi& aAppUi, CFSMailClient& aMailClient  )
-    : CFsEmailUiViewBase( aControlGroup, aAppUi ), iMailClient( aMailClient )
+CFsEmailSettingsListView::CFsEmailSettingsListView( 
+	CAlfControlGroup& aControlGroup,
+	CFreestyleEmailUiAppUi& aAppUi,
+	CFSMailClient& aMailClient  )
+    : CFsEmailUiViewBase( aControlGroup, aAppUi ),
+      iMailClient( aMailClient ),
+      iMailboxSettings( EFalse )
 	{
     FUNC_LOG;
-
 	iFsEmailSettingsList = NULL;
-	iMailboxSettings = EFalse;
-
 	}
 
 // ---------------------------------------------------------------------------
@@ -79,11 +75,18 @@
 CFsEmailSettingsListView::~CFsEmailSettingsListView()
 	{
     FUNC_LOG;
+
    	if ( iAsyncCallback )
 		{
 		iAsyncCallback->Cancel();
 		delete iAsyncCallback;
 		}
+
+   	if ( iStylusPopUpMenu )
+   		{
+   		delete iStylusPopUpMenu;
+   		iStylusPopUpMenu = NULL;
+   		}
 	}
 
 
@@ -101,7 +104,8 @@
 	{
     FUNC_LOG;
 
-	CFsEmailSettingsListView* self = CFsEmailSettingsListView::NewLC( aMailClient, aAppUi, aControlGroup );
+	CFsEmailSettingsListView* self =
+		CFsEmailSettingsListView::NewLC( aMailClient, aAppUi, aControlGroup );
 	CleanupStack::Pop( self );
 
 	return self;
@@ -122,7 +126,8 @@
     FUNC_LOG;
 
 	CFsEmailSettingsListView* self = 
-	    new ( ELeave ) CFsEmailSettingsListView( aControlGroup, *aAppUi, aMailClient );
+	    new ( ELeave ) CFsEmailSettingsListView(
+	    	aControlGroup, *aAppUi, aMailClient );
 	CleanupStack::PushL( self );
 	self->ConstructL();
 
@@ -130,10 +135,11 @@
 	}
 
 
-/**
- * Second-phase constructor for view.  
- * Initialize contents from resource.
- */ 
+// ---------------------------------------------------------------------------
+// Second-phase constructor for view.  
+// Initialize contents from resource.
+// ---------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::ConstructL()
 	{
     FUNC_LOG;
@@ -141,16 +147,17 @@
 	BaseConstructL( R_FS_EMAIL_SETTINGS_LIST_VIEW );
 
 	iAsyncCallback = new (ELeave) CAsyncCallBack( CActive::EPriorityStandard );
-	iAsyncCallback->Set( TCallBack( DisplayCreateQuery, this ) ); 
-	
+	iAsyncCallback->Set( TCallBack( DisplayCreateQuery, this ) );
 	}
 
 // -----------------------------------------------------------------------------
 // CFsEmailSettingsListView::DisplayCreateQuery
 // -----------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::StartMailboxAsyncQueryL()
 	{
     FUNC_LOG;
+
 	if ( iAsyncCallback )
 		{
 		iAsyncCallback->CallBack();
@@ -159,12 +166,29 @@
 
 
 // -----------------------------------------------------------------------------
+// CFsEmailSettingsListView::DisplayStylusPopUpMenu()
+// Displays the pop-up menu.
+// -----------------------------------------------------------------------------
+//
+void CFsEmailSettingsListView::DisplayStylusPopUpMenu( const TPoint& aPosition )
+	{
+    if ( iStylusPopUpMenu )
+    	{
+    	iStylusPopUpMenu->SetPosition( aPosition );
+    	iStylusPopUpMenu->ShowMenu();
+    	}
+	}
+
+
+// -----------------------------------------------------------------------------
 // CFsEmailSettingsListView::DisplayCreateQuery
 // -----------------------------------------------------------------------------
+//
 TInt CFsEmailSettingsListView::DisplayCreateQuery( TAny* aViewPtr )
     {
     FUNC_LOG;
-    CFsEmailSettingsListView* self = static_cast<CFsEmailSettingsListView*>( aViewPtr ); 
+    CFsEmailSettingsListView* self =
+		static_cast<CFsEmailSettingsListView*>( aViewPtr ); 
 	TRAPD( err, self->DisplayCreateMailboxNoteIfNeededL() );
     return err;
     }
@@ -172,26 +196,30 @@
 // -----------------------------------------------------------------------------
 // CFsEmailSettingsListView::DisplayCreateQueryL
 // -----------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::DisplayCreateMailboxNoteIfNeededL()
     {
     FUNC_LOG;
     User::LeaveIfNull( iFsEmailSettingsList );
     iFsEmailSettingsList->DisplayCreateMailboxNoteIfNeededL();
     }
-	
-/**
- * @return The UID for this view
- */
+
+// -----------------------------------------------------------------------------
+// CFsEmailSettingsListView::Id()
+// From CAknView.
+// -----------------------------------------------------------------------------
+//
 TUid CFsEmailSettingsListView::Id() const
 	{
     FUNC_LOG;
 	return SettingsViewId;
 	}
 
-/**
- * Handle a command for this view (override)
- * @param aCommand command id to be handled
- */
+// -----------------------------------------------------------------------------
+// CFsEmailSettingsListView::HandleCommandL()
+// From CAknView.
+// -----------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::HandleCommandL( TInt aCommand )
 	{
     FUNC_LOG;
@@ -215,6 +243,7 @@
 			    // navigate away from settings
 	            NavigateBackL();
 			    }
+
 			break;
 			}
 		case EAknSoftkeyOpen:	
@@ -225,48 +254,70 @@
 			break;
 			}
 		case EFsEmailUiCmdSettingsAddAccount:
+			{
 			iFsEmailSettingsList->AddAccountL();
 			break;
+			}
 		case EFsEmailUiCmdSettingsRemoveAccount:
+		case EFsEmailUiCmdDeleteSelectedMailbox: // From the pop-up menu.
+			{
 			iFsEmailSettingsList->RemoveAccountL();
-			break;	
+			iFsEmailSettingsList->ClearFocus();
+			break;
+			}
 		case EFsEmailUiCmdHelp:
+			{
 			TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
             break;
+			}
 		case EFsEmailUiCmdExit:
+			{
 			AppUi()->HandleCommandL( EEikCmdExit );
 			break;
+			}
 		case EFsEmailUiCmdGoToTop:
+			{
 		    iFsEmailSettingsList->GoToTop();
 		    break;
+			}
 		case EFsEmailUiCmdGoToBottom:
+			{
 		    iFsEmailSettingsList->GoToBottom();
 		    break;
+			}
         case EFsEmailUiCmdPageUp:
+        	{
             iFsEmailSettingsList->PageUp();
             break;
+        	}
         case EFsEmailUiCmdPageDown:
+        	{
             iFsEmailSettingsList->PageDown();
             break;
+        	}
+        case KErrCancel:
+        	{
+        	// The pop-up menu was cancelled.
+        	iFsEmailSettingsList->ClearFocus();
+        	break;
+        	}
 		default:
+			{
 			break;
-		}
+			}
+		} // switch ( aCommand )
 	}
 
-/**
- *	Handles user actions during activation of the view, 
- *	such as initializing the content.
- */
-// <cmail> Toolbar
-/*void CFsEmailSettingsListView::DoActivateL(
-        const TVwsViewId& aPrevViewId,
-        TUid aCustomMessageId,
-        const TDesC8& aCustomMessage )*/
+
+// -----------------------------------------------------------------------------
+// CFsEmailSettingsListView::ChildDoActivateL()
+// From CFsEmailUiViewBase.
+// -----------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::ChildDoActivateL(
         const TVwsViewId& aPrevViewId,
         TUid aCustomMessageId,
         const TDesC8& aCustomMessage )
-// </cmail> Toolbar
 	{
     FUNC_LOG;
     
@@ -413,13 +464,26 @@
 		}
 	// setup status pane title
     SetupStatusPaneL();
-	
+
+    if( !iStylusPopUpMenu )
+        {
+        // Construct the long tap pop-up menu.
+        TPoint point( 0, 0 );
+        iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
+		TResourceReader reader;
+		iCoeEnv->CreateResourceReaderLC( reader,
+			R_STYLUS_POPUP_MENU_LAUNCHER_GRID_VIEW );
+		iStylusPopUpMenu->ConstructFromResourceL( reader );
+		CleanupStack::PopAndDestroy(); // reader
+        }
+
 	// Make a deferred call to show the "create mailbox" query if we opened the main settings list
 	if ( aCustomMessageId.iUid == KMailSettingsOpenMainList ||
 	        aCustomMessageId.iUid == KOpenMailSettingsFromGS )
 	    {
 	    StartMailboxAsyncQueryL();
 	    }
+
 	iAppUi.HideTitlePaneConnectionStatus();
 	}
 
@@ -463,7 +527,7 @@
 
 // ---------------------------------------------------------------------------
 // DynInitMenuPaneL
-// From aknview
+// From CAknView.
 // ---------------------------------------------------------------------------
 //
 void CFsEmailSettingsListView::DynInitMenuPaneL( 
@@ -502,11 +566,11 @@
 	                             CFSEmailUiShortcutBinding::EContextSettings );	
 	}
 
-/**
- * SetupStatusPaneL
- * 
- * 
- */
+// ---------------------------------------------------------------------------
+// SetupStatusPaneL()
+// 
+// ---------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::SetupStatusPaneL()
 	{
     FUNC_LOG;
@@ -529,9 +593,11 @@
 
 	}
 
-/** 
- * Sets application default title when leaving this view
- */
+// ---------------------------------------------------------------------------
+// CleanupStatusPaneL()
+// Sets application default title when leaving this view
+// ---------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::CleanupStatusPaneL()
 	{
     FUNC_LOG;
@@ -539,9 +605,12 @@
 	}
 
 
-/** 
- * Handle status pane size change for this view (override)
- */
+// ---------------------------------------------------------------------------
+// HandleStatusPaneSizeChange()
+// From CAknView.
+// Handle status pane size change for this view (override).
+// ---------------------------------------------------------------------------
+//
 void CFsEmailSettingsListView::HandleStatusPaneSizeChange()
 	{
     FUNC_LOG;
@@ -556,3 +625,4 @@
 	}
 
 
+// End of file.