telutils/xqtelephonyservice/src/xqcallinfoimpl.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telutils/xqtelephonyservice/src/xqcallinfoimpl.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* 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:  Provides implementation for XQCallInfo -class.
+*
+*/
+
+#include "xqcallinfoimpl.h"
+#include <ccallinformation.h>
+#include <ccallinfoiter.h>
+#include <mcall.h>
+
+XQCallInfoImpl::XQCallInfoImpl(): XQCallInfo(), m_CallInformation(0)
+{
+    TRAPD( error, m_CallInformation = CCallInformation::NewL());
+    qt_symbian_throwIfError(error);
+    setCallInformationObserver();
+}
+
+XQCallInfoImpl::~XQCallInfoImpl()
+{
+    delete m_CallInformation;
+}
+
+void XQCallInfoImpl::setCallInformationObserver()
+{
+    m_CallInformation->NotifyCallInformationChanges(*this);
+}
+
+void XQCallInfoImpl::getCalls(QList<CallInfo> &calls)
+{
+    TRAPD( error, m_Iter = &m_CallInformation->GetCallsL() );
+    qt_symbian_throwIfError(error);
+    
+    for (m_Iter->First(); !m_Iter->IsDone(); m_Iter->Next()) {
+        const MCall& call = m_Iter->Current();
+        CallInfo callInfo;
+        callInfo.m_Direction = call.CallDirection();
+        callInfo.m_Index = call.CallIndex();
+        callInfo.m_ServiceId = call.ServiceId();
+        callInfo.m_Type = call.CallType();
+        callInfo.m_State = call.CallState();
+        calls.append(callInfo);
+     }
+}
+
+bool XQCallInfoImpl::isCallInState(CCPCall::TCallState state) const
+{
+    return m_CallInformation->IsCallInState(state);
+}
+
+void XQCallInfoImpl::CallInformationChanged()
+{
+    XQCallInfo::sendCallInfoChangedSignal();
+}