phonebookui/Phonebook2/xSPExtensionManager/src/CxSPSortNamesListViewExtension.cpp
changeset 0 e686773b3f54
child 68 9da50d567e3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPSortNamesListViewExtension.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2006 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*       Implementation for CxSPSortNamesListViewExtension.
+*
+*/
+
+
+// INCLUDE FILES
+#include "CxSPSortNamesListViewExtension.h"
+
+// System includes
+#include <eikmenup.h>
+#include <AknGlobalNote.h>
+
+// From Phonebook2
+#include <MPbk2AppUi.h>
+#include <MPbk2ContactUiControl.h>
+#include <MPbk2ViewExplorer.h>
+#include <CPbk2ViewState.h>
+
+// internal
+#include "ExtensionManager.hrh"
+#include <ExtensionManagerRes.rsg>
+#include "MxSPCommandMapper.h"
+#include "ExtensionManagerUID.H"
+
+using namespace Phonebook2;
+
+// ================= MEMBER FUNCTIONS =======================
+
+inline CxSPSortNamesListViewExtension::CxSPSortNamesListViewExtension()
+    {
+    }
+
+inline void CxSPSortNamesListViewExtension::ConstructL()
+    {
+    }
+
+CxSPSortNamesListViewExtension* CxSPSortNamesListViewExtension::NewL()
+    {
+    CxSPSortNamesListViewExtension* self = new(ELeave) CxSPSortNamesListViewExtension();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CxSPSortNamesListViewExtension::~CxSPSortNamesListViewExtension()
+    {
+    }
+
+void CxSPSortNamesListViewExtension::DoRelease()
+    {
+    delete this;
+    }
+
+void CxSPSortNamesListViewExtension::DynInitMenuPaneL
+        ( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ )
+    {
+    }
+    
+void CxSPSortNamesListViewExtension::DynInitNamesListMainMenuPaneL
+  		( TInt /*aResourceId*/, CEikMenuPane* aMenuPane )
+  		{
+  		AddMenuContentsL( *aMenuPane );
+       	ChangeCommandL( *aMenuPane, EExtensionManagerCmdSort );	
+  		}
+    
+void CxSPSortNamesListViewExtension::AddMenuContentsL( CEikMenuPane& aMenuPane )
+    {
+    TInt newCommand;
+	TInt err = iMapper->GetNewCommand( KEXTENSIONMANAGERIMPLEMENTATIONUID, 
+									   EExtensionManagerCmdSort, 
+									   newCommand );		
+	User::LeaveIfError( err );	        
+    TInt pos;
+    if( !aMenuPane.MenuItemExists( newCommand, pos ) )
+    	{
+        aMenuPane.AddMenuItemsL( R_SORT_NAMES_LIST_VIEW_MENU );
+    	}
+    }    
+    
+void CxSPSortNamesListViewExtension::ChangeCommandL( CEikMenuPane& aMenuPane, TInt aOldCommand )
+	{		
+	TInt pos;
+	if( aMenuPane.MenuItemExists( aOldCommand, pos ) )
+		{
+		TInt newCommand;
+		TInt err = iMapper->GetNewCommand( KEXTENSIONMANAGERIMPLEMENTATIONUID, 
+										   aOldCommand, 
+										   newCommand );
+		User::LeaveIfError( err );		
+		CEikMenuPaneItem::SData& data = aMenuPane.ItemDataByIndexL( pos );
+		data.iCommandId = newCommand;
+		}
+	}
+
+TBool CxSPSortNamesListViewExtension::HandleCommandL( TInt aCommandId,
+													MPbk2ContactUiControl* aUiControl )
+    {
+    TBool result( EFalse );
+	TInt oldCommand;
+	TInt err = iMapper->GetOldCommand( KEXTENSIONMANAGERIMPLEMENTATIONUID, aCommandId, oldCommand );
+	
+	if( !err )
+		{
+		switch( oldCommand )
+	        {
+	        case EExtensionManagerCmdSort:
+	            {
+	            CPbk2ViewState* state = aUiControl->ControlStateL();
+        		CleanupStack::PushL( state );
+        		Pbk2AppUi()->Pbk2ViewExplorer()->
+            		ActivatePhonebook2ViewL( TUid::Uid(
+                		EExtensionManagerSortViewId ), state );
+        		CleanupStack::PopAndDestroy( state );
+        		aUiControl->UpdateAfterCommandExecution();
+	            result = ETrue;
+	            break;
+	            }
+	        default:
+	            {
+	            break;
+	            }
+	        }	
+		}
+    
+    return result;
+    }
+
+void CxSPSortNamesListViewExtension::RegisterCommandMapper( MxSPCommandMapper& aMapper )
+	{
+	iMapper = &aMapper;
+	}
+	
+TInt CxSPSortNamesListViewExtension::CommandInfoResource() const
+	{
+	return R_EXTENSION_MANAGER_COMMAND_INFO;
+	}
+
+//  End of File