cmmanager/connection_settings_shim/src/cmconnectionmethod_shim_s60.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 12:53:07 +0300
changeset 20 9c97ad6591ae
child 40 c5b848e6c7d1
permissions -rw-r--r--
Revision: 201015 Kit: 201018

/*
 * Copyright (c) 2010 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:  
 * Private implementation of Wrapper for CM Manager Symbian interface.
 */

// System includes

#include <utf.h>

// User includes

#include "cmconnectionmethod_shim_s60_p.h"
#include "OstTraceDefinitions.h"
#ifdef OST_TRACE_COMPILER_IN_USE
#include "cmconnectionmethod_shim_s60Traces.h"
#endif


/*!
    \class CmConnectionMethodShimPrivate
    \brief Private implementation class for CM Manager Connection Method Shim.

    Wrapper for CM Manager Symbian interface. Symbian leaves are converted to
    standard C++ exceptions.
    
    Wrapper functions are identical to those in CmConnectionMethodShim class,
    so refer to cmconnectionmethod_shim.h for descriptions. Private functions
    in this class are just leaving versions of the same wrapper functions.
*/

// External function prototypes

// Local constants

// ======== LOCAL FUNCTIONS ========

// ======== MEMBER FUNCTIONS ========

/*!
 *  Constructor.
 *  
 *  @param[in] cm CM Manager connection method object.
 */

CmConnectionMethodShimPrivate::CmConnectionMethodShimPrivate(
    RCmConnectionMethod &cm) :
    iCm(cm)
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_ENTRY);
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_EXIT);
}

/*!
 *  Destructor.
 */

CmConnectionMethodShimPrivate::~CmConnectionMethodShimPrivate()
{
    OstTraceFunctionEntry0(DUP1_CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_ENTRY);
    
    iCm.Close();

    OstTraceFunctionExit0(DUP1_CMCONNECTIONMETHODSHIMPRIVATE_CMCONNECTIONMETHODSHIMPRIVATE_EXIT);
}
   
uint CmConnectionMethodShimPrivate::GetIntAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute) const
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETINTATTRIBUTE_ENTRY);
    
    uint value = 0;
    TRAPD(error, value = iCm.GetIntAttributeL(attribute));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETINTATTRIBUTE_EXIT);
    return value;
}

bool CmConnectionMethodShimPrivate::GetBoolAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute) const
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETBOOLATTRIBUTE_ENTRY);
    
    bool value = false;
    TRAPD(error, value = iCm.GetBoolAttributeL(attribute));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETBOOLATTRIBUTE_EXIT);
    return value;
}

QString CmConnectionMethodShimPrivate::GetStringAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute) const
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRINGATTRIBUTE_ENTRY);
    
    QString value;
    TRAPD(error, GetStringAttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRINGATTRIBUTE_EXIT);
    return value;
}

QString CmConnectionMethodShimPrivate::GetString8Attribute( 
    CMManagerShim::ConnectionMethodAttribute attribute) const
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRING8ATTRIBUTE_ENTRY);
    
    QString value;
    TRAPD(error, GetString8AttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_GETSTRING8ATTRIBUTE_EXIT);
    return value;
}

void CmConnectionMethodShimPrivate::SetIntAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    uint value)
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETINTATTRIBUTE_ENTRY);
    
    TRAPD(error, SetIntAttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETINTATTRIBUTE_EXIT);
}

void CmConnectionMethodShimPrivate::SetBoolAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    bool value)
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETBOOLATTRIBUTE_ENTRY);
    
    TRAPD(error, SetBoolAttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETBOOLATTRIBUTE_EXIT);
}

void CmConnectionMethodShimPrivate::SetStringAttribute( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString value)
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRINGATTRIBUTE_ENTRY);
    
    TRAPD(error, SetStringAttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);

    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRINGATTRIBUTE_EXIT);
}

void CmConnectionMethodShimPrivate::SetString8Attribute( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString value)
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRING8ATTRIBUTE_ENTRY);
    
    TRAPD(error, SetString8AttributeL(attribute, value));
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_SETSTRING8ATTRIBUTE_EXIT);
}

bool CmConnectionMethodShimPrivate::DeleteConnectionMethod()
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_DELETECONNECTIONMETHOD_ENTRY);
    
    bool value = false;
    TRAPD(error, value = iCm.DeleteL());
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_DELETECONNECTIONMETHOD_EXIT);
    return value;
}
     
void CmConnectionMethodShimPrivate::Update()
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_UPDATE_ENTRY);
    
    TRAPD(error, iCm.UpdateL());
    TraceIfError(error);
    qt_symbian_throwIfError(error);

    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_UPDATE_EXIT);
}

void CmConnectionMethodShimPrivate::Refresh()
{
    OstTraceFunctionEntry0(CMCONNECTIONMETHODSHIMPRIVATE_REFRESH_ENTRY);
    
    TRAPD(error, iCm.RefreshL());
    TraceIfError(error);
    qt_symbian_throwIfError(error);
    
    OstTraceFunctionExit0(CMCONNECTIONMETHODSHIMPRIVATE_REFRESH_EXIT);
}

void CmConnectionMethodShimPrivate::GetStringAttributeL( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString &value) const
{
    HBufC* buf = iCm.GetStringAttributeL(attribute);
    value = QString::fromUtf16(buf->Ptr(), buf->Length());
    delete buf;
}

void CmConnectionMethodShimPrivate::GetString8AttributeL( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString &value) const
{
    HBufC8* buf = iCm.GetString8AttributeL(attribute);
    value = QString::fromLatin1((const char*)buf->Ptr(), buf->Length());
    delete buf;
}

void CmConnectionMethodShimPrivate::SetIntAttributeL( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    uint value)
{
    iCm.SetIntAttributeL(attribute, value);
}

void CmConnectionMethodShimPrivate::SetBoolAttributeL( 
    CMManagerShim::ConnectionMethodAttribute attribute,
    bool value)
{
    iCm.SetBoolAttributeL(attribute, value);
}

void CmConnectionMethodShimPrivate::SetStringAttributeL(
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString value)
{
    TPtrC16 valuePtr(reinterpret_cast<const TUint16*>(value.utf16()));
    iCm.SetStringAttributeL(attribute, valuePtr);
}

void CmConnectionMethodShimPrivate::SetString8AttributeL(
    CMManagerShim::ConnectionMethodAttribute attribute,
    QString value)
{
    QByteArray tempValue = value.toLatin1();
    TPtrC8 valuePtr(reinterpret_cast<const unsigned char*>(tempValue.data()));
    iCm.SetString8AttributeL(attribute, valuePtr);
}

/*!
 * Traces given error code if it is not KErrNone. 
 * 
 * @param[in] error Symbian error code.
 */

void CmConnectionMethodShimPrivate::TraceIfError(TInt error) const
{
    if (error != KErrNone) {
        OstTrace1(
            TRACE_WARNING,
            CMCONNECTIONMETHODSHIMPRIVATE_TRACEIFERROR,
            "CmConnectionMethodShimPrivate::TraceIfError;Error code=%d",
            error);
    }
}