uiservicetab/vimpstui/src/cvimpstuisearchviewcontrol.cpp
branchRCL_3
changeset 28 3104fc151679
parent 27 2b7283837edb
child 29 9a48e301e94b
--- a/uiservicetab/vimpstui/src/cvimpstuisearchviewcontrol.cpp	Thu Aug 19 09:41:53 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,589 +0,0 @@
-/*
-* Copyright (c) 2008 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 CVIMPSTUiSearchViewControl.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include "cvimpstuisearchviewcontrol.h"
-
-#include "mvimpstcmdhandler.h"
-#include "vimpstutils.h"
-#include "tvimpstconsts.h"
-#include "mvimpstengine.h"
-#include "cvimpstuisearchview.h"
-#include "vimpstui.hrh"
-#include "vimpstutilsdialog.h"
-#include "uiservicetabtracer.h"
-// imlauncher
-#include <imcvlauncher.h>
-
-
-// system include
-#include 	<aknenv.h>
-#include	<aknlists.h>
-#include    <AknIconArray.h>
-#include 	<AknUtils.h> 
-#include 	<StringLoader.h>
-
-// Pbk2
-#include <MPbk2KeyEventHandler.h>
-#include <vimpstuires.rsg>
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// --------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::CVIMPSTUiSearchViewControl
-// --------------------------------------------------------------------------
-//
-CVIMPSTUiSearchViewControl::CVIMPSTUiSearchViewControl( MPbk2KeyEventHandler* aKeyEventHandler,
-														TUint32 aServiceId,
-													   	MVIMPSTEngine& aEngine,
-													   	MVIMPSTCmdHandler& aCommandHandler,
-													   	CVIMPSTUiSearchView& aSearchView )
-	:iKeyEventHandler(aKeyEventHandler),
-	 iServiceId(aServiceId),
-	 iEngine( aEngine ),
-	 iCommandHandler( aCommandHandler ),
-	 iSearchView( aSearchView )
-    {
-    
-    }
-
-
-// --------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::ConstructL
-// --------------------------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::ConstructL()
-    {
-    CreateWindowL();
-    iItemArray = new ( ELeave ) CDesCArrayFlat( KArrayGranularity );   
-    // Create listbox
-    iListBox = new ( ELeave ) CAknDoubleStyleListBox;
-    iListBox->ConstructL( this, EAknListBoxSelectionList );
-    
-    //iListBox->SetListBoxObserver( this );
-    
-    iListBox->SetContainerWindowL(*this);
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL
-        (CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-        
-    // set marquee on
-    iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );
-   	iListBox->Model()->SetItemTextArray( iItemArray );
-	iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-	
-	iListBox->SetListBoxObserver( this );
-			
-	ActivateL();
-
-    }
-
-
-// --------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::NewL
-// --------------------------------------------------------------------------
-//
-CVIMPSTUiSearchViewControl* CVIMPSTUiSearchViewControl::NewL
-        								  ( MPbk2KeyEventHandler* aKeyEventHandler, 
-        									TUint32 aServiceId,
-        									MVIMPSTEngine& aEngine,
-        									MVIMPSTCmdHandler& aCommandHandler,
-        									CVIMPSTUiSearchView& aSearchView )
-    {
-    CVIMPSTUiSearchViewControl* self = NewLC(aKeyEventHandler,
-    										 aServiceId, aEngine, 
-    										 aCommandHandler, aSearchView );
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-
-// --------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::NewLC
-// --------------------------------------------------------------------------
-//
-CVIMPSTUiSearchViewControl* CVIMPSTUiSearchViewControl::NewLC
-									        ( MPbk2KeyEventHandler* aKeyEventHandler,
-									          TUint32 aServiceId,
-									          MVIMPSTEngine& aEngine,
-									          MVIMPSTCmdHandler& aCommandHandler,
-									          CVIMPSTUiSearchView& aSearchView )
-    {
-    CVIMPSTUiSearchViewControl* self =
-        new (ELeave) CVIMPSTUiSearchViewControl(aKeyEventHandler,
-        									 aServiceId, aEngine,
-        									 aCommandHandler, aSearchView);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::Destructor
-// -----------------------------------------------------------------------------
-//
-CVIMPSTUiSearchViewControl::~CVIMPSTUiSearchViewControl()
-    {
-   
-	delete iItemArray;
-    delete iListBox;
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::SearchResultL()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::SearchResultL(RArray<TVIMPSTSearchData> aSearchData )
-    {
-   	UpdateListBoxL(aSearchData);
-    }
-
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::SearchFinishedL()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::SearchFinishedL(TInt /*aError*/)
-    {
-    // if any error show error note
-    if( ! iItemArray->Count() )
-	    {
-	    SetEmptyTextsToListboxL();	
-	    iListBox->DrawNow();
-	    }
-	UpdateCbaL();
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::HandleControlEventL
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent aEventType)
-    {
-    // We only observe iFindbox
-    if( EEventStateChanged == aEventType )
-        {
-
-      	((CAknFilteredTextListBoxModel*) iListBox->Model() )
-            ->Filter()->HandleOfferkeyEventL();        
-        
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::SetEmptyTextsToListboxL()
-// See header for details. 
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::SetEmptyTextsToListboxL()
-    {    
-    HBufC* emptyFinal = VIMPSTUtils::CombineStringFromResourceLC
-    									( R_QTN_CHAT_EMPTY_SEARCH_PRIMARY, 
-    									  R_QTN_CHAT_EMPTY_SEARCH);
-    				
-    iListBox->View()->SetListEmptyTextL( *emptyFinal );
-    CleanupStack::PopAndDestroy(); // emptyFinal    
-    }
-
-// ---------------------------------------------------------------------------
-// CVIMPSTUiSearchViewControl::SetSearchingTextToListboxL()
-// See header for details. 
-// ---------------------------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::SetSearchingTextToListboxL()
-    {    
-    iListBox->View()->SetListEmptyTextL( KSpace );
-    iListBox->DrawNow();
-    }
-
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::HandleListBoxEventL
-// Handles list box events
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::HandleListBoxEventL( CEikListBox* /*aListBox*/,
-												 TListBoxEvent aEventType )
-    {
-	TRACER_AUTO;
-    switch(aEventType)
-        {
-
-        case EEventItemSingleClicked:
-
-            {
-            TInt curIndex = iListBox->CurrentItemIndex();
-            if( curIndex >=0)
-                {
-            HBufC* contactId = GetFocusedContactLC() ;
-
-            if ( contactId->Length() )
-                {
-            if( iCommandHandler.GetProcessInterface().FindAnyContact( *contactId ) )
-                {
-            //contact is already there in contact list
-            TInt index = iCommandHandler.GetProcessInterface().FindContactIndexL(*contactId);
-            TVIMPSTEnums::TOnlineStatus onlinestatus = iCommandHandler.GetProcessInterface().GetOnlineStatusL(index);
-            if(TVIMPSTEnums::EPending != onlinestatus) //if contact is not remote pending
-                {
-            //open conversation view
-            OpenConversationL( *contactId );   
-                }
-
-                }
-            else 
-                {	
-            //ask the query for adding contact
-            HBufC* queryTxt = StringLoader::LoadLC( R_QTN_CHAT_REACTIVE_ADD_LIST, *contactId );
-            TInt response = VIMPSTUtilsDialog::DisplayQueryDialogL(
-                    R_GENERIC_YES_NO_CONFIRMATION_QUERY,
-                    *queryTxt );
-
-            if ( ( response == EAknSoftkeyOk ) || ( response == EAknSoftkeyYes ) )
-                {
-            iSearchView.HandleCommandL( ESearchAddFriends );
-                }
-            CleanupStack::PopAndDestroy( queryTxt );	 
-                }
-                }
-            CleanupStack::PopAndDestroy( contactId );	 
-                }
-            break;
-            }
-            // Add enter key handling
-        case EEventEnterKeyPressed:
-            {
-            CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-            TInt commandId( iCba->ButtonGroup()->CommandId( CEikButtonGroupContainer::EMiddleSoftkeyPosition));
-
-            iSearchView.HandleCommandL(commandId);
-            break;
-            }
-        }
-    UpdateCbaL();	  
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::OpenConversationL(
-// (other items were commented in a header).
-// ---------------------------------------------------------
-void CVIMPSTUiSearchViewControl::OpenConversationL(const TDesC& aContactId )
-	{
-	TRACER_AUTO;
-	MVIMPSTProcessArray& arrayProcess = iCommandHandler.GetProcessInterface();
-	TInt indexInTabbedView = arrayProcess.FindContactIndexL( aContactId );
-	TInt result = EAknSoftkeyOk;
-
-	//get the status from engine.
-	TVIMPSTEnums::TOnlineStatus status = arrayProcess.GetOnlineStatusL(indexInTabbedView);
-
-	if( status == TVIMPSTEnums::EOffline )
-	    {
-	    TBool isConvExist = arrayProcess.IsConversationExistL( aContactId );
-	    
-	    if( !isConvExist)
-		    {
-		
-			HBufC* msg = StringLoader::LoadLC( R_QTN_CHAT_CONTACT_MAY_NOT_RECEIVE_MESSAGE,
-										        aContactId );                    
-
-			 result = VIMPSTUtilsDialog::DisplayQueryDialogL(
-			        R_CHAT_CONTACT_MAY_NOT_RECEIVE_MESSAGE_DIALOG,
-			        msg->Des() );
-			CleanupStack::PopAndDestroy( msg );
-		    }
-	    }
-
-	if( ( result == EAknSoftkeyOk ) || ( result == EAknSoftkeyYes ) )
-		{
-		TVwsViewId activeViewId;
-	    CCoeEnv::Static()->AppUi()->GetActiveViewId( activeViewId );
-	    TPtrC itemName = arrayProcess.GetItemNameText(indexInTabbedView) ;
-	    // not own this p
-	    MVPbkContactLink* contactLink = arrayProcess.ContactLink( indexInTabbedView );
-		arrayProcess.ResetPendingMsg( indexInTabbedView );
-		// imlauncher call for luanching the conversationview with seletced contact
-		//IMCVLauncher::LaunchImConversationViewL(activeViewId, iServiceId, aContactId );	
-		// imlauncher call for luanching the conversationview with seletced user id
-		IMCVLauncher::LaunchImConversationViewL(activeViewId, iServiceId, aContactId, itemName, contactLink);
-		}
-	}
-
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::SizeChanged()
-// Called by framework
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::SizeChanged()
-	{
-	TRACER_AUTO;
-	if ( iListBox )
-        {
-        iListBox->SetRect(Rect());
-        }  
-    }
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::CountComponentControls()
-// Returns number of controls
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TInt CVIMPSTUiSearchViewControl::CountComponentControls() const
-	{
-	//Only one compound control so returning 1
-	return 1;
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::ComponentControl( TInt aIndex )
-// Returns control for given index
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CCoeControl* CVIMPSTUiSearchViewControl::ComponentControl( TInt aIndex ) const
-	{
-	if( aIndex == 0 )
-		{
-        return iListBox;
-        }
-    else
-        {
-        return NULL;
-    	}
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::OfferKeyEventL()
-// Handles user key inputs
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TKeyResponse CVIMPSTUiSearchViewControl::OfferKeyEventL( const TKeyEvent& aKeyEvent,
-													TEventCode aType )
-	{
-	TRACER_AUTO;
-	TKeyResponse result = EKeyWasNotConsumed;
-
-    // Offer key event first to the key event handler
-    if ( iKeyEventHandler && iKeyEventHandler->Pbk2ProcessKeyEventL
-            ( aKeyEvent, aType ) )
-        {
-        result = EKeyWasConsumed;
-        }
-        
-    switch ( aKeyEvent.iCode )
-           {
-         /*  case EKeyEnter:
-				{
-				iSearchView.HandleCommandL(iCurrentCmdToExe);
-				result = EKeyWasConsumed;
-				break;
-				}*/
-			default:
-				break;
-           }
-        
-    // Not consumed by the key handler, offer to the control next
-    if ( result == EKeyWasNotConsumed )
-        {
-        if ( iListBox )
-            {
-            result = iListBox->OfferKeyEventL(aKeyEvent, aType);
-            }
-        }
-    UpdateCbaL();
-    return result;
-    
-	}
-
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::UpdateListBoxL()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::UpdateListBoxL(RArray<TVIMPSTSearchData> aSerachData)
-    {
-	TRACER_AUTO;
-	TInt granularity( iItemArray->Count() );
-	++granularity;
-	
-   	CDesCArray* tempArray = new ( ELeave ) CDesCArrayFlat( granularity );
-	CleanupStack::PushL( tempArray );
-    
-    iListBox->Model()->SetItemTextArray( tempArray );
-	iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-	iListBox->HandleItemAdditionL();
-	for ( TInt i =0; i < aSerachData.Count() ; ++ i)
-	    {
-	    TVIMPSTSearchData data = aSerachData [i];
-	    HBufC* itemText = HBufC::NewLC( 100 );
-	    TPtr itemTextPtr( itemText->Des() );
-
-	    itemTextPtr.Append( KTab );
-
-	    itemTextPtr.Append( VIMPSTUtils::DisplayId( data.iEmailId ));
-	    itemTextPtr.Append( KTab );
-
-	    itemTextPtr.Append(data.iEmailId);
-	    itemTextPtr.Append( KTab );
-
-	    iItemArray->AppendL( itemTextPtr );
-	    CleanupStack::PopAndDestroy( itemText );
-	    }
-    
-	CleanupStack::PopAndDestroy(tempArray );  // tempArray
-	
-	
-	iListBox->Model()->SetItemTextArray( iItemArray );
-	iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
-
-    iListBox->HandleItemAdditionL();
-    
-	if ( iItemArray->MdcaCount() > 0 )
-		{
-		iListBox->SetCurrentItemIndexAndDraw( 0 );
-		}
-		
-    iListBox->UpdateScrollBarsL();
-    
-    UpdateCbaL();
-       
-    }
-    
-    
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::ListBox()
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CEikListBox* CVIMPSTUiSearchViewControl::ListBox() const
-	{
-	return iListBox;
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::GetFocusedItemText
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-HBufC* CVIMPSTUiSearchViewControl::GetFocusedContactLC() const
-	{
-	TRACER_AUTO;
-	HBufC* retText=NULL;
-	TInt curIndex = iListBox->CurrentItemIndex();
-    TPtrC ptr= iItemArray->MdcaPoint(curIndex);
-    ptr.Set(ptr.Mid(1));  // set pointer from next char :since first char is KTab
-    
-    TInt pos=ptr.FindC(KTab);
-   
-    if( pos !=KErrNotFound &&  (pos != ptr.Length()-1))
-      {
-      ptr.Set(ptr.Mid( pos+1, ( ptr.Length()-2-pos )));
-      retText = ptr.AllocLC();
-      }
-    return retText;
-	}
-
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::ClearListBoxContents()
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::ClearListBoxContents()
-    {
-	TRACER_AUTO;
-	iItemArray->Reset();
-    TRAPD( err, iListBox->HandleItemRemovalL() );
-    if( err != KErrNone )
-        {
-        CActiveScheduler::Current()->Error( err );
-        }
-    iListBox->DrawNow();
-    }
-// ---------------------------------------------------------
-// CVIMPSTUiSearchViewControl::UpdateCbaL()
-// Updates Softkeys according to current focus.
-// ---------------------------------------------------------
-//
-void CVIMPSTUiSearchViewControl::UpdateCbaL( TBool  aUseDefaultCba /*= EFalse*/ )
-    {
-	TRACER_AUTO;
-    TInt cbaRes = R_SERVTAB_SOFTKEYS_OPTIONS_BACK__EMPTY;
-    iCurrentCmdToExe = -1;
-    TInt index = KErrNotFound;
-    if ( !iCba ) 
-        {
-        iCba = CEikButtonGroupContainer::Current();
-        }
-    if( iListBox )
-	    {
-	    index = iListBox->CurrentItemIndex();	
-	    }
-    if( aUseDefaultCba )  
-	    {
-	    cbaRes = R_SERVTAB_SOFTKEYS_OPTIONS_BACK__EMPTY;
-	    }
-    else if( KErrNotFound == index )
-		{
-		cbaRes = R_SERVTAB_SOFTKEYS_OPTION_NEW_SEARCH__BACK;
-		iCurrentCmdToExe = ESearchNew;
-		}
-	else //some results are there, hence update it to add to contacts.
-		{
-		if(iSearchView.HideAddToContactsL())
-		    {			
-		   TRACE(" after"  );		
-		    HBufC* contactId = GetFocusedContactLC();
-		    TInt curIndex = iCommandHandler.GetProcessInterface().FindContactIndexL(*contactId); 
-		    TVIMPSTEnums::TOnlineStatus onlinestatus = iCommandHandler.GetProcessInterface().GetOnlineStatusL(curIndex);   
-		    CleanupStack::PopAndDestroy(contactId);
-		    if( TVIMPSTEnums::EPending == onlinestatus )
-		        {
-		        TRACE(" EPending in"  );		
-		        cbaRes = R_SERVTAB_SOFTKEYS_OPTIONS_BACK__EMPTY;
-		        iCurrentCmdToExe = -1;    
-		        }
-		    else
-		        {
-		        TRACE("ESearchOpenConversation"  );		
-		        cbaRes = R_SERVTAB_SOFTKEYS_OPTION_SEARCH_OPENCONV__BACK;
-		        iCurrentCmdToExe = ESearchOpenConversation;    
-		        }
-
-		    }
-		else
-			{
-			cbaRes = R_SERVTAB_SOFTKEYS_OPTION_ADD_TO_CONTACTS__BACK;	
-			iCurrentCmdToExe = ESearchAddFriends;
-			}   
-        }
-  	if( iCba )
-        {
-        iCba->SetCommandSetL( cbaRes );
-     	iCba->DrawNow();
-        }
-    }
-
-//  End of File