phoneapp/phoneuistates/tsrc/common/CPhoneViewControllerStub.h
author hgs
Fri, 15 Oct 2010 12:58:46 +0300
changeset 78 baacf668fe89
parent 74 d1c62c765e48
permissions -rw-r--r--
201041

/*
* Copyright (c) 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"
* 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:
*
*/
#include "MPhoneViewCommandHandle.h"
#include "TPhoneCommandParam.h"
#include "TPhoneCmdParamBoolean.h"
#include "TPhoneCmdParamInteger.h"
#include "TPhoneCmdParamEmergencyCallHeaderData.h"
#include "TPhoneCmdParamCallStateData.h"

#include "TPhoneCmdParamCallHeaderData.h"

struct TCmds
     {
public:
     TInt iCmd;
     TPhoneUICommandParam* iP;
     }; 

class CPhoneViewController : public MPhoneViewCommandHandle, public CBase
    {
   
    
    public:  // Constructors and destructor
        
        CPhoneViewController(){}
      
        static CPhoneViewController*  NewL()
            {
            CPhoneViewController* self = new (ELeave) CPhoneViewController();
            return self;
            }
        
        
        /**
        * Destructor.
        */
        ~CPhoneViewController()
            {
            if(iCmds)
                {
                for(TInt i = 0; i<iCmds->Count(); i++)
                    {
                    TCmds t = iCmds->At(i);
                    delete t.iP;
                
                    }
                
                iCmds->Reset();
                }
            
            delete iCmds;
            };

    public: // New functions
        
        /**
        * Execute Command with given Command Id
        * @param aCmdId Command Id
        * @return None
        */
        void ExecuteCommandL( 
            TPhoneViewCommandId aCmdId )
            {
            if(iCmds == NULL)
                iCmds = new (ELeave) CArrayFixFlat<TCmds> (10);
            TCmds cmd;
            cmd.iCmd = aCmdId;
            cmd.iP = NULL;
            iCmds->AppendL( cmd );
            }

        /**
        * Execute Command with given Command Id  and Call Id
        * @param aCmdId Command Id
        * @param aCallId Call Id
        * @return None
        */
         void ExecuteCommandL( 
            TPhoneViewCommandId aCmdId, 
            TInt /*aCallId*/ ) 
            {
            ExecuteCommandL( aCmdId );
            
            }

         /**
        * Execute Command with given command id, call id and command parameter.
        * @param aCmdId Command Id
        * @param aCommandParam Command parameter
        * @return None
        */
         void ExecuteCommandL( 
            TPhoneViewCommandId aCmdId, 
            TPhoneCommandParam* aCommandParam ) 
             {
             if( iCmds == NULL )
                 iCmds = new (ELeave) CArrayFixFlat<TCmds> (10);
            TCmds cmd;
            cmd.iCmd = aCmdId;
            
            switch ( aCmdId )
                {
                case EPhoneViewGetCountOfActiveCalls:
                    {
                    if ( aCommandParam->ParamId() == 
                            TPhoneCommandParam::EPhoneParamIdInteger )
                        {
                        TPhoneCmdParamInteger* intParam = 
                            static_cast<TPhoneCmdParamInteger*>( aCommandParam );
                        
                        intParam->SetInteger( iActiveCallCount );
                        }
                    }
                    break;
                                   
                case EPhoneViewGetCallExistsInConference:
                    {
                    if ( aCommandParam->ParamId() == 
                            TPhoneCommandParam::EPhoneParamIdBoolean )
                        {
                        static_cast<TPhoneCmdParamBoolean*>(aCommandParam)->SetBoolean( iCallExistsInConference ); 
                        }
                    }
                    break;
                }
            
            if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdBoolean )
                {
                TPhoneCmdParamBoolean* value =
                                            static_cast<TPhoneCmdParamBoolean*>( aCommandParam );
                TPhoneCmdParamBoolean* value2 = new (ELeave) TPhoneCmdParamBoolean (*value);
                cmd.iP = value2;
                }
            else if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdInteger )
                {
                TPhoneCmdParamInteger* value =
                             static_cast<TPhoneCmdParamInteger*>( aCommandParam );
                TPhoneCmdParamInteger* value2 = new (ELeave) TPhoneCmdParamInteger (*value);
                cmd.iP = value2;             
                }
            else if ( aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdCallHeaderData )
                {
                TPhoneCmdParamCallHeaderData* value =
                            static_cast<TPhoneCmdParamCallHeaderData*>( aCommandParam );
                TPhoneCmdParamCallHeaderData* value2 = new (ELeave) TPhoneCmdParamCallHeaderData( *value);  
                cmd.iP = value2;             
                }
            else if(  aCommandParam->ParamId() == TPhoneCommandParam::EPhoneParamIdEmergencyCallHeaderData)
                {
                TPhoneCmdParamEmergencyCallHeaderData* value =
                                            static_cast<TPhoneCmdParamEmergencyCallHeaderData*>( aCommandParam );
                TPhoneCmdParamEmergencyCallHeaderData* value2 = new (ELeave) TPhoneCmdParamEmergencyCallHeaderData( *value);      
                cmd.iP = value2;       
                }
             else
                {
                cmd.iP = NULL;
                }
            
            iCmds->AppendL( cmd );
            }

         /**
        * Execute Command with given command id, call id and command parameter.
        * @param aCmdId Command Id
        * @param aCallId Call Id
        * @param aCommandParam Command parameter
        * @return None
        */
         void ExecuteCommandL( 
            TPhoneViewCommandId aCmdId, 
            TInt /*aCallId*/, 
            TPhoneCommandParam* aCommandParam ) 
             {
             ExecuteCommandL( aCmdId, aCommandParam );
             }

        /**
        * Execute Command with given command id, call id and message.
        * @param aCmdId Command Id
        * @param aCallId Call Id
        * @param aMessage Command message
        */
        void ExecuteCommandL( 
            TPhoneViewCommandId /*aCmdId*/, 
            TInt /*aCallId*/, 
            TDesC& /*aMessage*/ ){}

        /**
        * From MPhoneViewCommandHandle
        */    
        void ExecuteCommand( 
                   TPhoneViewCommandId /*aCmdId*/ ){}
                   
        /**
        * From MPhoneViewCommandHandle
        */
        void ExecuteCommand( 
                   TPhoneViewCommandId aCmdId, 
                   TPhoneCommandParam* /*aCommandParam*/ )
            {
            ExecuteCommandL( aCmdId );
            }

        /**
        * Handle Command with given Command Id
        * @param aCmdId Command Id
        * @return TPhoneViewResponseId
        */
        TPhoneViewResponseId HandleCommandL( 
            TPhoneViewCommandId /*aCmdId*/ ) { return iViewResponseId; }

        /**
        * Handle Command with given command id and command parameter.
        * @param aCmdId Command Id
        * @param aCommandParam Command parameter
        * @return TPhoneViewResponseId
        */
        TPhoneViewResponseId HandleCommandL( 
            TPhoneViewCommandId /*aCmdId*/, 
            TPhoneCommandParam* aCommandParam ) 
            {
            
            if ( aCommandParam->ParamId() == 
                 TPhoneCommandParam::EPhoneParamIdCallStateData )
                {
                TPhoneCmdParamCallStateData* stateParam = 
                          static_cast<TPhoneCmdParamCallStateData*>( aCommandParam );
                     stateParam->SetCallId( iCallId );
                }
                
            return iViewResponseId; }
       
        /**
        * Execute Command with given Command Id
        */     
         const TDesC& FetchContent() { return KNullDesC();}     
   
  //helper functions:       
         
         TInt VerifyViewCommand( const TInt& aCmd )
             {
             _LIT(KDesC, "Checking command id = %d ");
             EUNIT_PRINT( KDesC(), aCmd );
             
             TInt count = iCmds->Count();
             TBool cmdFound = EFalse;
             TInt i = 0;
             for ( ; i < count; i++ )
                 {
                 TCmds cmd = iCmds->At(i);
                 if( cmd.iCmd == aCmd )  
                     {
                     cmdFound = ETrue;
                     break;
                     }
                 }
             
             EUNIT_ASSERT_DESC( cmdFound, "View Command not ok" );
             return i;
             }

         void VerifyViewCommandBoolean( const TInt& aCmd, const TBool& aValue )
             {
             TBool paramOk = EFalse;
             
             for( TInt j = 0 ; j<iCmds->Count(); j++)
                  {
                  TCmds cmd = iCmds->At(j);
                  if( cmd.iCmd == aCmd )  
                      {
                      _LIT(KDesC, "Checking command id = %d ");
                      EUNIT_PRINT( KDesC(), aCmd );
                      
                      TPhoneUICommandParam* p = cmd.iP;
                      TPhoneCmdParamBoolean* booleanValue =
                                        static_cast<TPhoneCmdParamBoolean*>( p );
                      TBool val = booleanValue->Boolean();
                      if( val == aValue )
                          {
                          paramOk = ETrue;
                          break;
                          }
                      }
                  }
             
             EUNIT_ASSERT_DESC( paramOk, "View Boolean param not ok" );
             }

         void VerifyViewCommandInteger( const TInt& aCmd, const TInt& aValue )
             {
             TBool paramOk = EFalse;
            
             for( TInt j = 0 ; j< iCmds->Count(); j++)
                 {
                 TCmds cmd = iCmds->At(j);
                 if( cmd.iCmd == aCmd )  
                     {
                     _LIT(KDesC, "Checking command id = %d ");
                     EUNIT_PRINT( KDesC(), aCmd );
                     TPhoneCmdParamInteger* value = static_cast<TPhoneCmdParamInteger*>( cmd.iP );
                     
                     if( value->Integer() == aValue )
                         {
                         paramOk = ETrue;
                         break;
                         }
                     }
                 }
                 
             EUNIT_ASSERT_DESC( paramOk, "View Integer param not ok" );
             }

         void VerifyViewCommandCallHeader( const TInt& aCmd, const TPhoneCmdParamCallHeaderData& aValue )
             {
             TBool paramOk = EFalse;
             
             for( TInt j = 0 ; j< iCmds->Count(); j++)
                 {
                 TCmds cmd = iCmds->At(j);
                 if( cmd.iCmd == aCmd )  
                     {
                     _LIT(KDesC, "Checking command id = %d ");
                     EUNIT_PRINT( KDesC(), aCmd );
                     TPhoneCmdParamCallHeaderData* value = static_cast<TPhoneCmdParamCallHeaderData*>( cmd.iP );
                     if( CheckCallheaderValues( *value, aValue) == KErrNone )
                         {
                         paramOk = ETrue;
                         break;
                         }
                     }
                 }
             
             EUNIT_ASSERT_DESC( paramOk, "View Call Header param not ok" );
             }

         TInt CheckCallheaderValues(const TPhoneCmdParamCallHeaderData& aActual, 
                 const TPhoneCmdParamCallHeaderData& aExpected )
             {
             EUNIT_PRINT(_L("Checking CallHeaderData"));
             if( aActual.CallState() != aExpected.CallState())
                 {
                 EUNIT_PRINT(_L("CallState does not match."));
                 return KErrNotFound;
                 }
             
             if(aActual.Line2() != aExpected.Line2() )
                 {
                 EUNIT_PRINT(_L("Line2 does not match."));
                 return KErrNotFound;
                 }
                 
             return KErrNone;
             }

         void SetViewGetCountOfActiveCalls( TInt aValue )
             {
             iActiveCallCount = aValue;
             }


         void SetViewGetCallExistsInConference( TInt aValue )
             {
             iCallExistsInConference = aValue;
             }         
         
         void ResetCommands()
             {
             if(iCmds)
                 {
                 for(TInt i = 0; i<iCmds->Count(); i++)
                     {
                     TCmds t = iCmds->At(i);
                     delete t.iP;
                 
                     }
                 iCmds->Reset();
                 }
             }         
    public: // members 
         TPhoneViewResponseId iViewResponseId;
         CArrayFixFlat<TCmds>* iCmds;
         TInt                  iCallId;
         TInt                  iActiveCallCount;
         TBool                 iCallExistsInConference;
         TBool                 iHoldFlag; 
    };