diff -r 000000000000 -r 094583676ce7 wvsettings20/tsrc/basic/private/observerinterfaces/CObserverWait.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvsettings20/tsrc/basic/private/observerinterfaces/CObserverWait.h Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2002 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: +* Actively wait until observer is called, store the received values to same object +* +* +* +*/ + +#ifndef __CObserverWait_H__ +#define __CObserverWait_H__ + +// INCLUDES +#include +#include + +#include "TStaticWrapper.h" + +//##ModelId=3EBA47C203C4 +template < class T1, class T2 = TInt, class T3 = TInt, class T4 = TInt, class T5 = TInt, class T6 = TInt, class T7 = TInt > +class CObserverWait : public CBase + { + //##ModelId=3EBA47C203DC + CActiveSchedulerWait iWait; + //##ModelId=3EBA47C203E4 + TBool iTimeout; + //##ModelId=3EBA47C3000C + TStaticWrapperVoid iWrap; + //##ModelId=3EBA47C30011 + CAsyncCall* iCall; + public: + //##ModelId=3EBA47C3001A + static CObserverWait* NewLC() + { + CObserverWait* _that = new( ELeave )CObserverWait; + CleanupStack::PushL( _that ); + _that->ConstructL(); + return _that; + } + + //##ModelId=3EBA47C3001C + static CObserverWait* NewL() + { + CObserverWait* _that = NewLC(); + CleanupStack::Pop(); + return _that; + } + + //##ModelId=3EBA47C3001E + ~CObserverWait() + { + delete iCall; + } + + protected: + //##ModelId=3EBA47C3001F + CObserverWait() + : iWrap( this, &CObserverWait::Cancel ) + { + } + //##ModelId=3EBA47C30020 + void ConstructL() + { + iCall = CAsyncCall::NewL(); + } + + public: + + //##ModelId=3EBA47C30021 + void SetValue1( T1 aValue ) + { + iT1 = aValue; + } + //##ModelId=3EBA47C30023 + void SetValue2( T2 aValue ) + { + iT2 = aValue; + } + //##ModelId=3EBA47C3002B + void SetValue3( T3 aValue ) + { + iT3 = aValue; + } + //##ModelId=3EBA47C3002D + void SetValue4( T4 aValue ) + { + iT4 = aValue; + } + //##ModelId=3EBA47C3002F + void SetValue5( T5 aValue ) + { + iT5 = aValue; + } + //##ModelId=3EBA47C30039 + void SetValue6( T6 aValue ) + { + iT6 = aValue; + } + //##ModelId=3EBA47C3003B + void SetValue7( T7 aValue ) + { + iT7 = aValue; + } + + //##ModelId=3EBA47C3003D + TBool Wait( TInt aTimeout = -1 ) + { + iTimeout = EFalse; + if ( aTimeout != -1 ) + { + iCall->Start( &iWrap, aTimeout ); + } + iWait.Start(); + iCall->Stop(); + return !Timeout(); + } + //##ModelId=3EBA47C3003F + void Completed( TBool aPanic = ETrue ) + { + if ( iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + else if ( aPanic ) + { + User::Panic( _L( "CObserverWait" ), 1 ); + } + } + + //##ModelId=3EBA47C30049 + void Cancel() + { + if ( iWait.IsStarted() ) + { + iWait.AsyncStop(); + } + iTimeout = ETrue; + } + + //##ModelId=3EBA47C3004A + TBool Timeout() + { + return iTimeout; + } + + //##ModelId=3EBA47C3004B + T1 Value1() + { + return iT1; + } + //##ModelId=3EBA47C3004C + T2 Value2() + { + return iT2; + } + //##ModelId=3EBA47C3004D + T3 Value3() + { + return iT3; + } + //##ModelId=3EBA47C3004E + T4 Value4() + { + return iT4; + } + //##ModelId=3EBA47C3004F + T5 Value5() + { + return iT5; + } + //##ModelId=3EBA47C30050 + T6 Value6() + { + return iT6; + } + //##ModelId=3EBA47C30059 + T7 Value7() + { + return iT7; + } + + private: + + //##ModelId=3EBA47C3005A + T1 iT1; + //##ModelId=3EBA47C3005B + T2 iT2; + //##ModelId=3EBA47C3005C + T3 iT3; + //##ModelId=3EBA47C3005D + T4 iT4; + //##ModelId=3EBA47C30068 + T5 iT5; + //##ModelId=3EBA47C30069 + T6 iT6; + //##ModelId=3EBA47C3006A + T7 iT7; + }; + + +#endif // __CObserverWait_H__ +// End of File + + + + + + + + +