48 // C++ default constructor can NOT contain any code, that |
53 // C++ default constructor can NOT contain any code, that |
49 // might leave. |
54 // might leave. |
50 // ----------------------------------------------------------------------------- |
55 // ----------------------------------------------------------------------------- |
51 // |
56 // |
52 CPhoneHandlerCallState::CPhoneHandlerCallState( CPhoneHandlerControl& aControl ) |
57 CPhoneHandlerCallState::CPhoneHandlerCallState( CPhoneHandlerControl& aControl ) |
53 : CActive(CActive::EPriorityStandard), |
58 : iControl( aControl ) |
54 iControl( aControl ) |
59 { |
55 { |
60 } |
56 CActiveScheduler::Add(this); |
|
57 } |
|
58 |
61 |
59 // ----------------------------------------------------------------------------- |
62 // ----------------------------------------------------------------------------- |
60 // CPhoneHandlerCallState::ConstructL |
63 // CPhoneHandlerCallState::ConstructL |
61 // Symbian 2nd phase constructor can leave. |
64 // Symbian 2nd phase constructor can leave. |
62 // ----------------------------------------------------------------------------- |
65 // ----------------------------------------------------------------------------- |
63 // |
66 // |
64 void CPhoneHandlerCallState::ConstructL() |
67 void CPhoneHandlerCallState::ConstructL() |
65 { |
68 { |
66 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() start" ); |
69 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() start" ); |
67 |
70 |
68 // Allows CPhoneHandlerCallState to start to listen S60 call states. |
71 // Allows CPhoneHandlerCallState to start to listen call states. |
69 User::LeaveIfError( |
72 iInfo = CCallInformation::NewL(); |
70 iProperty.Attach( KPSUidCtsyCallInformation, KCTsyCallState ) ); |
73 iInfo->NotifyCallInformationChanges(*this); |
71 |
74 |
72 Subscribe(); |
75 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() end" ); |
73 |
76 } |
74 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::ConstructL() end" ); |
|
75 } |
|
76 |
77 |
77 // ----------------------------------------------------------------------------- |
78 // ----------------------------------------------------------------------------- |
78 // CPhoneHandlerCallState::NewL |
79 // CPhoneHandlerCallState::NewL |
79 // Two-phased constructor. |
80 // Two-phased constructor. |
80 // ----------------------------------------------------------------------------- |
81 // ----------------------------------------------------------------------------- |
81 CPhoneHandlerCallState* CPhoneHandlerCallState::NewL( CPhoneHandlerControl& aControl ) |
82 CPhoneHandlerCallState* CPhoneHandlerCallState::NewL( CPhoneHandlerControl& aControl ) |
82 { |
83 { |
83 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::NewL()" ); |
84 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::NewL()" ); |
84 |
85 |
85 CPhoneHandlerCallState* self = new(ELeave) CPhoneHandlerCallState( aControl ); |
86 CPhoneHandlerCallState* self = new(ELeave) CPhoneHandlerCallState( aControl ); |
86 CleanupStack::PushL( self ); |
87 CleanupStack::PushL( self ); |
87 self->ConstructL(); |
88 self->ConstructL(); |
88 CleanupStack::Pop( self ); |
89 CleanupStack::Pop( self ); |
89 |
90 |
90 return self; |
91 return self; |
91 } |
92 } |
92 |
93 |
93 // Destructor |
94 // Destructor |
94 CPhoneHandlerCallState::~CPhoneHandlerCallState() |
95 CPhoneHandlerCallState::~CPhoneHandlerCallState() |
95 { |
96 { |
96 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() start" ); |
97 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() start" ); |
97 |
98 |
98 Cancel(); |
99 if ( iInfo ) |
99 iProperty.Cancel(); |
100 { |
100 iProperty.Close(); |
101 iInfo->CancelNotification(); |
101 |
102 delete iInfo; |
102 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() end" ); |
103 } |
|
104 |
|
105 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::~CPhoneHandlerCallState() end" ); |
|
106 } |
|
107 |
|
108 // ----------------------------------------------------------------------------- |
|
109 // CPhoneHandlerCallState::CallInformationChanged |
|
110 // ----------------------------------------------------------------------------- |
|
111 // |
|
112 void CPhoneHandlerCallState::CallInformationChanged() |
|
113 { |
|
114 TRAP_IGNORE( CallInformationChangedL() ); |
103 } |
115 } |
104 |
116 |
105 // ----------------------------------------------------------------------------- |
117 // ----------------------------------------------------------------------------- |
106 // CPhoneHandlerCallState::RunL() |
118 // CPhoneHandlerCallState::CallInformationChangedL |
107 // Informs caller of an asynchronous request that it has been completed. |
|
108 // (other items were commented in a header). |
|
109 // ----------------------------------------------------------------------------- |
119 // ----------------------------------------------------------------------------- |
110 // |
120 // |
111 void CPhoneHandlerCallState::RunL() |
121 void CPhoneHandlerCallState::CallInformationChangedL() |
112 { |
122 { |
113 COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerCallState::RunL() - return code = %d", iStatus.Int() ); |
123 CCallInfoIter& iter = iInfo->GetCallsL(); |
114 |
124 for( iter.First(); !iter.IsDone(); iter.Next() ) |
115 TInt state( 0 ); |
125 { |
116 iProperty.Get( state ); |
126 const MCall* call ( &iter.Current() ); |
117 |
127 if ( call ) |
118 COM_TRACE_1( "[PHONECMDHANDLER] CPhoneHandlerCallState - KTelephonyCallState = %d", state ); |
128 { |
119 |
129 iControl.NotifyCallStateL( call ); |
120 if( iStatus.Int() == KErrNone ) |
130 } |
121 { |
131 } |
122 iControl.NotifyCallState( state ); |
|
123 } |
|
124 |
|
125 Subscribe(); |
|
126 } |
132 } |
127 |
133 |
128 // ----------------------------------------------------------------------------- |
|
129 // CPhoneHandlerCallState::DoCancel |
|
130 // (other items were commented in a header). |
|
131 // ----------------------------------------------------------------------------- |
|
132 // |
|
133 void CPhoneHandlerCallState::DoCancel() |
|
134 { |
|
135 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::DoCancel()" ); |
|
136 |
|
137 iProperty.Cancel(); |
|
138 } |
|
139 |
|
140 // ----------------------------------------------------------------------------- |
|
141 // CPhoneHandlerCallState::Subscribe |
|
142 // Start to listen changes in call state. |
|
143 // (other items were commented in a header). |
|
144 // ----------------------------------------------------------------------------- |
|
145 // |
|
146 void CPhoneHandlerCallState::Subscribe() |
|
147 { |
|
148 COM_TRACE_( "[PHONECMDHANDLER] CPhoneHandlerCallState::Subscribe()" ); |
|
149 |
|
150 iProperty.Subscribe( iStatus ); |
|
151 SetActive(); |
|
152 } |
|
153 |
|
154 // |
|
155 // End of file |
134 // End of file |