meetingui/attendeeview/UiSrc/CAttendeeCaller.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingui/attendeeview/UiSrc/CAttendeeCaller.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,227 @@
+/*
+* Copyright (c) 2004-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:  Provides wrapper class CCallUi methods.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "cattendeecaller.h"
+#include "attendeeview.hrh"
+#include <attendeeview_res.rsg>
+
+// Phonebook 
+#include <cpbkphonenumberselect.h>
+#include <cpbkcontactitem.h>
+#include <cpbkfieldinfo.h>
+
+// TODO Migration to Phonebook2
+// Phonebook2
+// Virtual Phonebook
+
+// System includes
+#include <aiwcommon.hrh>
+#include <aiwdialdataext.h>
+#include <eikmenub.h>
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAttendeeCaller::CAttendeeCaller
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CAttendeeCaller::CAttendeeCaller()
+    {
+    }
+
+// ----------------------------------------------------
+// CAttendeeCaller::ConstructL
+// ----------------------------------------------------
+//
+void CAttendeeCaller::ConstructL()
+    {
+	//Crete service handler
+	iServiceHandler = CAiwServiceHandler::NewL();
+
+	//Atttach menu
+	iServiceHandler->AttachMenuL( R_ATTENDEEVIEW_CALL_MENU,
+							      R_ATTENDEEVIEW_CALL_AIW_INTEREST );
+
+    // Attach also base interest
+    iServiceHandler->AttachL( R_ATTENDEEVIEW_CALL_AIW_INTEREST );       
+    }
+
+// -----------------------------------------------------------------------------
+// CAttendeeCaller::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CAttendeeCaller* CAttendeeCaller::NewL()
+    {
+    CAttendeeCaller* self = new(ELeave)CAttendeeCaller;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ----------------------------------------------------
+// CAttendeeCaller::~CAttendeeCaller
+// ----------------------------------------------------
+//
+CAttendeeCaller::~CAttendeeCaller()
+    {
+    delete iServiceHandler;
+    }
+
+// ---------------------------------------------------------
+// CAttendeeCaller::InitializeServiceHandlerL
+// ---------------------------------------------------------
+//
+void CAttendeeCaller::InitializeServiceHandlerL( CEikMenuPane& aMenuPane,
+                                                 TBool aVisible ) const
+    {
+    if ( aVisible )
+        {
+
+        iServiceHandler->InitializeMenuPaneL(
+                    aMenuPane,
+                    R_ATTENDEEVIEW_CALL_MENU,
+                    KAiwCmdCall,
+                    iServiceHandler->InParamListL() );
+                    
+        }
+    else
+        {
+        aMenuPane.SetItemDimmed( KAiwCmdCall, ETrue );
+        }
+    }
+
+// ---------------------------------------------------------
+// CAttendeeCaller::CallCmdL
+// ---------------------------------------------------------
+//
+void CAttendeeCaller::CallCmdL( TInt aCommandId, CPbkContactItem& aPbkItem )
+    {
+    
+    if ( iServiceHandler->ServiceCmdByMenuCmd( aCommandId ) == KAiwCmdNone &&
+           aCommandId != EAttCallCmd )
+        {
+        return;
+        }
+
+    // Setup dial data
+    CAiwDialDataExt* dialData = CAiwDialDataExt::NewLC();
+    dialData->SetWindowGroup( CCoeEnv::Static()->RootWin().Identifier() );
+
+    // TODO Create and set a contact link when using VirtualPhonebook
+    //dialData.SetContactId( aPbkItem.Id() );
+
+    const TPbkContactItemField* field = SelectPhoneNumberL( aPbkItem );
+    if ( !field )
+        {
+        return;
+        }
+
+    const TDesC& phoneNumber(
+            field->Text().Left( AIWDialDataExt::KMaximumPhoneNumberLength ) );
+
+    dialData->SetPhoneNumberL( phoneNumber );
+
+
+    // If the command was not launched via menu but the send key
+    // (which is the case when iCommandId is EAttCallCmd), we
+    // need to deduct whether to launch voice or video call
+    if ( aCommandId == EAttCallCmd )
+        {
+        // Default to voice call
+        dialData->SetCallType( CAiwDialData::EAIWVoice );
+        
+        // CASE A:
+        // If there is a no default phone number field, but there
+        // is a default video number field, launch video call
+        if ( !aPbkItem.DefaultPhoneNumberField() &&
+              aPbkItem.DefaultVideoNumberField() )
+            {
+            dialData->SetCallType( CAiwDialData::EAIWForcedVideo );
+            }
+
+        // CASE B:
+        // No default fields at all. This means that the user
+        // was shown a number selection list, or there was just
+        // one number
+        else if ( !aPbkItem.DefaultPhoneNumberField() &&
+                  !aPbkItem.DefaultVideoNumberField() )
+            {
+            // If the selected field was a video field, launch video call
+            if ( field->FieldInfo().FieldId() == EPbkFieldIdPhoneNumberVideo )
+                {
+                dialData->SetCallType( CAiwDialData::EAIWForcedVideo );
+                }
+            }         
+        }
+
+    CAiwGenericParamList& paramList = iServiceHandler->InParamListL();
+    dialData->FillInParamListL( paramList );    
+
+    if ( aCommandId == EAttCallCmd )
+       {
+       iServiceHandler->ExecuteServiceCmdL( KAiwCmdCall,
+                                    paramList,
+                                    iServiceHandler->OutParamListL(), 
+                                    0,
+                                    NULL );
+       }
+    else
+        {
+        iServiceHandler->ExecuteMenuCmdL( aCommandId,
+                                      paramList,
+                                      iServiceHandler->OutParamListL(),
+                                      0,
+                                      NULL );   
+        }
+
+    CleanupStack::PopAndDestroy( dialData ); // dialData
+
+    }
+
+// ---------------------------------------------------------
+// CAttendeeCaller::HandleSubmenuL
+// ---------------------------------------------------------
+//
+TBool CAttendeeCaller::HandleSubmenuL( CEikMenuPane& aPane )
+    {
+    return iServiceHandler->HandleSubmenuL( aPane );
+    }
+
+// ---------------------------------------------------------
+// CAttendeeCaller::SelectPhoneNumberL
+// ---------------------------------------------------------
+//
+const TPbkContactItemField* CAttendeeCaller::SelectPhoneNumberL( 
+                                  CPbkContactItem& aContactItem )
+    {    
+    CPbkPhoneNumberSelect::TParams params( aContactItem );    
+	    
+    CPbkPhoneNumberSelect* dlg = new(ELeave)CPbkPhoneNumberSelect;
+    dlg->ExecuteLD( params );
+    
+    return params.SelectedField();       
+    }
+    
+//  End of File