phoneapp/phoneuiqtviewadapter/src/phonecommandextensionwrapper.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Mar 2010 09:28:42 +0200
changeset 21 92ab7f8d0eab
child 22 6bb1b21d2484
permissions -rw-r--r--
Revision: 201007 Kit: 201011

/*!
* 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:  Wraps phone command extensions.
*/

#include "phonecommandextensionwrapper.h"
#include <QtDebug>
#include <xqplugin.h>
#include <xqpluginloader.h>
#include <pevirtualengine.h>

  
PhoneCommandExtensionWrapper::PhoneCommandExtensionWrapper(int pluginUid) :
    m_plugin(0),m_pluginUid(pluginUid)
{
    qDebug() << "PhoneCommandExtensionWrapper::PhoneMenuExtensionWrapper";    
    XQPluginLoader pluginLoader;
    pluginLoader.setUid(m_pluginUid);
    
    QObject *plugin = pluginLoader.instance();
    
    if (plugin) {
        m_plugin = qobject_cast<XQTelUiCommandExtension*>(plugin);
    }
}

PhoneCommandExtensionWrapper::~PhoneCommandExtensionWrapper()
{
    qDebug() << "PhoneCommandExtensionWrapper::~PhoneCommandExtensionWrapper";
    release();
}

int PhoneCommandExtensionWrapper::pluginUid()
{
    return m_pluginUid;
}

void PhoneCommandExtensionWrapper::modifyMenuCommandList(
        const QList<XQTelUiCommandExtension::CallInfo> &callInfo, 
        QList<int> &menuCmdList)
{   
    if (m_plugin) {
        m_plugin->modifyMenuCommandList(callInfo, menuCmdList);
    }
}

void PhoneCommandExtensionWrapper::modifyPushButtonCommandList(
        const QList<XQTelUiCommandExtension::CallInfo> &callInfo, 
        QList<int> &buttonCmdList)
{   
    if (m_plugin) {
        m_plugin->modifyPushButtonCommandList(callInfo, buttonCmdList);
    }
}

void PhoneCommandExtensionWrapper::addMenuActions(
        const QList<XQTelUiCommandExtension::CallInfo> &callInfo,
        QList<HbAction*> &menuActions)
{
    if (m_plugin) {
        m_plugin->addMenuActions(callInfo,menuActions);
    }
}

void PhoneCommandExtensionWrapper::releaseMenu()
{
    if (m_plugin) {
        m_plugin->releaseMenu();
    }
}

void PhoneCommandExtensionWrapper::release()
{
    if (m_plugin) {
        m_plugin->release();
        m_plugin = 0;
    }
}

void PhoneCommandExtensionWrapper::getCallInfoList(
        QList<XQTelUiCommandExtension::CallInfo> &callInfo,
        QMap<int,int> callStates, 
        QMap<int,int> serviceIds,
        int expandedCall )
{
    for (int i=0;i<callStates.keys().count();++i) {
        XQTelUiCommandExtension::CallInfo info;
        info.mCallState = mapCallState(callStates.values().at(i));
        info.mServiceId = serviceIds.value(callStates.keys().at(i));
        info.mIsExpanded = (expandedCall == callStates.keys().at(i));
        callInfo.append(info);
    }
}

XQTelUiCommandExtension::CallState PhoneCommandExtensionWrapper::mapCallState(
        int callState )
{
    XQTelUiCommandExtension::CallState state(XQTelUiCommandExtension::None);
    
    switch( callState ) {
    case EPEStateDisconnecting: {
        state = XQTelUiCommandExtension::Disconnecting;
    }
    break;
    
    case EPEStateRinging: {
        state = XQTelUiCommandExtension::Incoming;
    }
    break;
    
    case EPEStateDialing:
    case EPEStateConnecting: {
        state = XQTelUiCommandExtension::Outgoing;
    }
    break;
    
    case EPEStateConnected:
    case EPEStateConnectedConference: {
        state = XQTelUiCommandExtension::Active;
    }
    break;
    
    case EPEStateHeld:
    case EPEStateHeldConference: {
        state = XQTelUiCommandExtension::OnHold;
    }
    break;
    
    case EPEStateUnknown:
    case EPEStateIdle:
    case EPEStateConferenceIdle:   
    break;
    
    default:
    break;
    }
    
    return state;
}