diff -r 4526337fb576 -r 3eca7e70b1b8 mulwidgets/gesturehelper/src/pointercapturer.cpp --- a/mulwidgets/gesturehelper/src/pointercapturer.cpp Tue Feb 02 00:28:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,169 +0,0 @@ -/* -* Copyright (c) 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: Alf control group and control for capturing pointer events -* -*/ - -#include "pointercapturer.h" - -#include -#include -#include -#include -#include -#include - -#include "gesturehelperimpl.h" - -namespace GestureHelper -{ - -/** - * CPointerCaptureControl - * Gesture control own a gesture helper, and captures any pointer events that - * no other control captures. After it captures pointer down event, it will - * capture all pointer events until pointer up. It does this by bringing its - * control group to the top upon pointer down, and lowering the control group - * to the botton upon pointer up. - */ -NONSHARABLE_CLASS( CPointerCaptureControl ) : public CAlfControl - { -public: - /** Two-phased constructor */ - static CPointerCaptureControl* NewLC( CGestureHelperImpl& aHelper, - CAlfEnv& aEnv, CAlfDisplay& aDisplay ) - { - CPointerCaptureControl* self = new ( ELeave ) CPointerCaptureControl( aHelper ); - CleanupStack::PushL( self ); - self->ConstructL( aEnv ); // construct base class - self->BindDisplay( aDisplay ); - self->AppendVisualL( EAlfVisualTypeVisual ); - return self; - } - - void StartCaptureL() - { - User::LeaveIfError( Display()->Roster().SetPointerEventObservers( - EAlfPointerEventReportDrag | EAlfPointerEventReportUnhandled, - *this ) ); - Display()->Roster().ShowL( *ControlGroup(), KAlfRosterShowAtTop ); - } - - void StopCapture() - { - ( void ) Display()->Roster().SetPointerEventObservers( 0, *this ); - TRAP_IGNORE( Display()->Roster().ShowL( *ControlGroup(), KAlfRosterShowAtBottom ) ); - } - -private: - /** Constructor */ - CPointerCaptureControl( CGestureHelperImpl& aHelper ) - : iHelper( aHelper ) - { - } - - // From CAlfControl - TBool OfferEventL( const TAlfEvent& aEvent ) - { - TBool consumed = EFalse; - if ( aEvent.IsPointerEvent() ) - { - // pointer down for first pointer should never come here if everything is - // working properly. if pointer event comes here, stop capturing and allow the - // event to fall to the controls below - if ( iHelper.StrayEvent(aEvent.PointerEvent() )) - { - StopCapture(); - } - else - { - consumed = iHelper.HandlePointerEventL( aEvent.PointerEvent() ); - } - } - return consumed; - } - -private: - /// gesture helper that analyses pointer sequences. own. - CGestureHelperImpl& iHelper; - - }; - -} // namespace GestureHelper - -using namespace GestureHelper; - -// ---------------------------------------------------------------------------- -// Two phase constructor -// ---------------------------------------------------------------------------- -// -CPointerCapturer* CPointerCapturer::NewL() - { - return new ( ELeave ) CPointerCapturer(); - } - -// ---------------------------------------------------------------------------- -// Two phase constructor -// ---------------------------------------------------------------------------- -// -CPointerCapturer::~CPointerCapturer() - { - if ( iCaptureControl ) - { - // deleting the control group will also delete the control - iCaptureControl->Env().DeleteControlGroup( iControlGroupId ); - } - } - -// ---------------------------------------------------------------------------- -// InitForAlfredL -// ---------------------------------------------------------------------------- -// -void CPointerCapturer::InitForAlfredL( CGestureHelperImpl& aHelper, - CAlfEnv& aEnv, CAlfDisplay& aDisplay, TInt aControlGroupId ) - { - CAlfControlGroup& group = aEnv.NewControlGroupL( aControlGroupId ); - CPointerCaptureControl* control = CPointerCaptureControl::NewLC( aHelper, - aEnv, aDisplay ); - group.AppendL( control ); - CleanupStack::Pop( control ); - - // store control only after it has been successfully added to group - iCaptureControl = control; - iControlGroupId = aControlGroupId; - } - -// ---------------------------------------------------------------------------- -// StartCaptureL -// ---------------------------------------------------------------------------- -// -void CPointerCapturer::StartL() - { - if ( iCaptureControl ) - { - iCaptureControl->StartCaptureL(); - } - } - -// ---------------------------------------------------------------------------- -// StopCapture -// ---------------------------------------------------------------------------- -// -void CPointerCapturer::Stop() - { - if ( iCaptureControl ) - { - iCaptureControl->StopCapture(); - } - }