wvsettings20/tsrc/basic/private/observerinterfaces/CObserverWait.h
changeset 0 094583676ce7
--- /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 <e32base.h>
+#include <e32svr.h>
+
+#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<CObserverWait> 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
+
+
+
+
+
+
+
+
+