diff -r d2c4c66342f3 -r d51193d814ea messagingfw/muiuutils/src/MuiuServiceUtilities.cpp --- a/messagingfw/muiuutils/src/MuiuServiceUtilities.cpp Tue Aug 31 15:41:11 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,344 +0,0 @@ -/* -* Copyright (c) 2002 - 2005 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: -* Static class to help mtm service queries. -* -*/ - - - - -// INCLUDE FILES -#include -#include // For feature flags -#include // KUidMsvServiceEntry -#include // KDC_RESOURCE_FILES_DIR -#include -#include -#include -#include // CClientMtmRegistry -#include // CBaseMtm -#include // CRepository -#include // KCRUidUiklaf, KUikOODDiskCriticalThreshold - -#include - -// CONSTANTS -const TInt KMuiuCharQuote = '\"'; -const TInt KMuiuCharBackSlash = '\\'; -const TInt KMuiuCharDot = '.'; -const TInt KMuiuCharSpace = ' '; -const TInt KMuiuCharDel = 127; -const TInt KMuiuCharAt = '@'; -const TInt KMuiuSpecialCharStrLen = 12; -_LIT( KRFC822Specials,"()<>@,;:\\\"[]"); - - - -// ============================ MEMBER FUNCTIONS =============================== - - -// --------------------------------------------------------- -// MsvUiServiceUtilitiesr::GetListOfAccountsL -// -// --------------------------------------------------------- -// -EXPORT_C CMsvEntrySelection* MsvUiServiceUtilities::GetListOfAccountsL( CMsvSession& aSession, - TBool aAlwaysListHidden ) - { // static - return DoGetListOfAccountsL( aSession, KNullUid, aAlwaysListHidden ); - } - - -// --------------------------------------------------------- -// MsvUiServiceUtilitiesr::GetListOfAccountsWithMTML -// -// --------------------------------------------------------- -// -EXPORT_C CMsvEntrySelection* MsvUiServiceUtilities::GetListOfAccountsWithMTML( - CMsvSession& aSession, - TUid aMtm, TBool aAlwaysListHidden ) - { // static - return DoGetListOfAccountsL( aSession, aMtm, aAlwaysListHidden ); - } - - -// --------------------------------------------------------- -// MsvUiServiceUtilitiesr::DoGetListOfAccountsL -// -// --------------------------------------------------------- -// -CMsvEntrySelection* MsvUiServiceUtilities::DoGetListOfAccountsL( CMsvSession& aSession, - TUid aMtm, - TBool aAlwaysListHidden ) - { - CMsvEntrySelection* sel = new( ELeave ) CMsvEntrySelection(); - CleanupStack::PushL( sel ); - CMsvEntry* entry = aSession.GetEntryL( KMsvRootIndexEntryIdValue ); - CleanupStack::PushL( entry ); - TBool visible = EFalse; - TInt err; - - TInt cnt = entry->Count(); - if ( cnt != 0 ) - { - entry->SetSortTypeL( TMsvSelectionOrdering( KMsvGroupByType | KMsvGroupByStandardFolders, - EMsvSortByDetailsReverse, ETrue ) ); - const TMsvEntry* tentry; - for (TInt cc = entry->Count(); --cc >= 0; ) - { - tentry=&(*entry)[cc]; - if ( aMtm == KNullUid || tentry->iMtm == aMtm ) - { - if ( tentry->iType.iUid == KUidMsvServiceEntryValue && - tentry->Id() != KMsvLocalServiceIndexEntryIdValue ) - { - const TBool noRelatedId = tentry->iRelatedId == KMsvNullIndexEntryId || - tentry->iRelatedId == tentry->Id(); - if ( tentry->Visible() || noRelatedId || aAlwaysListHidden ) - { - // Add this service if: - // it is visible, or,there is no associated related service, or, - // we have been asked to list all services. - sel->AppendL( tentry->Id() ); - } - else - { - // This service is invisible and has a related service. - // If the related service is visible we will add it later. - // If the related service is also invisible, and has not yet been added, - // add this service. - TRAP( err, visible = entry->ChildDataL( tentry->iRelatedId ).Visible() ) - if ( err == KErrNone && !visible && - sel->Find(tentry->iRelatedId) != KErrNone ) - { - sel->AppendL( tentry->Id() ); - } - } - } - } - } - } - CleanupStack::PopAndDestroy( entry ); - CleanupStack::Pop( sel ); - return sel; - } - -// ---------------------------------------------------- -// MsvUiServiceUtilities::IsValidEmailAddressL -// -// ---------------------------------------------------- -EXPORT_C TBool MsvUiServiceUtilities::IsValidEmailAddressL( const TDesC& aAddress ) - { - TInt c; - TInt length = aAddress.Length (); - TBufC rfc822Specials ( KRFC822Specials ); - - // first we validate the name portion (name@domain) - if ( length && aAddress[0] == KMuiuCharDot ) - { - return EFalse; - } - for ( c = 0 ; c < length ; c++ ) - { - if ( aAddress[c] == KMuiuCharQuote && ( c == 0 || - aAddress[c-1] == KMuiuCharDot || aAddress[c-1] == KMuiuCharQuote ) ) - { - while ( ++c < length ) - { - if ( aAddress[c] == KMuiuCharQuote ) - { - if( (c + 1) == length) - { - return EFalse; - } - break; - } - if ( aAddress[c] == KMuiuCharBackSlash && - ( aAddress[++c] == KMuiuCharSpace) ) - { - continue; - } - if ( aAddress[c] <= KMuiuCharSpace || - aAddress[c] >= KMuiuCharDel ) - { - return EFalse; - } - } - if ( c++ == length ) - { - return EFalse; - } - if ( aAddress[c] == KMuiuCharAt ) - { - break; - } - if ( aAddress[c] != KMuiuCharDot ) - { - return EFalse; - } - continue; - } - if ( aAddress[c] == KMuiuCharAt ) - { - break; - } - if ( aAddress[c] <= KMuiuCharSpace || aAddress[c] >= KMuiuCharDel ) - { - return EFalse; - } - if ( rfc822Specials.Locate ( aAddress[c] ) != KErrNotFound ) - { - return EFalse; - } - } - if ( c == 0 || aAddress[c-1] == KMuiuCharDot ) - { - return EFalse; - } - // next we validate the domain portion (name@domain) - if ( c == length ) - { - return EFalse; - } - else - { - c++; - return IsValidDomainL ( aAddress.Mid ( ( c ) , length-c ) ); - } - } - - -// ----------------------------------------------------------------------------- -// MsvUiServiceUtilities::IsValidDomainL -// ----------------------------------------------------------------------------- -EXPORT_C TBool MsvUiServiceUtilities::IsValidDomainL ( const TDesC& aDomain ) - { - TInt c = 0; - TInt length = aDomain.Length (); - TBufC rfc822Specials ( KRFC822Specials ); - - if ( length == 0 ) - { - return EFalse; - } - - do - { - if ( aDomain[c] == KMuiuCharDot ) - { - if ( c == 0 || aDomain[c-1] == KMuiuCharDot ) - { - return EFalse; - } - } - if ( aDomain[c] <= KMuiuCharSpace || aDomain[c] >= KMuiuCharDel ) - { - return EFalse; - } - if ( rfc822Specials.Locate( aDomain[c] ) != KErrNotFound ) - { - return EFalse; - } - } - while ( ++c < length ); - - return ( aDomain[length-1] != '.' ); - } - - -// --------------------------------------------------------- -// MsvUiServiceUtilitiesr::DiskSpaceBelowCriticalLevelL -// -// --------------------------------------------------------- -// -EXPORT_C TBool MsvUiServiceUtilities::DiskSpaceBelowCriticalLevelL( CMsvSession& aSession, - TInt aBytesToWrite ) - { - RFs& fs = aSession.FileSession(); - TInt err = KErrNone; - TVolumeInfo vinfo; - TInt currentDrive = TInt( aSession.CurrentDriveL() ); - err = fs.Volume( vinfo, currentDrive ); - if ( err != KErrNone ) - { - User::LeaveIfError( err ); - } - - TInt64 freespace = vinfo.iFree; - TInt64 newFree = freespace - ( TInt64 )aBytesToWrite; - TInt criticalLevel; - CRepository* repository = CRepository::NewLC( KCRUidUiklaf ); - repository->Get( KUikOODDiskCriticalThreshold, criticalLevel ); - CleanupStack::PopAndDestroy( repository ); //repository - return ( newFree <= (TInt64)criticalLevel ); - } - - - -// --------------------------------------------------------- -// MsvUiServiceUtilities::DiskSpaceBelowCriticalLevelWithOverheadL -// -// --------------------------------------------------------- -// -EXPORT_C TBool MsvUiServiceUtilities::DiskSpaceBelowCriticalLevelWithOverheadL( - CMsvSession& aSession, - TInt aBytesToWrite, - TInt aPhoneMemoryOverheadBytes ) - { - RFs& fs = aSession.FileSession(); - TInt err = KErrNone; - TBool belowCritical = EFalse; - TVolumeInfo vinfo; - TInt criticalLevel; - CRepository* repository = CRepository::NewLC( KCRUidUiklaf ); - repository->Get( KUikOODDiskCriticalThreshold, criticalLevel ); - CleanupStack::PopAndDestroy( repository ); //repository - - TInt currentDrive = TInt( aSession.CurrentDriveL() ); - // Sending eat always some memory from C drive - if( currentDrive != EDriveC ) - { - err = fs.Volume( vinfo, EDriveC ); - if ( err != KErrNone ) - { - User::LeaveIfError( err ); - } - belowCritical = ( vinfo.iFree < ( (TInt64)aPhoneMemoryOverheadBytes + - (TInt64)criticalLevel ) ); - } - - if ( !belowCritical ) - { - err = fs.Volume( vinfo, currentDrive ); - if ( err != KErrNone ) - { - User::LeaveIfError( err ); - } - if( currentDrive == EDriveC ) - { - belowCritical = ( vinfo.iFree < ( (TInt64)aBytesToWrite + - (TInt64)aPhoneMemoryOverheadBytes + - (TInt64)criticalLevel ) ); - } - else - { - belowCritical = ( vinfo.iFree < ( (TInt64)aBytesToWrite + (TInt64)criticalLevel ) ); - } - } - - return belowCritical; - } - -// End of File