mulwidgets/mulsliderwidget/src/mulsliderlongtaptimer.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:23:18 +0100
branchRCL_3
changeset 26 0e9bb658ef58
parent 0 e83bab7cf002
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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();
    }

   
   }