videocollection/mpxmyvideoscollection/tsrc/mpxmvcolltest/src/CVcxTestTimer.cpp
author hgs
Fri, 14 May 2010 15:14:51 +0300
changeset 38 ff53afa8ad05
parent 34 bbb98528c666
permissions -rw-r--r--
201019
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// INCLUDE FILES
hgs
parents:
diff changeset
    19
#include "CVcxTestTimer.h"
hgs
parents:
diff changeset
    20
#include "MVcxTestTimerObserver.h"
hgs
parents:
diff changeset
    21
#include "VCXTestLog.h"
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// EXTERNAL DATA STRUCTURES
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// EXTERNAL FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// CONSTANTS
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// MACROS
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
// LOCAL CONSTANTS AND MACROS
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
// MODULE DATA STRUCTURES
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
// LOCAL FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// ============================= LOCAL FUNCTIONS ===============================
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
// CVcxTestTimer::
hgs
parents:
diff changeset
    45
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    46
// might leave.
hgs
parents:
diff changeset
    47
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    48
//
hgs
parents:
diff changeset
    49
CVcxTestTimer* CVcxTestTimer::NewL(MVcxTestTimerObserver& aObserver, TInt aId)
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    VCXLOGLO1(">>>CVcxTestTimer::NewL");
hgs
parents:
diff changeset
    52
    CVcxTestTimer* self = new (ELeave) CVcxTestTimer(aObserver, aId);
hgs
parents:
diff changeset
    53
    CleanupStack::PushL(self);
hgs
parents:
diff changeset
    54
    self->ConstructL();
hgs
parents:
diff changeset
    55
    CleanupStack::Pop();
hgs
parents:
diff changeset
    56
    VCXLOGLO1("<<<CVcxTestTimer::NewL");
hgs
parents:
diff changeset
    57
    return self;
hgs
parents:
diff changeset
    58
    }
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    61
// CVcxTestTimer::~CVcxTestTimer
hgs
parents:
diff changeset
    62
// destructor
hgs
parents:
diff changeset
    63
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
//
hgs
parents:
diff changeset
    65
CVcxTestTimer::~CVcxTestTimer()
hgs
parents:
diff changeset
    66
    {
hgs
parents:
diff changeset
    67
    VCXLOGLO1(">>>CVcxTestTimer::~CVcxTestTimer");
hgs
parents:
diff changeset
    68
    iRestartAfterCancel = EFalse;
hgs
parents:
diff changeset
    69
    Cancel();
hgs
parents:
diff changeset
    70
    iTimer.Close();
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
   	if( IsAdded() )
hgs
parents:
diff changeset
    73
        {
hgs
parents:
diff changeset
    74
        Deque(); // calls also Cancel()
hgs
parents:
diff changeset
    75
        }
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    VCXLOGLO1("<<<CVcxTestTimer::~CVcxTestTimer");
hgs
parents:
diff changeset
    78
    }
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    81
// CVcxTestTimer::~CVcxTestTimer
hgs
parents:
diff changeset
    82
// destructor
hgs
parents:
diff changeset
    83
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    84
//
hgs
parents:
diff changeset
    85
void CVcxTestTimer::CancelTimer()
hgs
parents:
diff changeset
    86
    {
hgs
parents:
diff changeset
    87
    VCXLOGLO1(">>>CVcxTestTimer::CancelTimer");
hgs
parents:
diff changeset
    88
    if( IsActive() )
hgs
parents:
diff changeset
    89
    	{
hgs
parents:
diff changeset
    90
    	iRestartAfterCancel = EFalse;
hgs
parents:
diff changeset
    91
    	Cancel();
hgs
parents:
diff changeset
    92
    	}
hgs
parents:
diff changeset
    93
    VCXLOGLO1("<<<CVcxTestTimer::CancelTimer");
hgs
parents:
diff changeset
    94
    }
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    97
// CVcxTestTimer::CVcxTestTimer
hgs
parents:
diff changeset
    98
//
hgs
parents:
diff changeset
    99
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   100
//
hgs
parents:
diff changeset
   101
CVcxTestTimer::CVcxTestTimer(MVcxTestTimerObserver& aObserver, TInt aId) : CActive(EPriorityStandard), iObserver(aObserver),
hgs
parents:
diff changeset
   102
	iId(aId)
hgs
parents:
diff changeset
   103
    {
hgs
parents:
diff changeset
   104
    VCXLOGLO1(">>>CVcxTestTimer::CVcxTestTimer");
hgs
parents:
diff changeset
   105
    CActiveScheduler::Add(this);
hgs
parents:
diff changeset
   106
    VCXLOGLO1("<<<CVcxTestTimer::CVcxTestTimer");
hgs
parents:
diff changeset
   107
    }
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
// CVcxTestTimer::ConstructL
hgs
parents:
diff changeset
   111
//
hgs
parents:
diff changeset
   112
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   113
//
hgs
parents:
diff changeset
   114
void CVcxTestTimer::ConstructL()
hgs
parents:
diff changeset
   115
    {
hgs
parents:
diff changeset
   116
    VCXLOGLO1(">>>CVcxTestTimer::ConstructL");
hgs
parents:
diff changeset
   117
    User::LeaveIfError(iTimer.CreateLocal());
hgs
parents:
diff changeset
   118
    VCXLOGLO1("<<<CVcxTestTimer::ConstructL");
hgs
parents:
diff changeset
   119
    }
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   122
// CVcxTestTimer::After
hgs
parents:
diff changeset
   123
//
hgs
parents:
diff changeset
   124
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   125
//
hgs
parents:
diff changeset
   126
void CVcxTestTimer::After(TTimeIntervalMicroSeconds32 aInterval)
hgs
parents:
diff changeset
   127
    {
hgs
parents:
diff changeset
   128
hgs
parents:
diff changeset
   129
    iInterval = aInterval;
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
    if( !IsActive() )
hgs
parents:
diff changeset
   132
    	{
hgs
parents:
diff changeset
   133
	    VCXLOGLO2("CVcxTestTimer::After: Setting active. (%d)", this);
hgs
parents:
diff changeset
   134
    	iTimer.After( iStatus, aInterval );
hgs
parents:
diff changeset
   135
	    SetActive();
hgs
parents:
diff changeset
   136
	    iRestartAfterCancel = EFalse; 
hgs
parents:
diff changeset
   137
    	}
hgs
parents:
diff changeset
   138
	else
hgs
parents:
diff changeset
   139
		{
hgs
parents:
diff changeset
   140
		// Cancel and start again when cancel is done.
hgs
parents:
diff changeset
   141
		VCXLOGLO2("CVcxTestTimer::After: Restarting! (%d)", this);
hgs
parents:
diff changeset
   142
		iRestartAfterCancel = ETrue;
hgs
parents:
diff changeset
   143
		iTimer.Cancel();
hgs
parents:
diff changeset
   144
		}
hgs
parents:
diff changeset
   145
    }
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
// CVcxTestTimer::RunL
hgs
parents:
diff changeset
   149
//
hgs
parents:
diff changeset
   150
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
//
hgs
parents:
diff changeset
   152
void CVcxTestTimer::RunL()
hgs
parents:
diff changeset
   153
    {
hgs
parents:
diff changeset
   154
    TInt status = iStatus.Int();
hgs
parents:
diff changeset
   155
hgs
parents:
diff changeset
   156
    if( status == KErrNone )
hgs
parents:
diff changeset
   157
        {
hgs
parents:
diff changeset
   158
        iObserver.TimerComplete( iId, iStatus.Int() );
hgs
parents:
diff changeset
   159
        }
hgs
parents:
diff changeset
   160
    else
hgs
parents:
diff changeset
   161
    if( status == KErrCancel && iRestartAfterCancel )
hgs
parents:
diff changeset
   162
        {
hgs
parents:
diff changeset
   163
        iRestartAfterCancel = EFalse;
hgs
parents:
diff changeset
   164
        iTimer.After( iStatus, iInterval );
hgs
parents:
diff changeset
   165
        SetActive();
hgs
parents:
diff changeset
   166
        VCXLOGLO2("CVcxTestTimer::RunL: Restarted! (%d)", this);
hgs
parents:
diff changeset
   167
        }
hgs
parents:
diff changeset
   168
    }
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   171
// CVcxTestTimer::DoCancel
hgs
parents:
diff changeset
   172
//
hgs
parents:
diff changeset
   173
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   174
//
hgs
parents:
diff changeset
   175
void CVcxTestTimer::DoCancel()
hgs
parents:
diff changeset
   176
    {
hgs
parents:
diff changeset
   177
    VCXLOGLO1(">>>CVcxTestTimer::DoCancel");
hgs
parents:
diff changeset
   178
    iTimer.Cancel();
hgs
parents:
diff changeset
   179
    VCXLOGLO1("<<<CVcxTestTimer::DoCancel");
hgs
parents:
diff changeset
   180
    }
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
//  End of File