diff -r 000000000000 -r 5f000ab63145 phoneapp/Blacklist/src/CPhoneBlacklistAnim.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/Blacklist/src/CPhoneBlacklistAnim.cpp Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,329 @@ +/* +* Copyright (c) 2002-2004,2008 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: It provides implementation for the CPhoneBlacklistAnim class. +* +*/ + + + +// INCLUDE FILES +#include +#include +#include "phoneanimdllstd.h" +#include "CPhoneBlacklistAnim.h" + +// CONSTANTS +// Amount of retries to be performed. +const TInt KPhoneRetryCount = 7; + +// Timeout in microseconds +const TInt KPhoneRetryTimeout = 100000; + +// MODULE DATA STRUCTURES +/** +* Active object for clearing nlacklist. +* +* @since 2.0 +*/ +class CPhoneBlacklistAnim::CClearBlacklist + : public CActive + { + public: // Constructors and destructors. + + /** + * Constructor. + */ + /***************************************************** + * Series 60 Customer / ETel + * Series 60 ETel API + *****************************************************/ + CClearBlacklist( RMmCustomAPI& aCustom ); + + /** + * Destructor. + */ + ~CClearBlacklist(); + + public: // New functions + + /** + * Clear blacklist. + */ + void Clear(); + + protected: + + /** + * From CActive, handles completion of request. + */ + void RunL(); + + /** + * From CActive, cancels pending request. + */ + void DoCancel(); + + private: + + // Ref to custom API. + /***************************************************** + * Series 60 Customer / ETel + * Series 60 ETel API + *****************************************************/ + RMmCustomAPI& iCustom; + + }; + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CPhoneBlacklistAnim +// --------------------------------------------------------- +// +CPhoneBlacklistAnim::CPhoneBlacklistAnim() + { + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::~CPhoneBlacklistAnim +// --------------------------------------------------------- +// +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ +CPhoneBlacklistAnim::~CPhoneBlacklistAnim() + { + if ( iFunctions ) + { + iFunctions->GetRawEvents( EFalse ); + } + + delete iActive; + + iCustom.Close(); + iPhone.Close(); + iServer.Close(); + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CommandReplyL +// +// Reply to command. Always returns KErrNone. +// Defined as pure virtual in baseclass, not actually needed +// here. +// --------------------------------------------------------- +// +TInt CPhoneBlacklistAnim::CommandReplyL( TInt /*aOpcode*/, TAny* /*aArgs*/ ) + { + return KErrNone; + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::Command +// +// Command handling, only one command supported. +// --------------------------------------------------------- +// +void CPhoneBlacklistAnim::Command( TInt aOpcode, TAny* /*aArgs*/ ) + { + switch ( aOpcode ) + { + case ECancelBlackList: + iClearBlacklistOnNextEvent = ETrue; + break; + case EClearBlackListNow: + iActive->Clear(); + break; + default: + break; + } + }; + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::Animate +// +// Defined as pure virtual in base class, so empty +// implementation. +// --------------------------------------------------------- +// +void CPhoneBlacklistAnim::Animate( TDateTime* /*aDateTime*/ ) + { + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::ConstructL +// +// Construction. +// Activates also request to get all key events. +// --------------------------------------------------------- +// +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ +/***************************************************** +* Series 60 Customer / TSY +* Needs customer TSY implementation +*****************************************************/ +void CPhoneBlacklistAnim::ConstructL( TAny* /*aArgs*/, TBool /*aHasFocus*/ ) + { + // Connect to ETel. + TInt err = KErrNone; + { + for ( TInt a = 0 ; a < KPhoneRetryCount ; a++ ) + { + err = iServer.Connect(); + + if ( err == KErrNone ) + { + break; + } + + User::After( KPhoneRetryTimeout ); + } + + User::LeaveIfError( err ); + } + + // Load TSY module. + err = iServer.LoadPhoneModule( KMmTsyModuleName ); + if ( err != KErrAlreadyExists ) + { + // LoadPhoneModule may return also KErrAlreadyExists + // if some other is already loaded the tsy module. + // And that is not an error. + User::LeaveIfError( err ); + } + + // Open phone and custom API. + User::LeaveIfError( iPhone.Open( iServer, KMmTsyPhoneName ) ); + User::LeaveIfError( iCustom.Open( iPhone ) ); + + iActive = new ( ELeave ) CClearBlacklist( iCustom ); + + iFunctions->GetRawEvents( ETrue ); + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::Redraw +// +// Not needed. No UI. +// Defined as pure virtual in baseclass, not actually needed +// here. +// --------------------------------------------------------- +// +void CPhoneBlacklistAnim::Redraw() + { + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::FocusChanged +// +// Not needed. No UI. +// Defined as pure virtual in baseclass, not actually needed +// here. +// --------------------------------------------------------- +// +void CPhoneBlacklistAnim::FocusChanged( TBool /*aState*/ ) + { + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::OfferRawEvent +// +// Handle key event. +// --------------------------------------------------------- +// +TBool CPhoneBlacklistAnim::OfferRawEvent( const TRawEvent& aRawEvent ) + { + if ( aRawEvent.Type() == TRawEvent::EKeyDown || + aRawEvent.Type() == TRawEvent::EButton1Down ) + { + if ( iClearBlacklistOnNextEvent ) + { + iClearBlacklistOnNextEvent = EFalse; + iActive->Clear(); + } + } + return EFalse; + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CClearBlacklist::CClearBlacklist +// --------------------------------------------------------- +// +CPhoneBlacklistAnim::CClearBlacklist::CClearBlacklist( + RMmCustomAPI& aCustom ) + : CActive( CActive::EPriorityStandard ), + iCustom( aCustom ) + { + CActiveScheduler::Add( this ); + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CClearBlacklist::~CClearBlacklist +// --------------------------------------------------------- +// +CPhoneBlacklistAnim::CClearBlacklist::~CClearBlacklist() + { + Cancel(); + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CClearBlacklist::Clear +// +// Clear blacklist asynchronously. +// --------------------------------------------------------- +// +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ +void CPhoneBlacklistAnim::CClearBlacklist::Clear() + { + Cancel(); + + iCustom.ClearCallBlackList( iStatus ); + SetActive(); + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CClearBlacklist::RunL +// +// This is called when blacklist clearing completes. +// Empty implementation, as nothing needs to be done. +// --------------------------------------------------------- +// +void CPhoneBlacklistAnim::CClearBlacklist::RunL() + { + } + +// --------------------------------------------------------- +// CPhoneBlacklistAnim::CClearBlacklist::DoCancel +// +// Cancels pending request. +// --------------------------------------------------------- +// +/***************************************************** +* Series 60 Customer / ETel +* Series 60 ETel API +*****************************************************/ +void CPhoneBlacklistAnim::CClearBlacklist::DoCancel() + { + iCustom.CancelAsyncRequest( + ECustomClearCallBlackListIPC ); + } + +// End of File