diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstui/src/cvimpstuitermsofusedlg.cpp --- a/uiservicetab/vimpstui/src/cvimpstuitermsofusedlg.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,610 +0,0 @@ -/* -* Copyright (c) 2006 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: UI dialog for showing the Terms of use of a certain server -* -*/ - -#include "cvimpstuitermsofusedlg.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // CEikRichTextEditor -#include - -#include //cdl -#include - -#include -// item finder (Automatic highlight) -#include -#include -#include -#include -// title pane handling -#include -#include -#include -#include -#include - -#include -#include "vimpstui.hrh" -#include "uiservicetabtracer.h" -const TInt KTextMargin = 100; // normal text margin in twips -const TInt KSpaceBefore = 10; // space before each paragraph (twips) -const TInt KPixelsBetweenLines = 5; // pixels between text lines - - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// RunDialogLD -// --------------------------------------------------------------------------- -// -TInt CVIMPSTUiTermsOfUseDlg::RunDialogLD( TInt aResourceId ) - { - TInt retVal; - iRetVal = &retVal; - - ExecuteLD( aResourceId ); - - return retVal; - } - -// --------------------------------------------------------------------------- -// NewL() -// --------------------------------------------------------------------------- -// -CVIMPSTUiTermsOfUseDlg* CVIMPSTUiTermsOfUseDlg::NewL( ) - { - CVIMPSTUiTermsOfUseDlg* self = CVIMPSTUiTermsOfUseDlg::NewLC( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// NewLC() -// --------------------------------------------------------------------------- -// -CVIMPSTUiTermsOfUseDlg* CVIMPSTUiTermsOfUseDlg::NewLC( ) - { - CVIMPSTUiTermsOfUseDlg* self = new( ELeave ) CVIMPSTUiTermsOfUseDlg; - CleanupStack::PushL( self ); - self->ConstructL( ); - return self; - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::ConstructL() -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::ConstructL( ) - { - TRACER_AUTO; - iBgContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgAreaMainMessage, Rect(), ETrue ); - - iItemFinder = CItemFinder::NewL(); - iItemFinder->AddObserver( *this ); - - SetNewTitleTextL(); - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CVIMPSTUiTermsOfUseDlg::~CVIMPSTUiTermsOfUseDlg() - { - TRAP_IGNORE( RestoreTitlePaneTextL() ); - - AknsUtils::DeregisterControlPosition( this ); - - delete iBgContext; - delete iItemFinder; - delete iOldTitleText; - if(iToUText) - { - delete iToUText; - } - } - -// --------------------------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------------------------- -// -CVIMPSTUiTermsOfUseDlg::CVIMPSTUiTermsOfUseDlg() - { - } - - - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::HandleParsingComplete() -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::HandleParsingComplete() - { - //not implemented - } -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::PreLayoutDynInitL() -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::PreLayoutDynInitL() - { - TRACER_AUTO; - CAknDialog::PreLayoutDynInitL(); - AknsUtils::RegisterControlPosition( this ); - - iEditor = static_cast( Control( ETOURichEditorId ) ); - - iParaFormatLayer = CParaFormatLayer::NewL(); - iEditor->SetParaFormatLayer( iParaFormatLayer ); // takes the ownership - - iCharFormatLayer = CCharFormatLayer::NewL(); - iEditor->SetCharFormatLayer( iCharFormatLayer ); // takes the ownership - - // Update text color from skin - UpdateTextColorL(); - - // Get ToU message - if(iToUText) - { - iEditor->SetTextL( iToUText ); - delete iToUText; - iToUText = NULL; - } - - // Insert paragraph delimiter to make - // iItemFinder scroll the view all the way down - TChar lb( CEditableText::EParagraphDelimiter ); - iEditor->Text()->InsertL( iEditor->TextLength(), lb ); - - iEditor->CreateScrollBarFrameL(); - // Only vertical scrollbar is needed - iEditor->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOn); - iEditor->ScrollBarFrame()->SetScrollBarFrameObserver(this); - - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::PostLayoutDynInitL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::PostLayoutDynInitL() - { - TRACER_AUTO; - CAknDialog::PostLayoutDynInitL(); - - - iItemFinder->SetEditor( &iEditor ); - - if ( iBgContext ) - { - iBgContext->SetRect( Rect() ); - iBgContext->SetParentPos( PositionRelativeToScreen() ); - } - // Try to scroll down - if (! iItemFinder->NextItemOrScrollL( CItemFinder::ENextDown ) ) - { - // at bottom => return - UpdateCbaL(); - //return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::SetSizeAndPosition -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::SetSizeAndPosition( const TSize& /*aSize*/ ) - { - // dialog fills the mainpane - TRect mainPane; - AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane ); - SetRect( mainPane ); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::OkToExitL( TInt aButtonId ) -// (other items were commented in a header). -// --------------------------------------------------------- -// -TBool CVIMPSTUiTermsOfUseDlg::OkToExitL( TInt aButtonId ) - { - switch( aButtonId ) - { - case EAknSoftkeyCancel: - { - *iRetVal = EAknSoftkeyCancel; - return ETrue; - } - case EIMPSCommonUITOUContinue: - { - *iRetVal = EAknSoftkeyOk; - return ETrue; - } - case EAknSoftkeyEmpty: - { - return EFalse; - } - default: - { - return ETrue; - } - } - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::OfferKeyEventL -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TKeyResponse CVIMPSTUiTermsOfUseDlg::OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TRACER_AUTO; - if( aType != EEventKey ) - { - return EKeyWasNotConsumed; - } - - switch( aKeyEvent.iCode ) - { - case EKeyBackspace: - { - return EKeyWasConsumed; - } - - case EKeyUpArrow: - { - TKeyResponse res = - iItemFinder->NextItemOrScrollL( CItemFinder::ENextUp ) ? - EKeyWasConsumed : EKeyWasNotConsumed; - return res; - } - - case EKeyDownArrow: - { - TKeyResponse res = - iItemFinder->NextItemOrScrollL( CItemFinder::ENextDown ) ? - EKeyWasConsumed : EKeyWasNotConsumed; - if ( res == EKeyWasConsumed ) - { - UpdateCbaL(); - } - if ( !iItemFinder->NextItemOrScrollL( CItemFinder::ENextDown ) ) - { - UpdateCbaL(); - } - return res; - } - - case EKeyRightArrow: - { - return EKeyWasConsumed; - } - - case EKeyEscape: // handle dialog shutdown. - { - TryExitL( EAknSoftkeyExit ); - return EKeyWasConsumed; - } - default: - { - return EKeyWasConsumed; - } - } - } - -void CVIMPSTUiTermsOfUseDlg::HandleScrollEventL(CEikScrollBar* aScrollBar, TEikScrollEvent aEventType) - { - TRACER_AUTO; - if( !aScrollBar ) - { - return ; - } - switch( aEventType ) - { - - case EEikScrollThumbDragVert : - case EEikScrollDown: - case EEikScrollBottom: - case EEikScrollPageDown: - case EEikScrollUp: - case EEikScrollTop: - case EEikScrollPageUp: - { - - TInt pos = iEditor->ScrollBarFrame()->VerticalScrollBar()->ThumbPosition(); - iEditor->HandleScrollEventL(aScrollBar, aEventType); - if( pos == iThumbMaxPos ) - { - UpdateCbaL(); - } - break; - } - default: - break; - } - - } -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::MopSupplyObject -// -// --------------------------------------------------------- -// - -TTypeUid::Ptr CVIMPSTUiTermsOfUseDlg::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId ) - { - return MAknsControlContext::SupplyMopObject( aId, iBgContext ); - } - - return CCoeControl::MopSupplyObject( aId ); - } - - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::SizeChanged -// -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::SizeChanged() - { - // base class method - CAknDialog::SizeChanged(); - - if ( iBgContext ) - { - iBgContext->SetRect( Rect() ); - iBgContext->SetParentPos( PositionRelativeToScreen() ); - } - - if( iEditor ) - { - TRect temp = Rect(); - temp.SetWidth(Rect().Width()-iEditor->ScrollBarFrame()->VerticalScrollBar()->ScrollBarBreadth()); - iEditor->SetRect( temp ); - } - - // Update the font to correct size - if( iParaFormatLayer && iCharFormatLayer ) - { - // Correct font - const CFont* font = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont ); - - // format richtext - TInt lineSpacing( font->HeightInPixels() + KPixelsBetweenLines ); - CParaFormat paraFormat; - TParaFormatMask paraFormatMask; - paraFormat.iLineSpacingControl = - CParaFormat::ELineSpacingExactlyInPixels; - paraFormatMask.SetAttrib( EAttLineSpacingControl ); - paraFormat.iLineSpacingInTwips = lineSpacing; - paraFormatMask.SetAttrib( EAttLineSpacing ); - paraFormat.iLanguage = - CAknEnv::Static()->SettingCache().InputLanguage(); - paraFormatMask.SetAttrib( EAttParaLanguage ); - paraFormat.iLeftMarginInTwips = KTextMargin; - paraFormatMask.SetAttrib( EAttLeftMargin ); - paraFormat.iSpaceBeforeInTwips = KSpaceBefore; - paraFormatMask.SetAttrib( EAttSpaceBefore ); - - TCharFormat charFormat; - TCharFormatMask charFormatMask; - charFormat.iFontSpec = font->FontSpecInTwips(); - charFormatMask.SetAttrib( EAttFontTypeface ); - charFormatMask.SetAttrib( EAttFontHeight ); - - //can't leave here - if( iEditor ) - { - TRAPD(err, iParaFormatLayer->SetL( ¶Format, paraFormatMask ); - iCharFormatLayer->SetL( charFormat, charFormatMask ); - iEditor->HandleTextChangedL(); ); - - - if( err != KErrNone ) - { - CActiveScheduler::Current()->Error( err ); - } - } - TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageDown) ); - TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageDown) ); - - iThumbMaxPos = iEditor->ScrollBarFrame()->VerticalScrollBar()->ThumbPosition(); - - TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageUp) ); - TRAP_IGNORE(iEditor->MoveDisplayL(TCursorPosition::EFPageUp) ); - } - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::SetNewTitleText -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::SetNewTitleTextL() - { - TRACER_AUTO; - CAknTitlePane* title = GetTitlePaneInstanceL(); - - // Store old one - HBufC* tmp = title->Text()->AllocL(); - delete iOldTitleText; - iOldTitleText = tmp; - - // Clear the navi pane - // Get pointer to status-pane - CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()-> - StatusPane(); - // Get pointer to navi-pane - CAknNavigationControlContainer* naviPane = - static_cast( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - naviPane->PushDefaultL( ETrue ); - - // Set the new text - HBufC* tempTitle = iEikonEnv->AllocReadResourceLC( R_QTN_SERVTAB_TOU_TITLE ); - title->SetTextL( *tempTitle ); - CleanupStack::PopAndDestroy( tempTitle ); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::GetTitlePaneInstanceL -// Gets titlepane instance from CEikonEnv -// (other items were commented in a header). -// --------------------------------------------------------- -// -CAknTitlePane* CVIMPSTUiTermsOfUseDlg::GetTitlePaneInstanceL() const - { - TRACER_AUTO; - CAknTitlePane* title = static_cast< CAknTitlePane* > - ( CEikonEnv::Static()->AppUiFactory()->StatusPane()->ControlL( - TUid::Uid( EEikStatusPaneUidTitle ) ) ); - if ( !title ) - { - User::Leave( KErrNotSupported ); - } - return title; - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::DoRestoreTitlePaneTextL() const -// Does the actual restoring. -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::RestoreTitlePaneTextL() const - { - TRACER_AUTO; - CAknTitlePane* title = GetTitlePaneInstanceL(); - - if ( iOldTitleText ) - { - title->SetTextL( *iOldTitleText ); - } - else - { - title->SetTextToDefaultL(); - } - - // restore the navi pane - // Get pointer to status-pane - CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()-> - StatusPane(); - // Get pointer to navi-pane - CAknNavigationControlContainer* naviPane = - static_cast( - statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - naviPane->Pop(); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::UpdateCbaL() -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::UpdateCbaL() - { - TRACER_AUTO; - TInt cbaRes = R_CNUI_TERMS_OF_USE_DIALOG_CBA; - CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current(); - cba->SetCommandSetL( cbaRes ); - cba->DrawNow(); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::UpdateTextColorL() -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::UpdateTextColorL() - { - TRACER_AUTO; - if( !iEditor ) - { - return; - } - - // Get text color from skin - TRgb textColor( KRgbBlack ); - AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), - textColor, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - TCharFormat charFormat; - TCharFormatMask charFormatMask; - charFormat.iFontPresentation.iTextColor = textColor; - charFormatMask.SetAttrib( EAttColor ); - - // Apply format - int length = iEditor->RichText()->DocumentLength(); - iEditor->RichText()->SetInsertCharFormatL( charFormat, charFormatMask, length ); - iEditor->RichText()->ApplyCharFormatL( charFormat, charFormatMask, 0, length ); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::HandleResourceChange -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::HandleResourceChange( TInt aType ) - { - if ( aType == KAknsMessageSkinChange ) - { - // When skin changes, we need to update text color - TRAP_IGNORE( UpdateTextColorL(); - iEditor->HandleTextChangedL(); ); - } - CAknDialog::HandleResourceChange( aType ); - } - -// --------------------------------------------------------- -// CVIMPSTUiTermsOfUseDlg::SetToUMsg -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiTermsOfUseDlg::SetToUMsgL(HBufC* aToUText) - { - iToUText = aToUText; - } - - - -// End of file