diff -r 594d59766373 -r 7d48bed6ce0c vmbx/vmbxengine/src/vmbxcenrephandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vmbx/vmbxengine/src/vmbxcenrephandler.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,327 @@ +/* +* Copyright (c) 2009-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: Implementation of the CVmbxCenRepHandler class +* +*/ + + +// INCLUDE FILES +#include +#include + +#include "voicemailboxdomaincrkeys.h" +#include "voicemailboxprivatecrkeys.h" +#include "vmbxlogger.h" +#include "vmbxcenrephandler.h" + +// CONSTANTS +const TUint32 KUnknownCenRepKey( 0xffffffff ); + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::CVmbxCenRepHandler +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------------------------- +// +CVmbxCenRepHandler::CVmbxCenRepHandler() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::CVmbxCenRepHandler <=>" ); + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::ConstructL +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CVmbxCenRepHandler::ConstructL() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::ConstructL =>" ); + iCRSession = CRepository::NewL( KCRUidVoiceMailbox ); + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::ConstructL <=" ); + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::NewL +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CVmbxCenRepHandler* CVmbxCenRepHandler::NewL() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::NewL =>" ); + CVmbxCenRepHandler* self = new( ELeave ) CVmbxCenRepHandler(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::NewL <=" ); + return self; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::~CVmbxCenRepHandler +// Destructor +// --------------------------------------------------------------------------- +// +CVmbxCenRepHandler::~CVmbxCenRepHandler() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::~CVmbxCenRepHandler =>" ); + delete iCRSession; + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::~CVmbxCenRepHandler <=" ); + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::GetVmbxNumber +// Get saved entry number +// --------------------------------------------------------------------------- +// +TInt CVmbxCenRepHandler::GetVmbxNumber( CVoiceMailboxEntry& aEntry ) + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::GetVmbxNumber =>" ); + TInt result( KErrNotFound ); + // get right cenrep key + TUint32 cenRepKey = ResolveKeyByEntry( aEntry ); + if ( KUnknownCenRepKey != cenRepKey ) + { + HBufC* cenRepEntry = HBufC::New( KVmbxMaxNumberLength ); + TPtr ptr( cenRepEntry->Des() ); + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::GetVmbxNumber: CenRep Get" ); + result = iCRSession->Get( cenRepKey, ptr ); + // get cenrep value + if ( KErrNone == result ) + { + if ( ptr.Length() ) + { + result = aEntry.SetVmbxNumber( ptr ); + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::GetVmbxNumber:\ + Set Entry" ); + } + else + { + result = KErrNotFound; + } + } + delete cenRepEntry; + cenRepEntry = NULL; + } + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::GetVmbxNumber: result%d <=", + result ); + return result; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::Save +// Saves the mailbox number +// --------------------------------------------------------------------------- +// +TInt CVmbxCenRepHandler::Save( const CVoiceMailboxEntry& aEntry ) + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::Save =>" ); + TInt result( KErrNone ); + // get right cenrep key + TUint32 cenRepKey = ResolveKeyByEntry( aEntry ); + + if ( KUnknownCenRepKey != cenRepKey ) + { + // set cenrep value + TPtrC vmbxNumber( KNullDesC ); + aEntry.GetVmbxNumber( vmbxNumber ); + result = iCRSession->Set( cenRepKey, vmbxNumber ); + } + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::Save result=%d <=", result ); + return result; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::ResolveKeyByEntry +// Resolve CenRep key by entry +// --------------------------------------------------------------------------- +// +TUint32 CVmbxCenRepHandler::ResolveKeyByEntry( + const CVoiceMailboxEntry& aEntry ) + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::ResolveKeyByEntry =>" ); + TVmbxAlsLineType alsLine = aEntry.VmbxAlsLineType(); + TVmbxType entryType = aEntry.VoiceMailboxType(); + + TUint32 cenRepKey( KUnknownCenRepKey ); + switch ( entryType ) + { + // Voice mailbox + case EVmbxVoice: + { + cenRepKey = VoiceCenRepKey( alsLine ); + break; + } + // Video mailbox + case EVmbxVideo: + { + cenRepKey = VideoCenRepKey( alsLine ); + break; + } + default: + break; + } + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::ResolveKeyByEntry <=" ); + return cenRepKey; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::VoiceCenRepKey +// Voice mailbox cenntral repository key value +// --------------------------------------------------------------------------- +// +TUint32 CVmbxCenRepHandler::VoiceCenRepKey( + const TVmbxAlsLineType& aLine ) + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VoiceCenRepKey =>" ); + TUint32 cenRepKey( KUnknownCenRepKey ); + if ( EVmbxAlsLine2 == aLine ) + { + cenRepKey = KVmbxNumberLineAlternate; + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VoiceCenRepKey:Line2" ); + } + else + { + cenRepKey = KVmbxNumberLinePrimary; + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VoiceCenRepKey:Line1" ); + } + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VoiceCenRepKey <=" ); + return cenRepKey; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::VideoCenRepKey +// Video mailbox cenntral repository key value +// --------------------------------------------------------------------------- +// +TUint32 CVmbxCenRepHandler::VideoCenRepKey( + const TVmbxAlsLineType& aLine ) + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoCenRepKey =>" ); + TUint32 cenRepKey( KUnknownCenRepKey ); + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::VideoCenRepKey: aLine = %d", + aLine ); + if ( EVmbxAlsLine2 == aLine ) + { + cenRepKey = KVmbxVideoNmbrLineAlternate; + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoCenRepKey:Line2" ); + } + else + { + cenRepKey = KVmbxVideoNmbrLinePrimary; + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoCenRepKey:Line1" ); + } + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoCenRepKey <=" ); + return cenRepKey; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::StoreType +// Fetches active store type +// --------------------------------------------------------------------------- +// +TVmbxMemoryLocation CVmbxCenRepHandler::StoreType() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::StoreType =>" ); + TVmbxMemoryLocation memoryLocation( EVmbxPhoneMemory ); + TInt location; + TInt result = iCRSession->Get( KVmbxUsesSimMemory, location ); + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::StoreType: result = %d", + result ); + + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::StoreType: location = %d<=", + location ); + + if ( KErrNone == result && EVmbxSimMemory == location ) + { + memoryLocation = EVmbxSimMemory; + } +#ifdef __WINS__ + memoryLocation = EVmbxPhoneMemory; +#endif + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::StoreType: memory = %d<=", + memoryLocation ); + return memoryLocation; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::VideoSupported +// Returns ETrue if supported +// --------------------------------------------------------------------------- +// +TBool CVmbxCenRepHandler::VideoSupported() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoSupported =>" ); + TBool supported( EFalse); + + TInt res = iCRSession->Get( KVmbxVideoMbxSupport, supported ); + + if ( KErrNone != res ) + { + supported = EFalse; + } + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::VideoSupported: result %d", + supported ); + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::VideoSupported <=" ); + return supported; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::IsSimReadOnly +// ETrue if CenRep setting Sim read only +// --------------------------------------------------------------------------- +// +TBool CVmbxCenRepHandler::IsSimReadOnly() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::IsSimReadOnly =>" ); + TBool result( EFalse ); + TInt res = iCRSession->Get( KVmbxNoSimWriting, result ); + + if ( KErrNone != res ) + { + result = EFalse; + } + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::IsSimReadOnly: result %I <=", + result ); + return result; + } + +// --------------------------------------------------------------------------- +// CVmbxCenRepHandler::IsAllowedUserEdit +// ETrue if number Allowed to edit +// --------------------------------------------------------------------------- +// +TBool CVmbxCenRepHandler::IsAllowedUserEdit() + { + VMBLOGSTRING( "VMBX: CVmbxCenRepHandler::IsAllowedUserEdit =>" ); + TBool result( EFalse ); + TInt temp( 0 ); + TInt res = iCRSession->Get( KVmbxUiCaps, temp ); + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::IsAllowedUserEdit: res %d", + res ); + + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::IsAllowedUserEdit: temp %d", + temp ); + + if ( ( KErrNone == res ) && !( KVmbxUiUserEditNotAllowed & temp ) ) + { + result = ETrue; + } + VMBLOGSTRING2( "VMBX: CVmbxCenRepHandler::IsAllowedUserEdit: result %d <=", + result ); + return result; + } + +// End of file