phoneapp/phoneuiqtviewadapter/src/phonebubblewrapper.cpp
changeset 36 2eacb6118286
parent 30 ebdbd102c78a
child 37 ba76fc04e6c2
--- a/phoneapp/phoneuiqtviewadapter/src/phonebubblewrapper.cpp	Fri May 14 15:51:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,411 +0,0 @@
-/*!
-* 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:  Bubble Wrapper.
-*
-*/
-
-#include <hbaction.h>
-#include <pevirtualengine.h>
-
-#include "bubblemanagerif.h"
-#include "phonebubblewrapper.h"
-#include "phoneconstants.h"
-#include "qtphonelog.h"
-
-PhoneBubbleWrapper::PhoneBubbleWrapper (BubbleManagerIF& bubble, QObject *parent) :
-    QObject (parent), m_bubbleManager (bubble)
-{
-}
-
-PhoneBubbleWrapper::~PhoneBubbleWrapper ()
-{
-    
-}
-
-void PhoneBubbleWrapper::updateCallState (int callId, int newState)
-{
-    // TODO: +1 callId because value 0 causes problems
-    //       when using QMap. Bug in S60 Qt?
-    m_callStates [callId] = newState;
-}
-
-int PhoneBubbleWrapper::callId (int state)
-{
-    // Returns call id or -1 if not found
-    // TODO: callId -1 because we +1 callId when inserted
-    //       This is because callId 0 causes problems in QMap.
-    int callId = m_callStates.key (state, -1);
-    return callId;
-}
-
-int PhoneBubbleWrapper::createCallHeader (int callId)
-{
-    int bubble;
-
-    if (!m_bubbles.contains (callId)) {
-        bubble = m_bubbleManager.createCallHeader ();
-        m_bubbles.insert (callId, bubble);
-    }
-    else {
-        bubble = m_bubbles [callId];    
-    }
-    
-    return bubble;
-}
-
-void PhoneBubbleWrapper::removeCallHeader (int callId)
-{
-    if (m_bubbles.contains (callId)) {
-        m_bubbleManager.removeCallHeader (m_bubbles [callId]);
-        m_bubbles.remove (callId);       
-    }
-}
-
-BubbleManagerIF& PhoneBubbleWrapper::bubbleManager ()
-{
-    return m_bubbleManager;
-}
-
-void PhoneBubbleWrapper::setState (int callId, int bubble, int callState)
-{
-    BubbleManagerIF::PhoneCallState state = BubbleManagerIF::None;
-    
-    switch (callState) {
-        case EPEStateIdle:
-            state = BubbleManagerIF::Disconnected;
-            break;
-        case EPEStateDialing:
-            state = BubbleManagerIF::Outgoing;
-            break;
-        case EPEStateRinging:
-            if ( m_bubbles.count() > 1 ) {
-                state = BubbleManagerIF::Waiting;
-            }
-            else {
-                state = BubbleManagerIF::Incoming;
-            }
-            break;
-        case EPEStateConnecting:
-            state = BubbleManagerIF::Alerting;
-            break;
-        case EPEStateConnected:
-            state = BubbleManagerIF::Active;
-            break;
-        case EPEStateHeld:
-            state = BubbleManagerIF::OnHold;
-            break;
-        case EPEStateDisconnecting:
-            state = BubbleManagerIF::Disconnected;
-            break;
-        case EPEStateConferenceIdle:
-            state = BubbleManagerIF::Disconnected;
-            break;
-        case EPEStateConnectedConference:
-            state = BubbleManagerIF::Active;
-            break;
-        case EPEStateHeldConference:
-            state = BubbleManagerIF::OnHold;
-            break;
-        case EPEStateUnknown:
-            state = BubbleManagerIF::None;
-            break;
-        default:
-            break;
-    }
-    
-    updateCallState (callId, callState);
-    m_bubbleManager.setState (bubble, state);
-
-}
-
-void PhoneBubbleWrapper::setLabel (int bubble, const TDesC &text)
-{
-    QString labelText = QString::fromUtf16 (text.Ptr (), text.Length ());
-    PHONE_DEBUG2("PhoneBubbleWrapper::setLabel, label:", labelText); 
-    m_bubbleManager.setLabel (bubble, labelText, Qt::ElideRight);
-}
-
-void PhoneBubbleWrapper::setCli (int bubble, const TDesC &cliText)
-{
-    QString text = QString::fromUtf16 (cliText.Ptr (), cliText.Length ());
-    PHONE_DEBUG2("PhoneBubbleWrapper::setCli, cli:", text); 
-    m_bubbleManager.setCli (bubble, text, Qt::ElideRight);
-}
-
-void PhoneBubbleWrapper::setSecondaryCli (int bubble, const TDesC &cliText)
-{
-    QString text = QString::fromUtf16 (cliText.Ptr (), cliText.Length ());
-    PHONE_DEBUG2("PhoneBubbleWrapper::setSecondaryCli, SecondaryCli:", text); 
-    m_bubbleManager.setSecondaryCli (bubble, text);
-}
-
-void PhoneBubbleWrapper::setCallType (int bubble, int callType)
-{
-    BubbleManagerIF::PhoneCallFlags callflag = BubbleManagerIF::Normal;
-
-    switch (callType) {
-        case EPECallTypeCSVoice:
-            callflag = BubbleManagerIF::Normal;
-            break;
-        case EPECallTypeVideo:
-            callflag = BubbleManagerIF::Video;
-            break;
-        case EPECallTypeVoIP:
-            callflag = BubbleManagerIF::VoIPCall;
-            break;
-        default:
-            break;
-    }
-
-    m_bubbleManager.setCallFlag (bubble, callflag, true);
-}
-
-int PhoneBubbleWrapper::bubbleId (int callId)
-{
-    return m_bubbles.value (callId, -1);
-}
-
-void PhoneBubbleWrapper::setDivert (int bubble, bool enabled)
-{
-    if (enabled) {
-        BubbleManagerIF::PhoneCallFlags divertedFlag = BubbleManagerIF::Diverted;
-        m_bubbleManager.setCallFlag (bubble, divertedFlag, true);
-    }
-}
-
-void PhoneBubbleWrapper::setCiphering(int bubble, bool indicatorAllowed, bool enabled)
-{
-    if (indicatorAllowed && !enabled) {
-        m_bubbleManager.setCallFlag (bubble, BubbleManagerIF::NoCiphering, true);
-    } else {
-        m_bubbleManager.setCallFlag (bubble, BubbleManagerIF::NoCiphering, false);
-    }
-}
-
-int PhoneBubbleWrapper::activeCallCount()
-{
-    int count(0);
-    QMap<int, int> callStateList = callStates();
-    
-    for (int i=0; i<callStateList.size(); ++i) {
-        if ( callStateList.values().at(i) == EPEStateConnected ||
-             callStateList.values().at(i) == EPEStateConnectedConference || 
-             callStateList.values().at(i) == EPEStateDisconnecting ||
-             callStateList.values().at(i) == EPEStateHeld ||
-             callStateList.values().at(i) == EPEStateHeldConference ) {
-             count++;
-         }
-    }
-    
-    return count;
-}
-
-QMap<int, int> PhoneBubbleWrapper::callStates() const 
-{
-    QMap<int, int> ret;
-    
-    for (int i=0; i<m_callStates.size(); ++i) {
-        if ( false == m_conferenceList.contains(m_callStates.keys().at(i)) 
-             && m_bubbles.keys().contains(m_callStates.keys().at(i)) ) {
-            ret.insert(m_callStates.keys().at(i), 
-                       m_callStates.value(m_callStates.keys().at(i)));
-        }
-    }
-    
-    return ret;
-}
-
-QMap<int, int> PhoneBubbleWrapper::bubbles() const
-{
-    QMap<int, int> ret;
-    
-    for (int i=0; i<m_bubbles.size(); ++i) {
-        if ( false == m_conferenceList.contains(m_bubbles.keys().at(i)) ) {
-            ret.insert(m_bubbles.keys().at(i), m_bubbles.value(m_bubbles.keys().at(i)));
-        }
-    }
-    
-    return ret;
-}
-
-int PhoneBubbleWrapper::createConferenceBubble(
-        int callId,
-        int callState,
-        const TDesC &labelText, 
-        const TDesC &cliText)
-{
-    int callId1;
-    int callId2;
-    int bubble = -1;
-    if (getCallIdsForConference(callId1, callId2)) {
-        m_bubbleManager.startChanges();
-        bubble = m_bubbleManager.createConference( 
-                bubbleId(callId1), 
-                bubbleId(callId2) );
-        
-        setConferenceCallId(callId1);
-        setConferenceCallId(callId2);
-        
-        m_bubbles.insert(callId,bubble);
-        setState(callId, bubble, callState );
-        setLabel(bubble, labelText);
-        setCli (bubble, cliText);
-        
-        //Set conference bubble expanded if no other
-        //bubbles (like waiting bubble).
-        m_bubbleManager.setExpandedConferenceCallHeader(
-                (1==bubbles().size()));
-        
-        m_bubbleManager.endChanges();
-    }
-    
-    return bubble;
-}
-
-void PhoneBubbleWrapper::setConferenceCallId(int callId) 
-{
-    if ( false == m_conferenceList.contains(callId) ) {
-        m_conferenceList.append(callId);
-    }
-}
-
-void PhoneBubbleWrapper::removeConferenceCallId(int callId) 
-{
-    if ( m_conferenceList.contains(callId) ) {
-        m_conferenceList.removeOne(callId);
-    }
-}
-
-bool PhoneBubbleWrapper::conferenceCallId(int callId) const
-{
-    return m_conferenceList.contains(callId);
-}
-
-void PhoneBubbleWrapper::removeCallFromConference(int callId)
-{
-    if (m_conferenceList.contains(callId)) {
-        m_bubbleManager.startChanges();
-        if(1<m_conferenceList.size()) {
-            m_bubbleManager.removeRowFromConference(m_bubbles.value(callId));
-            m_conferenceList.removeOne(callId);
-            }
-        else {
-            m_bubbleManager.removeConference();
-
-            if (m_bubbles.contains(KConferenceCallId)) {
-                m_bubbles.remove(KConferenceCallId);
-            } 
-            m_conferenceList.clear();
-        }
-        
-        m_bubbleManager.endChanges();        
-    }
-}
-
-QList<int> PhoneBubbleWrapper::conferenceCallList() const
-    {
-    return m_conferenceList;
-    }
-
-void PhoneBubbleWrapper::removeConferenceBubble()
-{
-    if (0 < m_conferenceList.size()) {
-        m_bubbleManager.removeConference();
-        m_bubbleManager.setExpandedConferenceCallHeader(false);
-        
-        if (m_bubbles.contains(KConferenceCallId)) {
-            m_bubbles.remove(KConferenceCallId);
-        }        
-        m_conferenceList.clear();  
-    }
-}
-
-int PhoneBubbleWrapper::callIdByBubbleId(int bubbleId)
-{
-    return m_bubbles.key(bubbleId, -1);
-}
-
-void PhoneBubbleWrapper::addToConferenceBubble()
-{
-    if (m_conferenceList.size()) {
-        int callId = callIdForConference();
-        if (-1 != callId && 
-                false == m_conferenceList.contains(callId)) {
-            m_bubbleManager.startChanges();
-            setConferenceCallId(callId);
-            m_bubbleManager.addRowToConference(bubbleId(callId));
-            m_bubbleManager.endChanges();
-        }        
-    }
-}
- 
-int PhoneBubbleWrapper::callIdForConference()
-{
-    int callId = -1;
-    QMap<int, int> bubblelist = bubbles();
-    for (int i=0; i<bubblelist.size() && callId == -1; ++i) {
-        if (KConferenceCallId != bubblelist.keys().at(i)) {
-            if ( bubblelist.size() > 2 ) {
-                if (EPEStateRinging != 
-                        m_callStates.value(bubblelist.keys().at(i))) {
-                    callId = bubblelist.keys().at(i);
-                }
-            } else {
-                callId = bubblelist.keys().at(i);
-            }
-        }
-    }
-    
-    return callId;
-}
-
-bool PhoneBubbleWrapper::getCallIdsForConference(int &first, int &second)
-{
-    first = -1;
-    second = -1;
-    
-    if (2==m_bubbles.values().size()) {
-        first = m_bubbles.keys().first();
-        second = m_bubbles.keys().at(1);
-    } else if (2<=m_bubbles.values().size()) {
-        for (int i=0;i<m_callStates.values().size();++i) {
-            if ( m_callStates.values().at(i) != EPEStateRinging ) {
-                if (first==-1) {
-                    first = m_callStates.keys().at(i);
-                } else {
-                    second = m_callStates.keys().at(i);
-                    break;
-                }
-            }
-        } // For
-    }
-        
-    return (first!=-1 && second!=-1);
-}
-
-void PhoneBubbleWrapper::setServiceId(int callId, int serviceId)
-{
-    m_services[callId] = serviceId;
-}
-
-int PhoneBubbleWrapper::serviceIdByCallId(int callId) const
-{
-    return m_services.value(callId, -1);
-}
-
-QMap<int, int> PhoneBubbleWrapper::serviceIds() const 
-{    
-    return m_services;
-}
-