messagingapp/msgsettings/msgsettingsmw/src/msgsettingengine.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:56:15 +0300
changeset 23 238255e8b033
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
 * 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:This class provides API m/w for msg settings plugin
 *
 */

#include "qstringlist.h"
#include "debugtraces.h"


#include "msgsettingengine.h"
#include "smssettingsprivate.h"
#include "mmssettingprivate.h"
#include "s60qconversions.h"

//Constructor
MsgSettingEngine::MsgSettingEngine()
{
#ifdef _DEBUG_TRACES_
    qDebug() << "Enter MsgSettingEngine::MsgSettingEngine";
#endif


    dptr_smsSettings = SmsSettingsPrivate::NewL();
    dptr_mmsSettings = MmsSettingsPrivate::NewL();

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit MsgSettingEngine::MsgSettingEngine";
#endif

}

//Destructor
MsgSettingEngine::~MsgSettingEngine()
{
#ifdef _DEBUG_TRACES_
    qDebug() << "Enter MsgSettingEngine::~MsgSettingEngine";
#endif


    delete dptr_smsSettings;
    delete dptr_mmsSettings;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit MsgSettingEngine::~MsgSettingEngine";
#endif

}

/**
 * for basic message settings
 * set the deliver report
 * @param report bool true or false
 */
void MsgSettingEngine::setDeliveryReport(bool report)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setDeliveryReport" << report;
#endif


    dptr_smsSettings->setDeliveryReport(report);
    dptr_mmsSettings->setDeliveryReport(report);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit MsgSettingEngine::setDeliveryReport";
#endif

}

/**
 * set the character encoding
 * @param encoding specifying encoding type
 */
void MsgSettingEngine::setCharacterEncoding(MsgSettingEngine::CharacterEncoding encoding)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setCharacterEncoding: " << encoding;
#endif


    TBool flag = EFalse;

    if (encoding == MsgSettingEngine::FullSupport)
    {
        flag = ETrue;
    }
    dptr_smsSettings->setCharacterEncoding(flag);
    dptr_mmsSettings->setCharacterEncoding(flag);

#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setCharacterEncoding";
#endif

}

/**
 * returns settings delivery report status
 * and character encoding
 * @param report for getting status report
 * @param encoding for char encoding
 */
void MsgSettingEngine::settingsDeliverReportAndCharEncoding( bool& report,
                                MsgSettingEngine::CharacterEncoding& encoding )
{
#ifdef _DEBUG_TRACES_
    qDebug() << "Enter MsgSettingEngine::settingsDeliverReportAndCharEncoding";
#endif


    TBool encodingStatus1;
    TBool encodingStatus2;
    TBool report1;
    TBool report2;

    dptr_smsSettings->settingsDeliverReportAndCharEncoding(report1,
                                                           encodingStatus1);

    dptr_mmsSettings->settingsDeliverReportAndCharEncoding(report2,
                                                           encodingStatus2);

    report = report1 && report2;

    encoding = MsgSettingEngine::ReducedSupport;
    if (encodingStatus1 && encodingStatus2)
    {
        encoding = MsgSettingEngine::FullSupport;
    }

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit settingsDeliverReportAndCharEncoding: " << report << " "
            << encoding;
#endif

}

/**
 * for advanced settings
 * set the creation mode
 * @mode for creation mode
 */
void MsgSettingEngine::setMMSCreationmode(MsgSettingEngine::MmsCreationMode mode)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setMMSCreationmode " << mode;
#endif


    dptr_mmsSettings->setMMSCreationmode(mode);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setMMSCreationmode";
#endif

}

/**
 * set the mms retrieval mode
 * @param retrieval specifying mode
 */
void MsgSettingEngine::setMMSRetrieval(MsgSettingEngine::MmsRetrieval retrieval)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setMMSRetrieval " << retrieval;
#endif


    dptr_mmsSettings->setMMSRetrieval(retrieval);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setMMSRetrieval";
#endif

}

/**
 * set the anonymous message
 * @param status true or false
 */
void MsgSettingEngine::setAnonymousMessages(bool status)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setAnonymousMessages " << status;
#endif


    dptr_mmsSettings->setAnonymousMessages(status);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setAnonymousMessages";
#endif

}

/**
 * set for receiving MMS Adverts
 * @param status for true or false
 */
void MsgSettingEngine::setReceiveMMSAdverts(bool status)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setReceiveMMSAdverts " << status;
#endif


    dptr_mmsSettings->setReceiveMMSAdverts(status);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setReceiveMMSAdverts";
#endif

}

/**
 * for view 2 mms advance settings\
* get all the fields of mms advance setting
 * @param mode return for MMsCreation mode
 * @param retrieval return for mms retrieval
 * @param anonymous return status true or false
 * @param mmsadverts return status true or false
 */
void MsgSettingEngine::advanceMmsSettings(MsgSettingEngine::MmsCreationMode& mode,
                                          MsgSettingEngine::MmsRetrieval& retrieval,
                                          bool& anonymousStatus,
                                          bool& mmsAdvertsStatus)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setReceiveMMSAdverts";
#endif


    TBool anonymous_Status;
    TBool mmsAdverts_Status;
    dptr_mmsSettings->advanceMmsSettings(mode,
                                         retrieval,
                                         anonymous_Status,
                                         mmsAdverts_Status);

    anonymousStatus = (bool) anonymous_Status;
    mmsAdvertsStatus = (bool) mmsAdverts_Status;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setReceiveMMSAdverts " << mode << " " << retrieval << " "
            << anonymousStatus << " " << mmsAdvertsStatus;
#endif

}

/**
 * get all the MMs access points
 * @param returns all the access point names
 * @attention to be displayed as per the index o to total count
 */
void MsgSettingEngine::allMMsAcessPoints(QStringList& nameList,
                                         int& defaultIndex)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::allMMsAcessPoints";
#endif


    RPointerArray<HBufC> accessPoints;
    //= new(ELeave)RPointerArray<HBufC>();

    dptr_mmsSettings->getAllAccessPoints(accessPoints, defaultIndex);

    for (int i = 0; i < accessPoints.Count(); i++)
        {
        HBufC* name = static_cast<HBufC *> (accessPoints[i]);
        QString qName = S60QConversions::s60DescToQString(name->Des());
        nameList.append(qName);
#ifdef _DEBUG_TRACES_
        qDebug() << "\n " << qName;
#endif

        }
    accessPoints.ResetAndDestroy();

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit allMMsAcessPoints count = " << nameList.count()
            << " Default:" << defaultIndex;
#endif

}

/**
 * set the default access point
 * @param index specifying the index
 */
void MsgSettingEngine::setMMSAccesspoint(int index)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setMMSAccesspoint " << index;
#endif


    dptr_mmsSettings->setMMSAccesspoint(index);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setMMSAccesspoint ";
#endif

}

/**
 * get the list of all SMS Message Centres
 * @param list of all names QString
 */
void MsgSettingEngine::allSMSMessageCenter(QStringList& nameList,
                                           int& defaultIndex)
{

#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::allSMSMessageCenter";
#endif


    RPointerArray<HBufC> accessPoints;

    dptr_smsSettings->getAllSMSMessageCenter(accessPoints, defaultIndex);

    for (int i = 0; i < accessPoints.Count(); i++)
        {
        HBufC* name = accessPoints[i];
        QString qName = S60QConversions::s60DescToQString(name->Des());
        nameList.append(qName);
#ifdef _DEBUG_TRACES_
        qDebug() << "\n qName";
#endif

        }
    accessPoints.ResetAndDestroy();

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit allSMSMessageCenter count = " << nameList.count()
            << " Default:" << defaultIndex;
#endif

}

/**
 * set the default SMS message centre
 * @param index specifying default index
 */
void MsgSettingEngine::setSMSMessageCenter(int index)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setSMSMessageCenter " << index;
#endif


    dptr_smsSettings->setSMSMessageCenter(index);

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setSMSMessageCenter ";
#endif

}

/**
 * for editing the SMS messafe Centre
 * @param name specifying center name
 * @param number specifying center number
 * @param index specying index of message list
 */
void MsgSettingEngine::editSmsMessageCenter(QString& centreName,
                                            QString& centreNumber, int index)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::editSmsMessageCenter " << index << " "
            << centreName << " " << centreNumber;
#endif

    HBufC* d_addr = S60QConversions::qStringToS60Desc(centreNumber);
    HBufC* d_name = S60QConversions::qStringToS60Desc(centreName);

    dptr_smsSettings->editSMSServiceCentre(d_addr, d_name, index);
    delete d_addr;
    delete d_name;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit editSmsMessageCenter ";
#endif

}

/**
 * for add new sms message centre
 * @param name specifying center name
 * @param number specifying center number
 */
void MsgSettingEngine::addSmsMessageCenter(QString& centreName,
                                           QString& centreNumber)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::addSmsMessageCenter " << centreName << " "
            << centreNumber;
#endif


    HBufC* d_addr = S60QConversions::qStringToS60Desc(centreNumber);
    HBufC* d_name = S60QConversions::qStringToS60Desc(centreName);

    dptr_smsSettings->addSmsMessageCenter(d_addr, d_name);
    delete d_addr;
    delete d_name;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit addSmsMessageCenter ";
#endif

}

/**
 * get the sms message centre namd and number
 * @index for which center needs
 * @param return name specifying center name
 * @param return number specifying center number
 */
void MsgSettingEngine::smsCenterNameAndNumber(int index, QString& centreName,
                                              QString& centreNumber)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::smsCenterNameAndNumber " << index;
#endif


    HBufC* d_addr;
    HBufC* d_name;

    dptr_smsSettings->smsCenterNameAndNumber(index, &d_addr, &d_name);

    centreNumber = S60QConversions::s60DescToQString(d_addr->Des());
    centreName = S60QConversions::s60DescToQString(d_name->Des());

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit smsCenterNameAndNumber " << centreNumber << " "
            << centreName;
#endif

}

/**
 * set the Sms Email gateway
 * @param gateway string
 */
void MsgSettingEngine::setEmailGateway(QString& gateway)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setEmailGateway " << gateway;
#endif


    HBufC* d_gateway = S60QConversions::qStringToS60Desc(gateway);

    dptr_smsSettings->setEmailGateway(d_gateway);
    delete d_gateway;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setEmailGateway ";
#endif

}

/**
 * set the sms Email Service centre number
 * @param centre number
 */
void MsgSettingEngine::setEmailSeriveCenterNumber(QString& centerNumber)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::setEmailSeriveCenterNumber " << centerNumber;

#endif

    HBufC* d_number = S60QConversions::qStringToS60Desc(centerNumber);

    dptr_smsSettings->setEmailSeriveCenterNumber(d_number);
    delete d_number;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit setEmailSeriveCenterNumber ";
#endif

}

/**
 * get the sms email gateway and 
 * service centre number
 * @param gateway return email gateway
 * @param centreNumber return service number 
 */
void MsgSettingEngine::emailEmailGatewayAndServiceCenterNumber(QString& gateway,
                                                               QString& serviceNumber)
{
#ifdef _DEBUG_TRACES_
    qDebug() << "MsgSettingEngine::emailEmailGatewayAndServiceCenterNumber";
#endif


    HBufC* d_gateway;
    HBufC* d_number;

    dptr_smsSettings->emailEmailGatewayAndServiceCenterNumber(&d_gateway,
                                                              &d_number);

    gateway = S60QConversions::s60DescToQString(d_gateway->Des());
    serviceNumber = S60QConversions::s60DescToQString(d_number->Des());

    delete d_gateway;
    delete d_number;

#ifdef _DEBUG_TRACES_
    qDebug() << "Exit smsCenterNameAndNumber " << gateway << " "
            << serviceNumber;
#endif

}
//eof