mulwidgets/mulsliderwidget/src/mulsliderlongtaptimer.cpp
author Simon Howkins <simonh@symbian.org>
Tue, 16 Nov 2010 11:09:56 +0000
branchRCL_3
changeset 33 2d34f54f7334
parent 0 e83bab7cf002
permissions -rw-r--r--
Fixed path to IBY files to be exported

/*
* Copyright (c) 2007-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:  Slider long tap timer
 *
*/

 

// Include Files

// Class header
#include "mulsliderlongtaptimer.h"
#include "mulsliderdefinitions.h"

const int KInitialtimeinterval  = 200000;
const int KTimeinterval = 100000;
namespace Alf
    {

//---------------------------------------------------------------------------
// Constructor
//---------------------------------------------------------------------------
//        
MulSliderLongTapTimer::MulSliderLongTapTimer(
    IMulSliderBaseElementInternal* aBaseElement)
    :CActive(EPriorityStandard)
    {
    iTimer.CreateLocal();
    iBaseElement = aBaseElement;
    CActiveScheduler::Add(this);
    iState = EStopped;
    }

//---------------------------------------------------------------------------
// Destructor 
//---------------------------------------------------------------------------
//
MulSliderLongTapTimer::~MulSliderLongTapTimer()
    {
    Stop();
    iTimer.Close();
    }
//---------------------------------------------------------------------------
// Activates the timer. 
//---------------------------------------------------------------------------
//  
void MulSliderLongTapTimer::Start()
    {
    if (!IsActive())
        {
        iTimer.After(iStatus, TTimeIntervalMicroSeconds32(KInitialtimeinterval));
        SetActive();
        }
    iState = ERunning;    
    }
//---------------------------------------------------------------------------
// stops the timer. 
//---------------------------------------------------------------------------
// 
void MulSliderLongTapTimer::Stop()
    {
    Cancel();
    iState = EStopped;
    }
//---------------------------------------------------------------------------
// Handles an active object's request completion event.
//---------------------------------------------------------------------------
//     
void MulSliderLongTapTimer::RunL()
    {
    IMulSliderBaseElementInternal* elementInternal = 
        static_cast<IMulSliderBaseElementInternal*> (
        iBaseElement->makeInterface(IMulSliderBaseElementInternal::type()));
    if(elementInternal)
        {
        // call handleLongTap of element to handle the longtap 
        elementInternal->handleLongTap();
        }    
    if (iState == ERunning)
        {
        iTimer.After(iStatus, TTimeIntervalMicroSeconds32(KTimeinterval));    
        SetActive();
        }
    }

//---------------------------------------------------------------------------
// Implements cancellation of an outstanding request.
//---------------------------------------------------------------------------
// 
void MulSliderLongTapTimer::DoCancel()
    {
    iTimer.Cancel();
    }

   
   }