phonebookui/Phonebook2/xSPExtensionManager/src/CxSPSortViewControl.cpp
branchRCL_3
changeset 7 b3431bff8c19
parent 0 e686773b3f54
child 12 4ae315f230bc
--- a/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPSortViewControl.cpp	Mon Mar 15 12:39:26 2010 +0200
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPSortViewControl.cpp	Wed Mar 31 21:13:53 2010 +0300
@@ -26,6 +26,7 @@
 #include <gulicon.h>
 #include <AknGlobalNote.h>
 #include <StringLoader.h>
+#include <avkon.hrh>
 
 // internal includes
 #include "CxSPLoader.h"
@@ -39,6 +40,7 @@
 #include <MPbk2ApplicationServices.h>
 #include <CPbk2ServiceManager.h>
 #include <MPbk2AppUi.h>
+#include <CPbk2UIExtensionView.h>
 
 // CONSTANTS
 _LIT( KTab, "\t" );
@@ -58,11 +60,13 @@
 // ================= MEMBER FUNCTIONS =======================
 
 CxSPSortViewControl::CxSPSortViewControl( CxSPViewIdChanger& aViewIdChanger, 
-											CxSPArray& aExtensions ) :
+											CxSPArray& aExtensions,
+											CPbk2UIExtensionView& aView ) :
 											iViewIdChanger( aViewIdChanger ),
 											iExtensions(aExtensions),
 											iGlobalNote(0),
-											iGlobalNoteObserver(0)
+											iGlobalNoteObserver(0),
+											iView( aView )
     {
     }
 
@@ -82,18 +86,20 @@
     }
 
 CxSPSortViewControl* CxSPSortViewControl::NewL( CxSPViewIdChanger& aViewIdChanger,
-											CxSPArray& aExtensions )
+											CxSPArray& aExtensions, 
+											CPbk2UIExtensionView& aView )
     {
-    CxSPSortViewControl* self = NewLC( aViewIdChanger, aExtensions );
+    CxSPSortViewControl* self = NewLC( aViewIdChanger, aExtensions, aView );
     CleanupStack::Pop(self);
     return self;
     }
 
 CxSPSortViewControl* CxSPSortViewControl::NewLC( CxSPViewIdChanger& aViewIdChanger,
-											CxSPArray& aExtensions )
+											CxSPArray& aExtensions, 
+											CPbk2UIExtensionView& aView )
     {
     CxSPSortViewControl* self =
-        new (ELeave) CxSPSortViewControl( aViewIdChanger, aExtensions );
+        new (ELeave) CxSPSortViewControl( aViewIdChanger, aExtensions, aView );
     CleanupStack::PushL(self);
     self->ConstructL();
     return self;
@@ -111,10 +117,57 @@
         (const TKeyEvent& aKeyEvent,TEventCode aType)
     {
     TKeyResponse result = EKeyWasNotConsumed;
-	if( iListBox )
+    
+	if( iListBox && result == EKeyWasNotConsumed )
         {
         result = iListBox->OfferKeyEventL(aKeyEvent, aType);
         }
+	
+    // Update popup when moving up or down in the list
+     switch(aKeyEvent.iCode)
+         {
+         case EKeyUpArrow:
+         case EKeyDownArrow:
+             {
+             const CListBoxView::CSelectionIndexArray* inds = iListBox->SelectionIndexes();
+             TInt count = inds->Count();
+             
+             if ( count <= 0 )
+                 {
+                 iView.Cba()->SetCommandSetL( R_EXTENSION_MANAGER_SORT_VIEW_SOFTKEYS  );
+                 }
+             else
+                 {
+                 iView.Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                 }
+             iView.Cba()->DrawDeferred();
+
+             break;
+             }
+         case EKeyEnter:
+         case EKeyOK: 
+             {
+             const CListBoxView::CSelectionIndexArray* inds = iListBox->SelectionIndexes();
+             TInt count = inds->Count();
+             
+             if ( count <= 0 )
+                 {
+                 SetCurrentItemMarkedL( ETrue );
+                 iView.Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL );
+                 }
+             else
+                 {
+                 MoveMarkedItemL();
+                 iView.Cba()->SetCommandSetL( R_EXTENSION_MANAGER_SORT_VIEW_SOFTKEYS  );
+                 }
+             iView.Cba()->DrawDeferred();
+             break;
+             }
+         default:
+             {
+             break;
+             }
+         }
     return result;
     }
 
@@ -139,6 +192,19 @@
     return iListBox;
     }
 
+void CxSPSortViewControl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+    {
+    if ( iListBox )
+        {
+        iListBox->HandlePointerEventL( aPointerEvent );
+        }
+    }
+
+CCoeControl& CxSPSortViewControl::ComponentControl() const
+    {
+    return *iListBox;
+    }
+
 void CxSPSortViewControl::SetListBoxContentsL()
 	{ 
 	_LIT( KFormat, "%d" );
@@ -281,6 +347,7 @@
 void CxSPSortViewControl::MoveMarkedItemL()
 	{
 	TInt currentIndex = iListBox->CurrentItemIndex();
+
 	TInt markedIndex = -1;
 	
 	const CListBoxView::CSelectionIndexArray* inds = iListBox->SelectionIndexes();