diff -r 63339781d179 -r 09b1ac925e3f securitydialogs/lockapp/src/lockappecsnote.cpp --- a/securitydialogs/lockapp/src/lockappecsnote.cpp Thu Aug 19 10:45:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -/* -* Copyright (c) 2007 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: Emergency number dialog - * -*/ - - -#include "lockappecsnote.h" -#include "lockapputils.h" -#include -#include -#include -#include // for KAknEcsMaxMatchingLength - -#include -#include - -// --------------------------------------------------------------------------- -// Standard C++ constructor -// --------------------------------------------------------------------------- -CLockAppEcsNote::CLockAppEcsNote( ) : - iNoteOnScreen(EFalse) - { - // no implementation required - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -CLockAppEcsNote::~CLockAppEcsNote( ) - { -#ifdef _GLOBAL_PRIORITY_SUPPORTED - AknGlobalPopupPriorityController::RemovePopupPriority(*this); -#endif - } - -// --------------------------------------------------------------------------- -// Emergency note is a sleeping note -// --------------------------------------------------------------------------- -void CLockAppEcsNote::ConstructSleepingNoteL(TInt aResourceId ) - { - CAknNoteDialog::ConstructSleepingDialogL( aResourceId ); -#ifdef _GLOBAL_PRIORITY_SUPPORTED - // global ui component order is handled trhoug global popup priority controller - AknGlobalPopupPriorityController::SetPopupPriorityL( *this, KGlobalWindowPriority_KeyLock ); -#endif - } - -// --------------------------------------------------------------------------- -// Show note with time out. -// --------------------------------------------------------------------------- -TInt CLockAppEcsNote::ShowNote( ) - { - ReportUserActivity( ); - iTimeoutInMicroseconds = CAknNoteDialog::EUndefinedTimeout; - iTone = CAknNoteDialog::ENoTone; - TInt error = KErrNone; - if ( !iNoteOnScreen ) - { - error = RouseSleepingDialog( ); - } - iNoteOnScreen = ETrue; - // return value not used - return error; - } - -// --------------------------------------------------------------------------- -// Hide note from screen. -// --------------------------------------------------------------------------- -void CLockAppEcsNote::SleepNote( ) - { - if ( iNoteOnScreen ) - { - ExitSleepingDialog( ); // Causes flicker to other notes if called when note is not on screen - } - iNoteOnScreen = EFalse; - } - -// --------------------------------------------------------------------------- -// Emergency dialog consumes all key events it receives. -// --------------------------------------------------------------------------- -TKeyResponse CLockAppEcsNote::OfferKeyEventL(const TKeyEvent& /*aKeyEvent*/, TEventCode /*aType*/) - { - return EKeyWasConsumed; - } - -// --------------------------------------------------------------------------- -// Format the emergency number for the dialog text. -// --------------------------------------------------------------------------- -void CLockAppEcsNote::SetEmergencyNumber( const TDesC& aMatchedNumber ) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); - TAknLayoutRect popupNoteWindow; - AknLayoutUtils::TAknCbaLocation cbaLocation( AknLayoutUtils::CbaLocation( )); - TInt variety( 0); - if ( cbaLocation == AknLayoutUtils::EAknCbaLocationRight ) - { - variety = 5; - } - else - if ( cbaLocation == AknLayoutUtils::EAknCbaLocationLeft ) - { - variety = 8; - } - else - { - variety = 2; - } - - popupNoteWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_note_window( variety ) ); - TAknLayoutText textRect; - textRect.LayoutText( popupNoteWindow.Rect( ), AknLayoutScalable_Avkon::popup_note_window_t5(2).LayoutLine( ) ); - - // Size of a temporary buffer that contains new lines, spaces and - // emergency number for a note. - TBuf16 number; - number.Append( '\n' ); - number.Append( '\n' ); - - TInt spaceCharWidthInPixels = textRect.Font()->CharWidthInPixels( ' ' ); - if ( spaceCharWidthInPixels < 1 ) - { - // Avoid divide by zero situation even the space char would have zero length. - spaceCharWidthInPixels = 1; - } - - TInt length = (textRect.TextRect().Width() - textRect.Font()->TextWidthInPixels(aMatchedNumber))/ spaceCharWidthInPixels; - - const TInt matchedNumberLength = aMatchedNumber.Length( ); - const TInt numberLength = number.Length( ); - const TInt numberMaxLength = number.MaxLength( ); - - if ( numberLength + length + matchedNumberLength > numberMaxLength ) - { - // To make sure that buffer overflow does not happen. - length = numberMaxLength - numberLength - matchedNumberLength; - } - for (int i = 0; i < length; i++ ) - { - number.Append( ' ' ); - } - - number.Append( aMatchedNumber ); - TRAP_IGNORE(SetTextL(number)); - }