diff -r 608f67c22514 -r 896e9dbc5f19 internetradio2.0/uicontrolssrc/irmarqueeclet.cpp --- a/internetradio2.0/uicontrolssrc/irmarqueeclet.cpp Tue Jul 06 14:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -/* -* 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: Controlet to implement marquee functionality for visuals -* -*/ - - -#include -#include -#include -#include -#include -#include - -#include "irmarqueeclet.h" - -// Default scroll style. -const TIRMarqueeClet::TIRScrollStyle KVRDefaultScrollStyle = TIRMarqueeClet::EIRScrollStyleOnce; -// Default scroll direction. -const TIRMarqueeClet::TIRScrollDirection KVRDefaultScrollDirection = - TIRMarqueeClet::EIRScrollDirectionLeft; -// Default scroll speed in pixels per second. -const TInt KVRDefaultScrollSpeed = 30; -//Default Scroll Time -const TInt KVRScrollTime=1000; -// Spaces needed when creating continuously scrolling text. -_LIT( KVRSpace, " " ); - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -TIRMarqueeClet::TIRMarqueeClet() : - iViewport( NULL ), iTextVisual( NULL ), iScrollSize(), - iScrollSpeed( KVRDefaultScrollSpeed ), iScrollDirection( KVRDefaultScrollDirection ), - iScrollStyle( KVRDefaultScrollStyle ), iSnoozeTime( 0 ), iOrigin(), iOriginalTextWidth( 0 ) - { - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -TIRMarqueeClet::~TIRMarqueeClet() - { - if ( iTextVisual ) - { - iTextVisual->Owner().Env().CancelCustomCommands( this ); - } - } - -// --------------------------------------------------------------------------- -// Sets the required information for this marquee controlet. -// --------------------------------------------------------------------------- -// -void TIRMarqueeClet::Set( CAlfViewportLayout& aViewport, CAlfTextVisual& aTextVisual ) - { - aTextVisual.Owner().Env().CancelCustomCommands( this ); - - iViewport = &aViewport; - iTextVisual = &aTextVisual; - } - -// --------------------------------------------------------------------------- -// Sets scroll speed in pixels per second. -// --------------------------------------------------------------------------- -// -void TIRMarqueeClet::SetScrollSpeed( TInt aScrollSpeed ) - { - iScrollSpeed = aScrollSpeed; - } - -// --------------------------------------------------------------------------- -// Sets the scroll direction. -// --------------------------------------------------------------------------- -// -void TIRMarqueeClet::SetScrollDirection( TIRScrollDirection aScrollDirection ) - { - iScrollDirection = aScrollDirection; - } - -// --------------------------------------------------------------------------- -// Sets the scroll style. -// --------------------------------------------------------------------------- -// -void TIRMarqueeClet::SetScrollStyle( TIRScrollStyle aScrollStyle ) - { - iScrollStyle = aScrollStyle; - } - -// --------------------------------------------------------------------------- -// Starts scrolling. -// --------------------------------------------------------------------------- -// -void TIRMarqueeClet::StartL( TInt aDelay, TInt aSnooze ) - { - ASSERT( iViewport ); - ASSERT( iTextVisual ); - - iViewport->SetViewportSize( TAlfRealPoint( 1.0f, 1.0f ), 0 ); - iViewport->SetVirtualSize( TAlfRealPoint( 1.0f, 1.0f ), 0 ); - iViewport->SetViewportPos( TAlfRealPoint( 0.0f, 0.0f ), 0 ); - - iTextVisual->Owner().Env().CancelCustomCommands( this ); - - iSnoozeTime = aSnooze; - - // Get original text width in pixels. - iOriginalTextWidth = iTextVisual->TextExtents().iWidth; - TInt targetWidth = iViewport->Size().Target().AsSize().iWidth; - - // Check if loop scrolling and if the text does not fit to the viewport size. - if ( iScrollStyle == TIRMarqueeClet::EIRScrollStyleLoop && iOriginalTextWidth > targetWidth ) - { - // Create continuously scrolling text (text + 5 spaces + text). - RBuf buffer; - CleanupClosePushL( buffer ); - buffer.CreateL( 2 * iOriginalTextWidth + KVRSpace().Length() ); - buffer.Append( iTextVisual->Text() ); - buffer.Append( KVRSpace ); - buffer.Append( iTextVisual->Text() ); - iTextVisual->SetTextL( buffer ); - CleanupStack::PopAndDestroy(&buffer);// buffer - } - - // Text size to display. - iScrollSize = iTextVisual->TextExtents(); - - // Check if text must be scrolled. - if ( iScrollSize.iWidth > targetWidth ) - { - // Set line wrapping to truncate: if text does not fit to the viewport width, the text is - // truncated with ellipsis (...). - iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); - // Decides the correct directionality for the scroll. - TBidiText::TDirectionality directionality = TBidiText:: - TextDirectionality( iTextVisual->Text() ); - if ( directionality == TBidiText::ELeftToRight ) - { - SetScrollDirection( TIRMarqueeClet::EIRScrollDirectionLeft ); - } - else - { - SetScrollDirection( TIRMarqueeClet::EIRScrollDirectionRight ); - } - // Align horizontally. - iTextVisual->SetAlign( EAlfAlignHLocale, EAlfAlignVCenter ); - // Start scrolling. - iTextVisual->Owner().Env().Send( TAlfCustomEventCommand( - TIRMarqueeClet::EIRCustomEventScrollStarted, this ), aDelay ); - } - } - -// --------------------------------------------------------------------------- -// From class CAlfControl. -// Event handler. -// --------------------------------------------------------------------------- -// -TBool TIRMarqueeClet::OfferEventL( const TAlfEvent& aEvent ) - { - TBool eventHandled = EFalse; - - if ( aEvent.IsCustomEvent() && iViewport ) - { - switch ( aEvent.CustomParameter() ) - { - case TIRMarqueeClet::EIRCustomEventScrollCompleted: - { - // Viewport is reset. - iViewport->SetVirtualSize( TAlfRealPoint( 1.0f, 1.0f ), 0 ); - iViewport->SetViewportPos( TAlfRealPoint( 0.0f, 0.0f ), 0 ); - // Set line wrapping to truncate. - iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate ); - eventHandled = ETrue; - break; - } - case TIRMarqueeClet::EIRCustomEventScrollStarted: - { - // Visible scroll space width. - TReal32 visibleWidth = iViewport->Size().Target().iX; - - // One scroll width. - TReal32 overflowWidth( 0.0f ); - switch ( iScrollStyle ) - { - case TIRMarqueeClet::EIRScrollStyleOnce: - overflowWidth = iScrollSize.iWidth - visibleWidth; - break; - case TIRMarqueeClet::EIRScrollStyleLoop: - // In EIRScrollStyleLoop mode, the scrolling width is - // the width of the original text + the trailing spaces. - overflowWidth = iScrollSize.iWidth - iOriginalTextWidth; - break; - default: - break; - } - - // Width ratio. - TReal32 widthRatio = overflowWidth / visibleWidth; - // Target position. - TAlfRealPoint target( iViewport->Pos().Target() ); - // Coordinate space used for scrolling. - TAlfRealPoint virt( widthRatio + 1.0f, 1.0f ); - // Start position. - iOrigin = iViewport->Pos().ValueNow(); - // Scrolling time in milliseconds. - TInt scrollTime = KVRScrollTime * - static_cast( overflowWidth / iScrollSpeed ); - - switch ( iScrollDirection ) - { - case TIRMarqueeClet::EIRScrollDirectionLeft: - iOrigin.iX = 0.0f; - target.iX = widthRatio; - break; - case TIRMarqueeClet::EIRScrollDirectionRight: - iOrigin.iX = widthRatio; - target.iX = 0.0f; - break; - default: - break; - } - - // Set virtual size for scrolling. - iViewport->SetVirtualSize( virt, 0 ); - // Set viewport to start position. - iViewport->SetViewportPos( iOrigin, 0 ); - // Start scrolling to target position. - iViewport->SetViewportPos( target, scrollTime ); - - // Set line wrapping to manual. - iTextVisual->SetWrapping( CAlfTextVisual::ELineWrapManual ); - - switch ( iScrollStyle ) - { - case TIRMarqueeClet::EIRScrollStyleOnce: - // Send EIRCustomEventScrollCompleted after scrolling is ended. - iTextVisual->Owner().Env().Send( TAlfCustomEventCommand( - TIRMarqueeClet::EIRCustomEventScrollCompleted, this ), - scrollTime + iSnoozeTime ); - break; - case TIRMarqueeClet::EIRScrollStyleLoop: - // Start loop scrolling immediately after previous scrolling has ended. - iTextVisual->Owner().Env().Send( TAlfCustomEventCommand( - TIRMarqueeClet::EIRCustomEventScrollStarted, this ), scrollTime ); - break; - default: - break; - } - - eventHandled = ETrue; - break; - } - default: - break; - } - } - - - return eventHandled; - } - -// End of file