phoneapp/phoneuicontrol/src/phonecallutil.cpp
author hgs
Fri, 15 Oct 2010 12:58:46 +0300
changeset 78 baacf668fe89
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
78
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Acessory and Bluetooth handler.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// INCLUDE FILES
hgs
parents:
diff changeset
    20
#include    "phonecallutil.h"
hgs
parents:
diff changeset
    21
#include    "mphonestatemachine.h"
hgs
parents:
diff changeset
    22
#include    "mphoneviewcommandhandle.h"
hgs
parents:
diff changeset
    23
#include    "cphonestatehandle.h"
hgs
parents:
diff changeset
    24
#include    "tphonecmdparamboolean.h"
hgs
parents:
diff changeset
    25
#include    "tphonecmdparaminteger.h"
hgs
parents:
diff changeset
    26
#include    "cphonemediatorfactory.h"
hgs
parents:
diff changeset
    27
#include    "cphonemediatorsender.h"
hgs
parents:
diff changeset
    28
#include    "cphonereleasecommand.h"
hgs
parents:
diff changeset
    29
#include    "tphonecmdparamcallstatedata.h" 
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include    <videotelcontrolmediatorapi.h>
hgs
parents:
diff changeset
    32
#include    <MediatorDomainUIDs.h>
hgs
parents:
diff changeset
    33
#include    <pevirtualengine.h>
hgs
parents:
diff changeset
    34
#include    <mpeengineinfo.h>
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// CONSTANTS
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    39
hgs
parents:
diff changeset
    40
// ---------------------------------------------------------
hgs
parents:
diff changeset
    41
// PhoneCallUtil::DialMultimediaCall
hgs
parents:
diff changeset
    42
// ---------------------------------------------------------
hgs
parents:
diff changeset
    43
//
hgs
parents:
diff changeset
    44
EXPORT_C void PhoneCallUtil::DialMultimediaCall()
hgs
parents:
diff changeset
    45
    {    
hgs
parents:
diff changeset
    46
    MPhoneStateMachine* stateMachine = StateMachine();
hgs
parents:
diff changeset
    47
    stateMachine->PhoneEngineInfo()->SetCallTypeCommand( EPECallTypeVideo );
hgs
parents:
diff changeset
    48
    stateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageDial );
hgs
parents:
diff changeset
    49
    }
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------
hgs
parents:
diff changeset
    52
// PhoneCallUtil::DialVoiceCallL
hgs
parents:
diff changeset
    53
// ---------------------------------------------------------
hgs
parents:
diff changeset
    54
//
hgs
parents:
diff changeset
    55
EXPORT_C void PhoneCallUtil::DialVoiceCallL()
hgs
parents:
diff changeset
    56
    {
hgs
parents:
diff changeset
    57
    MPhoneStateMachine* stateMachine = StateMachine();
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    TPhoneCmdParamBoolean globalNotifierParam;
hgs
parents:
diff changeset
    60
    globalNotifierParam.SetBoolean( ETrue );
hgs
parents:
diff changeset
    61
    ViewCommandHandle()->ExecuteCommandL( EPhoneViewSetGlobalNotifiersDisabled,
hgs
parents:
diff changeset
    62
            &globalNotifierParam );
hgs
parents:
diff changeset
    63
    stateMachine->PhoneEngineInfo()->SetCallTypeCommand( EPECallTypeCSVoice );
hgs
parents:
diff changeset
    64
    stateMachine->SendPhoneEngineMessage( MPEPhoneModel::EPEMessageDial );
hgs
parents:
diff changeset
    65
    }
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
// -----------------------------------------------------------
hgs
parents:
diff changeset
    68
// PhoneCallUtil::DisconnectCallL
hgs
parents:
diff changeset
    69
// -----------------------------------------------------------
hgs
parents:
diff changeset
    70
//
hgs
parents:
diff changeset
    71
EXPORT_C TBool PhoneCallUtil::DisconnectCallL()
hgs
parents:
diff changeset
    72
    {
hgs
parents:
diff changeset
    73
    MPhoneStateMachine* stateMachine = StateMachine();
hgs
parents:
diff changeset
    74
    TPhoneCmdParamInteger callIdParam;
hgs
parents:
diff changeset
    75
    
hgs
parents:
diff changeset
    76
    ViewCommandHandle()->ExecuteCommand( 
hgs
parents:
diff changeset
    77
            EPhoneViewGetExpandedBubbleCallId, &callIdParam );
hgs
parents:
diff changeset
    78
    TBool ret = EFalse;
hgs
parents:
diff changeset
    79
    if( callIdParam.Integer() > KErrNotFound )
hgs
parents:
diff changeset
    80
        {
hgs
parents:
diff changeset
    81
        stateMachine->SetCallId( callIdParam.Integer() );
hgs
parents:
diff changeset
    82
        if( IsVideoCall( callIdParam.Integer() ) )
hgs
parents:
diff changeset
    83
            {
hgs
parents:
diff changeset
    84
            // Video call can be released only after we get response to VT Shutdown Command
hgs
parents:
diff changeset
    85
            CPhoneMediatorFactory::Instance()->Sender()->IssueCommand( 
hgs
parents:
diff changeset
    86
                    KMediatorVideoTelephonyDomain,
hgs
parents:
diff changeset
    87
                             KCatPhoneToVideotelCommands,
hgs
parents:
diff changeset
    88
                             EVtCmdReleaseDataport,
hgs
parents:
diff changeset
    89
                   TVersion( KPhoneToVideotelCmdVersionMajor,
hgs
parents:
diff changeset
    90
                             KPhoneToVideotelCmdVersionMinor,
hgs
parents:
diff changeset
    91
                             KPhoneToVideotelCmdVersionBuild ),
hgs
parents:
diff changeset
    92
                   KNullDesC8,
hgs
parents:
diff changeset
    93
                   CPhoneReleaseCommand::NewL( *stateMachine ) );
hgs
parents:
diff changeset
    94
            }
hgs
parents:
diff changeset
    95
        else
hgs
parents:
diff changeset
    96
            {
hgs
parents:
diff changeset
    97
            stateMachine->SendPhoneEngineMessage(
hgs
parents:
diff changeset
    98
                MPEPhoneModel::EPEMessageRelease );
hgs
parents:
diff changeset
    99
            }
hgs
parents:
diff changeset
   100
        
hgs
parents:
diff changeset
   101
        ret = ETrue;
hgs
parents:
diff changeset
   102
        }
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    return ret;
hgs
parents:
diff changeset
   105
    }
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
// ---------------------------------------------------------
hgs
parents:
diff changeset
   109
// PhoneCallUtil::IsVideoCall
hgs
parents:
diff changeset
   110
// ---------------------------------------------------------
hgs
parents:
diff changeset
   111
//
hgs
parents:
diff changeset
   112
EXPORT_C TBool PhoneCallUtil::IsVideoCall( const TInt aCallId )
hgs
parents:
diff changeset
   113
    {
hgs
parents:
diff changeset
   114
    if ( aCallId < 0 )
hgs
parents:
diff changeset
   115
        {
hgs
parents:
diff changeset
   116
        return EFalse;
hgs
parents:
diff changeset
   117
        }
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
    return EPECallTypeVideo == StateMachine()->PhoneEngineInfo()->
hgs
parents:
diff changeset
   120
                CallType( aCallId );
hgs
parents:
diff changeset
   121
    }
hgs
parents:
diff changeset
   122
hgs
parents:
diff changeset
   123
// ---------------------------------------------------------
hgs
parents:
diff changeset
   124
// PhoneCallUtil::CallIdByState
hgs
parents:
diff changeset
   125
// ---------------------------------------------------------
hgs
parents:
diff changeset
   126
//
hgs
parents:
diff changeset
   127
EXPORT_C TInt PhoneCallUtil::CallIdByState( const TPEState aCallState )
hgs
parents:
diff changeset
   128
    {
hgs
parents:
diff changeset
   129
    TPhoneCmdParamCallStateData callStateData;
hgs
parents:
diff changeset
   130
    callStateData.SetCallState( aCallState );
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
    ViewCommandHandle()->ExecuteCommand(
hgs
parents:
diff changeset
   133
        EPhoneViewGetCallIdByState, &callStateData );
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
    return callStateData.CallId();
hgs
parents:
diff changeset
   136
    }
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
// ---------------------------------------------------------
hgs
parents:
diff changeset
   139
// PhoneCallUtil::CheckIfCallExists
hgs
parents:
diff changeset
   140
// ---------------------------------------------------------
hgs
parents:
diff changeset
   141
//
hgs
parents:
diff changeset
   142
EXPORT_C TBool PhoneCallUtil::CheckIfCallExists( 
hgs
parents:
diff changeset
   143
        const TPEState aCallState, const TPECallType aCallType )
hgs
parents:
diff changeset
   144
    {
hgs
parents:
diff changeset
   145
    TBool retVal = EFalse;
hgs
parents:
diff changeset
   146
    TInt callId = CallIdByState( aCallState );
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    if ( callId > 0 && 
hgs
parents:
diff changeset
   149
         aCallType == StateMachine()->PhoneEngineInfo()->
hgs
parents:
diff changeset
   150
            CallType( callId ) )
hgs
parents:
diff changeset
   151
        {
hgs
parents:
diff changeset
   152
        retVal = ETrue;
hgs
parents:
diff changeset
   153
        }
hgs
parents:
diff changeset
   154
    
hgs
parents:
diff changeset
   155
    return retVal;
hgs
parents:
diff changeset
   156
    }
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
// -----------------------------------------------------------
hgs
parents:
diff changeset
   159
// PhoneCallUtil::IsAnyConnectedCalls
hgs
parents:
diff changeset
   160
// -----------------------------------------------------------
hgs
parents:
diff changeset
   161
//
hgs
parents:
diff changeset
   162
EXPORT_C TBool PhoneCallUtil::IsAnyConnectedCalls()
hgs
parents:
diff changeset
   163
    {
hgs
parents:
diff changeset
   164
    TBool connectedCall(EFalse);
hgs
parents:
diff changeset
   165
    MPhoneStateMachine* stateMachine = StateMachine();
hgs
parents:
diff changeset
   166
    
hgs
parents:
diff changeset
   167
    if ( stateMachine->PhoneEngineInfo()->CheckIfCallStateExists( 
hgs
parents:
diff changeset
   168
            EPEStateConnected ) ||
hgs
parents:
diff changeset
   169
         stateMachine->PhoneEngineInfo()->CheckIfCallStateExists( 
hgs
parents:
diff changeset
   170
            EPEStateConnecting ) ||
hgs
parents:
diff changeset
   171
         stateMachine->PhoneEngineInfo()->CheckIfCallStateExists( 
hgs
parents:
diff changeset
   172
            EPEStateConnectedConference ) )
hgs
parents:
diff changeset
   173
        {
hgs
parents:
diff changeset
   174
        connectedCall = ETrue;
hgs
parents:
diff changeset
   175
        }
hgs
parents:
diff changeset
   176
hgs
parents:
diff changeset
   177
    return connectedCall;
hgs
parents:
diff changeset
   178
    }
hgs
parents:
diff changeset
   179
hgs
parents:
diff changeset
   180
// ---------------------------------------------------------
hgs
parents:
diff changeset
   181
//  PhoneCallUtil::ViewCommandHandle
hgs
parents:
diff changeset
   182
// ---------------------------------------------------------
hgs
parents:
diff changeset
   183
//
hgs
parents:
diff changeset
   184
MPhoneViewCommandHandle* PhoneCallUtil::ViewCommandHandle()
hgs
parents:
diff changeset
   185
    {   
hgs
parents:
diff changeset
   186
    return CPhoneStateHandle::Instance()->ViewCommandHandle();
hgs
parents:
diff changeset
   187
    }
hgs
parents:
diff changeset
   188
hgs
parents:
diff changeset
   189
// ---------------------------------------------------------
hgs
parents:
diff changeset
   190
//  PhoneCallUtil::StateMachine
hgs
parents:
diff changeset
   191
// ---------------------------------------------------------
hgs
parents:
diff changeset
   192
//
hgs
parents:
diff changeset
   193
MPhoneStateMachine* PhoneCallUtil::StateMachine()
hgs
parents:
diff changeset
   194
    {   
hgs
parents:
diff changeset
   195
    return CPhoneStateHandle::Instance()->StateMachine();
hgs
parents:
diff changeset
   196
    }
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
//  End of File