phoneapp/phoneuiqtviewadapter/src/phonecommandextensionwrapper.cpp
author William Roberts <williamr@symbian.org>
Thu, 22 Jul 2010 16:33:21 +0100
branchGCC_SURGE
changeset 51 f39ed5e045e0
parent 22 6bb1b21d2484
parent 45 6b911d05207e
permissions -rw-r--r--
Catchup to latest Symbian^4

/*!
* 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 "qtphonelog.h"
#include <xqplugin.h>
#include <xqpluginloader.h>
#include <pevirtualengine.h>


PhoneCommandExtensionWrapper::PhoneCommandExtensionWrapper(int pluginUid) :
    m_plugin(0),m_pluginUid(pluginUid)
{
    PHONE_DEBUG("PhoneCommandExtensionWrapper::PhoneMenuExtensionWrapper");
    XQPluginLoader pluginLoader;
    pluginLoader.setUid(m_pluginUid);

    QObject *plugin = pluginLoader.instance();

    if (plugin) {
        m_plugin = qobject_cast<XQTelUiCommandExtension*>(plugin);
    }
}

PhoneCommandExtensionWrapper::~PhoneCommandExtensionWrapper()
{
    PHONE_DEBUG("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::modifyToolBarCommandList(
        const QList<XQTelUiCommandExtension::CallInfo> &callInfo,
        QList<XQTelUiCommandExtension::ToolBarCommand> &toolBarCmdList)
{
    if (m_plugin) {
        m_plugin->modifyToolBarCommandList(callInfo, toolBarCmdList);
    }
}

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;
}