diff -r 238255e8b033 -r 84d9eb65b26f messagingapp/msgutils/unieditorutils/src/UniEditorGenUtils.cpp --- a/messagingapp/msgutils/unieditorutils/src/UniEditorGenUtils.cpp Fri Apr 16 14:56:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,481 +0,0 @@ -/* - * 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: General utilities for unified editor and plugin - * - */ - -// INCLUDE FILES -#include // CRepository -#include // offline CR keys -#include -#include -#include -#include - -#include "MessagingVariant.hrh" -#include "MessagingInternalCRKeys.h" // Keys -#include "UniEditorGenUtils.h" -#include "s60qconversions.h" - -// ============================ MEMBER FUNCTIONS =============================== - -// ---------------------------------------------------- -// UniEditorGenUtils::UniEditorGenUtils -// @see header -// ---------------------------------------------------- -UniEditorGenUtils::UniEditorGenUtils() -{ - -} - -// ---------------------------------------------------- -// UniEditorGenUtils::~UniEditorGenUtils -// @see header -// ---------------------------------------------------- -UniEditorGenUtils::~UniEditorGenUtils() -{ - -} -// ---------------------------------------------------- -// UniEditorGenUtils::ReadEmailOverSmsSettingsL -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::ReadEmailOverSmsSettingsL( - TDes& aSmsc, - TDes& aDestinationAddress, - TBool& aModifiable ) - { - // Create storage - CRepository* storage = CRepository::NewLC( KCRUidSmum ); - storage->Get( KSumEmailSC, aSmsc ); - storage->Get( KSumEmailGateway, aDestinationAddress ); - storage->Get( KSumEmailModifiable, aModifiable ); - CleanupStack::PopAndDestroy(); // storage - return KErrNone; - } - -// ---------------------------------------------------- -// UniEditorGenUtils::WriteEmailOverSmsSettingsL -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::WriteEmailOverSmsSettingsL( - const TDes& aSmsc, - const TDes& aDestinationAddress, - const TBool& aModifiable ) - { - // Create storage - CRepository* storage = CRepository::NewLC( KCRUidSmum ); - storage->Set( KSumEmailSC, aSmsc ); - storage->Set( KSumEmailGateway, aDestinationAddress ); - storage->Set( KSumEmailModifiable, aModifiable ); - CleanupStack::PopAndDestroy(); // storage - return KErrNone; - } - -// --------------------------------------------------------- -// UniEditorGenUtils::IsPhoneOfflineL -// @see header -// --------------------------------------------------------- -TBool UniEditorGenUtils::IsPhoneOfflineL() - { - TInt connAllowed ( 1 ); - CRepository* repository ( CRepository::NewL( KCRUidCoreApplicationUIs ) ); - TInt err = repository->Get( KCoreAppUIsNetworkConnectionAllowed, connAllowed ); - delete repository; - repository = NULL; - if ( !err && !connAllowed ) - { - return ETrue; - } - else - { - return EFalse; - } - } - -// ---------------------------------------------------- -// UniEditorGenUtils::AcceptEmailAddressesL -// @see header -// ---------------------------------------------------- -TBool UniEditorGenUtils::AcceptEmailAddressesL() -{ - CRepository* repository ( CRepository::NewL( KCRUidMuiuVariation ) ); - TInt features = 0; - TBool emailOverSmsVariationOn = false; - TBool acceptEmailAddresses = false; - - if ( repository->Get( KMuiuSmsFeatures, features ) == KErrNone ) - { - if ( features & KSmsFeatureIdEmailOverSms ) - { - emailOverSmsVariationOn = ETrue; - } - } - - delete repository; - - //TODO chk with Jerry if below is needed - RCustomerServiceProfileCache* cspProfile = new (ELeave) RCustomerServiceProfileCache; - TInt error = cspProfile->Open(); - - if ( error == KErrNone ) - { - if ( emailOverSmsVariationOn ) - { - - // EmailOverSms bit was variated ON so let's check the bit from SIM - // Get tele services flags from CSP - RMobilePhone::TCspValueAdded params; - // Read the CPHS bit so we know if EmailOverSms is supported - error = cspProfile->CspCPHSValueAddedServices( params ); - - - if ( error == KErrNone && - params >= 0 && - params & RMobilePhone::KCspSMMOEmail ) - { - // It's supported - acceptEmailAddresses= true; - } - } - } - cspProfile->Close(); - delete cspProfile; - - return acceptEmailAddresses; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::VerifyEmailAddressesL -// @see header -// ---------------------------------------------------- -TBool UniEditorGenUtils::VerifyEmailAddressesL( ConvergedMessageAddressList addr) -{ - TBool emailAddrPresent = EFalse; - - for ( int i=0; i< addr.count(); i++) - { - if( IsValidEmailAddress(addr[i]->address()) ) - { - emailAddrPresent = ETrue; - break; - } - } - - return emailAddrPresent; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::UTF8Size -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::UTF8Size( QString aText ) - { - HBufC* text = S60QConversions::qStringToS60Desc(aText); - TPtrC ptr = text->Des(); - - TInt count = 0; - TInt sizeInBytes = 0; - TUint16 charValue; - while ( count < ptr.Length() ) - { - charValue = ptr[count]; - if ( charValue < 0x80 ) - { - sizeInBytes += 1; - } - else if ( charValue < 0x800 ) - { - sizeInBytes += 2; - } - else //if ( charValue < 0x10000 ) - { - sizeInBytes += 3; - } - count++; - } - return sizeInBytes; - } - -// ---------------------------------------------------- -// UniEditorGenUtils::MaxSmsRecipientsL -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::MaxSmsRecipientsL() -{ - CRepository* repository ( CRepository::NewL( KCRUidUniEditor ) ); - TInt maxSmsRecipients = KDefaultSmsRecipients; - - if ( (repository->Get( KUniEditorSoftLimitRecipientCount, maxSmsRecipients ) - != KErrNone) || (maxSmsRecipients <= 0) ) - { - // Unreasonable count, change it back to default value - maxSmsRecipients = KDefaultSmsRecipients; - } - delete repository; - - return maxSmsRecipients; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::MaxMmsRecipientsL -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::MaxMmsRecipientsL() -{ - CRepository* repository ( CRepository::NewL( KCRUidUniEditor ) ); - TInt maxMmsRecipients = KDefaultMmsRecipients; - - if ( (repository->Get( KUniEditorMaxRecipientCount, maxMmsRecipients ) - != KErrNone) || (maxMmsRecipients <= 0)) - { - // Unreasonable count, change it back to default value - maxMmsRecipients = KDefaultMmsRecipients; - } - delete repository; - - return maxMmsRecipients; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::IsValidEmailAddress -// @see header -// ---------------------------------------------------- -TBool UniEditorGenUtils::IsValidEmailAddress( QString addr ) - { - // valid email address contains at least 3 characters - if( addr.size() >= 3 ) - { - // search for @ from the address. however, it can't be the first or the last item - for ( int i = 1; i < addr.size() - 1; i++ ) - { - if ( addr.at(i) == '@' ) - { - return ETrue; - } - } - } - return EFalse; - } - -// ---------------------------------------------------- -// UniEditorGenUtils::MaxMmsMsgSizeL -// @see header -// ---------------------------------------------------- -TInt UniEditorGenUtils::MaxMmsMsgSizeL() -{ - TInt maxSize = KDefaultMaxSize; - - CRepository* repository = CRepository::NewL( KCRUidMmsEngine ); - CleanupStack::PushL( repository ); - - repository->Get( KMmsEngineMaximumSendSize, maxSize ); - - CleanupStack::PopAndDestroy( repository ); - - return maxSize; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::getFileInfoL -// @see header -// ---------------------------------------------------- -void UniEditorGenUtils::getFileInfoL(QString filePath, - int& size, - QString& mimetype, - TMsgMediaType& mediaType) -{ - HBufC* filepath = S60QConversions::qStringToS60Desc(filePath); - int fileSize = 0; - - CMsgMediaResolver* mediaResolver; - - if(filepath) - { - CleanupStack::PushL(filepath); - - mediaResolver = CMsgMediaResolver::NewLC(); - - RFile file = mediaResolver->FileHandleL(*filepath); - file.Size(fileSize); - fileSize+= KEstimatedMimeHeaderSize; - size = fileSize; - TDataType datatype; - mediaResolver->RecognizeL( file, datatype ); - mimetype = S60QConversions::s60Desc8ToQString(datatype.Des8()); - mediaType = mediaResolver->MediaType(datatype.Des8()); - - CleanupStack::PopAndDestroy(mediaResolver); - CleanupStack::PopAndDestroy(filepath); - } - - return; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::MaxSmsMsgSizeL -// @see header -// ---------------------------------------------------- -int UniEditorGenUtils::MaxSmsMsgSizeL() -{ - int maxLength = 0; - int lengthOne = 0; - int lengthMany = 0; - - getSmsCharacterLimits(lengthOne, lengthMany); - maxLength = lengthOne; - - int maxSmsParts = absoluteMaxSmsPartsL(); - if(maxSmsParts > 1) - { - maxLength = maxSmsParts * lengthMany; - } - - int maxSmsCharacters = absoluteMaxSmsCharactersL(); - if(maxSmsCharacters > 0) - { - maxLength = maxSmsCharacters; - } - return maxLength; -} - -// ---------------------------------------------------- -// UniEditorGenUtils::getSmsCharacterLimits -// @see header -// ---------------------------------------------------- -void UniEditorGenUtils::getSmsCharacterLimits(int& singlePartLength, - int& concatenatedPartLength) - { - if(unicodeCharacterMode()) - { - singlePartLength = KFirstUnicodeSmsLength; - concatenatedPartLength = KUnicodeConcatenationInterval; - } - else - { - singlePartLength = KFirstNormalSmsLength; - concatenatedPartLength = KNormalConcatenationInterval; - } - } - -// ---------------------------------------------------- -// UniEditorGenUtils::unicodeCharacterMode -// @see header -// ---------------------------------------------------- -bool UniEditorGenUtils::unicodeCharacterMode() - { - //TODO: this needs proper implementation - return false; - } - -// ---------------------------------------------------- -// UniEditorGenUtils::absoluteMaxSmsPartsL -// @see header -// ---------------------------------------------------- -int UniEditorGenUtils::absoluteMaxSmsPartsL() - { - int absMaxConcatenatedSms = KDefaultMaxSmsSize; - CRepository* repository = CRepository::NewL( KCRUidSmum ); - CleanupStack::PushL( repository ); - - if ( repository->Get( KSmumMaxSubMsgCount, absMaxConcatenatedSms ) || - absMaxConcatenatedSms < 1 || - absMaxConcatenatedSms > KMaxSmsSizeByStandard ) - { - // Unreasonable count, change it back to 30 ( S60 default ) - absMaxConcatenatedSms = KMaxSmsSizeByStandard; - } - CleanupStack::PopAndDestroy( repository ); - return absMaxConcatenatedSms; - } - -// ---------------------------------------------------- -// UniEditorGenUtils::absoluteMaxSmsCharactersL -// @see header -// ---------------------------------------------------- -int UniEditorGenUtils::absoluteMaxSmsCharactersL() - { - int absMaxSmsCharacters = 0; - - CRepository* repository = CRepository::NewL( KCRUidUniEditor ); - CleanupStack::PushL( repository ); - repository->Get( KUniEditorMaxSmsCharacterCount, absMaxSmsCharacters ); - CleanupStack::PopAndDestroy( repository ); - - return absMaxSmsCharacters; - } - -// --------------------------------------------------------- -// UniEditorGenUtils::ConvertDigitsTo -// @see header -// --------------------------------------------------------- -void UniEditorGenUtils::ConvertDigitsTo( TDes& aDes, TDigitType aDigitType ) - { - TChar toArea = aDigitType; - TInt length = aDes.Length(); - for(int i=0; iTChar(d[i]) && ch