diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgsettings/msgsettingsmw/src/smssettingsprivate.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgsettings/msgsettingsmw/src/smssettingsprivate.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,397 @@ +/* + * 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 provides the messaging mw interface for sms + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include "debugtraces.h" + + +#include "smssettingsprivate.h" +#include "msgsettingsutil.h" + + +const TInt KUniSmsSCStringLength = 50; + +/** + * Message Server session event handler + */ +class CObserver : public MMsvSessionObserver +{ +public: + void HandleSessionEvent(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, + TAny* /*aArg2*/, TAny* /*aArg3*/) + { + } + + void HandleSessionEventL(TMsvSessionEvent /*aEvent*/, TAny* /*aArg1*/, + TAny* /*aArg2*/, TAny* /*aArg3*/) + { + } +}; + +//two phase constructor +SmsSettingsPrivate* SmsSettingsPrivate::NewL() +{ + SmsSettingsPrivate* self = new (ELeave) SmsSettingsPrivate(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; +} + +//2nd phase constructor +void SmsSettingsPrivate::ConstructL() +{ + createRepositoryL(); +} + +//--------------------------------------------------------------- +// SmsSettingsPrivate::SmsSettingsPrivate +// @see header +//--------------------------------------------------------------- +SmsSettingsPrivate::SmsSettingsPrivate() +{ + //do nothing +} + +//--------------------------------------------------------------- +// SmsSettingsPrivate::~SmsSettingsPrivate +// @see header +//--------------------------------------------------------------- +SmsSettingsPrivate::~SmsSettingsPrivate() +{ + //do nothing +} + +//--------------------------------------------------------------- +// SmsSettingsPrivate::createRepository +// @see header +//--------------------------------------------------------------- +void SmsSettingsPrivate::createRepositoryL() +{ + CObserver* pObserver = new (ELeave) CObserver(); + CleanupStack::PushL(pObserver); + + TMsvSelectionOrdering ordering; + CMsvSession* iMsvSession = CMsvSession::OpenSyncL(*pObserver); + CleanupStack::PushL(iMsvSession); + CMsvEntry* root = CMsvEntry::NewL(*iMsvSession, + KMsvRootIndexEntryId, + ordering); + CleanupStack::PushL(root); + + //then do not create a new entry + TMsvId firstId; + TRAPD(err, TSmsUtilities::ServiceIdL(*root,firstId)); + if (err == KErrNotFound) + { + TMsvEntry entry; + entry.iMtm = KUidMsgTypeSMS; + entry.iType = KUidMsvServiceEntry; + entry.SetReadOnly(EFalse); + entry.SetVisible(EFalse); + entry.iDate.UniversalTime(); + entry.iDetails.Set(_L("Nokiatest")); + + root->SetEntryL(KMsvRootIndexEntryId); + root->CreateL(entry); + } + + //create a dummy entry + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + smsSettings->SetValidityPeriod(ESmsVPMaximum); + smsSettings->SetReplyQuoted(ETrue); + smsSettings->SetRejectDuplicate(ETrue); + smsSettings->SetDelivery(ESmsDeliveryImmediately); + smsSettings->SetDeliveryReport(EFalse); + smsSettings->SetReplyPath(EFalse); + smsSettings->SetMessageConversion((TSmsPIDConversion) 0); + smsSettings->SetCanConcatenate(ETrue); + smsSettings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabet7Bit); + smsSettings->SetValidityPeriodFormat(TSmsFirstOctet::ESmsVPFInteger); + smsSettings->SetStatusReportHandling(CSmsSettings::EMoveReportToInboxVisible); + smsSettings->SetSpecialMessageHandling(CSmsSettings::EMoveReportToInboxVisible); + smsSettings->SetSmsBearer((CSmsSettings::TMobileSmsBearer) 3); + smsSettings->SetCommDbAction(CSmsSettings::EStoreToCommDb); + smsSettings->SetSmsBearerAction(CSmsSettings::EStoreToCommDb); + + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); + CleanupStack::PopAndDestroy(3); +} + +void SmsSettingsPrivate::setDeliveryReport(TBool report) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + smsSettings->SetDeliveryReport(report); + + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::setCharacterEncoding(TBool status) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + if (status == EFalse) + { + smsSettings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabet7Bit); + } + else + { + smsSettings->SetCharacterSet(TSmsDataCodingScheme::ESmsAlphabetUCS2); + } + + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::settingsDeliverReportAndCharEncoding( + TBool& report, + TBool& statusEncoding) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + report = smsSettings->DeliveryReport(); + + TSmsDataCodingScheme::TSmsAlphabet charSet = smsSettings->CharacterSet(); + + statusEncoding = ETrue; + if (charSet == TSmsDataCodingScheme::ESmsAlphabet7Bit) + { + statusEncoding = EFalse; + } + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::getAllSMSMessageCenter( + RPointerArray& accessPoints, + TInt &defaultIndex) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* settings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*settings); + + //save the default index + defaultIndex = settings->DefaultServiceCenter(); + + int totalSMSc = settings->ServiceCenterCount(); + for (int index = 0; index < totalSMSc; index++) + { + TPtrC16 name = settings->GetServiceCenter(index).Name(); + HBufC* accessName = name.AllocL(); + accessPoints.AppendL(accessName); + } + + CleanupStack::PopAndDestroy(2); + + return; +} + +void SmsSettingsPrivate::setSMSMessageCenter(int index) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + smsSettings->SetDefaultServiceCenter(index); + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::editSMSServiceCentre(HBufC* address, HBufC* name, + TInt index) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + TInt indexDefault = smsSettings->DefaultServiceCenter(); + bool flag = false; + if (index == indexDefault) + { + flag = true; + } + + //remove the service center + smsSettings->RemoveServiceCenter(index); + //add a new service center + smsSettings->AddServiceCenterL(name->Des(), address->Des()); + + if (flag == true) + { + smsSettings->SetDefaultServiceCenter(smsSettings->ServiceCenterCount() + - 1); + } + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::addSmsMessageCenter(HBufC* address, HBufC* name) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + smsSettings->AddServiceCenterL(name->Des(), address->Des()); + smsAccount->SaveSettingsL(*smsSettings); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::smsCenterNameAndNumber(int index, + HBufC** centerNumber, + HBufC** centerName) +{ + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + TPtrC16 addr = smsSettings->GetServiceCenter(index).Address(); + TPtrC16 name = smsSettings->GetServiceCenter(index).Name(); + + (*centerNumber) = addr.AllocL(); + (*centerName) = name.AllocL(); + + CleanupStack::PopAndDestroy(2); +} + +void SmsSettingsPrivate::setEmailGateway(HBufC* emailGateway) +{ +#ifdef _DEBUG_TRACES_ + qDebug() << "Enter SmsSettingsPrivate::setEmailGateway" << emailGateway; +#endif + + + TBuf emailGateWayNumber; + + MsgSettingsUtil::WriteEmailGatewayOverSmsSettingsL( + emailGateway->Des(), + ETrue ); + +#ifdef _DEBUG_TRACES_ + qDebug() << "Exit SmsSettingsPrivate::setEmailGateway"; +#endif + + return; +} + +void SmsSettingsPrivate::setEmailSeriveCenterNumber(HBufC* emailNumber) +{ +#ifdef _DEBUG_TRACES_ + qDebug() << "Enter SmsSettingsPrivate::setEmailSeriveCenterNumber" + << emailNumber; +#endif + + + MsgSettingsUtil::WriteEmailServiceNumberOverSmsSettingsL(emailNumber->Des(), + ETrue ); + +#ifdef _DEBUG_TRACES_ + qDebug() << "Enter SmsSettingsPrivate::setEmailSeriveCenterNumber"; +#endif + + return; +} + +void SmsSettingsPrivate::emailEmailGatewayAndServiceCenterNumber( + HBufC** emailGateway, + HBufC** serviceNumber) +{ +#ifdef _DEBUG_TRACES_ + qDebug() + << "Enter SmsSettingsPrivate::emailEmailGatewayAndServiceCenterNumber"; +#endif + + CSmsAccount* smsAccount = CSmsAccount::NewLC(); + CSmsSettings* smsSettings = CSmsSettings::NewLC(); + + smsAccount->LoadSettingsL(*smsSettings); + + TBuf emailSmscNumber; + TBuf emailGateWayNumber; + + TInt readResult = MsgSettingsUtil::ReadEmailOverSmsSettingsL(emailSmscNumber, + emailGateWayNumber); + if (KErrNone == readResult) + { + // In any otther case we need to show the conf pop-up window + if (emailSmscNumber == KNullDesC) + { + if (smsSettings->DefaultServiceCenter() > 0) + { + emailSmscNumber = smsSettings->GetServiceCenter( + smsSettings->DefaultServiceCenter()).Address(); + } + else + { + int totalSMSc = smsSettings->ServiceCenterCount(); + if (totalSMSc > 0) + { + emailSmscNumber + = smsSettings->GetServiceCenter(0).Address(); + } + } + } + } + + MsgSettingsUtil::WriteEmailServiceNumberOverSmsSettingsL( + emailSmscNumber, + ETrue); + + *emailGateway = emailGateWayNumber.AllocL(); + *serviceNumber = emailSmscNumber.AllocL(); + + CleanupStack::PopAndDestroy(2); //smssetting and smsaccount + +#ifdef _DEBUG_TRACES_ + qDebug() + << "Enter SmsSettingsPrivate::emailEmailGatewayAndServiceCenterNumber" + << serviceNumber << " " << emailGateway; +#endif + + +} + +//eof