diff -r 0d1adf67ec1b -r 12f60d9a73b3 csxhelp/src/CSXHGenericContainer.cpp --- a/csxhelp/src/CSXHGenericContainer.cpp Thu Aug 19 09:42:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,383 +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: CCSXHGenericContainer class definition -* -*/ - - -#include "CSXHGenericContainer.h" -#include "CSXHGenericView.h" -#include "CSXHDocument.h" -#include "CSXHAppUi.h" -#include "CSXHHelpDataBase.h" -#include "CSXHGenericTOC1.h" -#include "CSXHGenericTOC2.h" - -#ifdef FF_HELP_TUTORIAL_MERGE -#include "CSXHHtmlTOC2.h" -#endif - -#include "CsHelp.hrh" -#include "csxhconstants.h" - -#include "CSXHViewIDs.h" -#include -#include -#include -#include - -const TInt KFindNameLength = 40; -const TInt KComponentCount = 2; - -#ifdef FF_HELP_TUTORIAL_MERGE -CCSXHGenericContainer* CCSXHGenericContainer::NewL(const TRect& aRect,CCSXHDocument& aDocument,CCSXHGenericView* aView) - { - CCSXHGenericContainer* self = CCSXHGenericContainer::NewLC(aRect,aDocument,aView); - CleanupStack::Pop(self); - return self; - } -#else -CCSXHGenericContainer* CCSXHGenericContainer::NewL(const TRect& aRect,CCSXHDocument& aDocument) - { - CCSXHGenericContainer* self = CCSXHGenericContainer::NewLC(aRect,aDocument); - CleanupStack::Pop(self); - return self; - } -#endif - -#ifdef FF_HELP_TUTORIAL_MERGE -CCSXHGenericContainer* CCSXHGenericContainer::NewLC(const TRect& aRect,CCSXHDocument& aDocument,CCSXHGenericView* aView) - { - CCSXHGenericContainer* self = new(ELeave) CCSXHGenericContainer(aDocument,aView); - CleanupStack::PushL(self); - self->ConstructL(aRect); - return self; - } -#else -CCSXHGenericContainer* CCSXHGenericContainer::NewLC(const TRect& aRect,CCSXHDocument& aDocument) - { - CCSXHGenericContainer* self = new(ELeave) CCSXHGenericContainer(aDocument); - CleanupStack::PushL(self); - self->ConstructL(aRect); - return self; - } -#endif - -#ifdef FF_HELP_TUTORIAL_MERGE -CCSXHGenericContainer::CCSXHGenericContainer(CCSXHDocument& aDocument,CCSXHGenericView* aView) : -iDocument(aDocument),iView(aView) -#else -CCSXHGenericContainer::CCSXHGenericContainer(CCSXHDocument& aDocument) : iDocument(aDocument) -#endif - {//No implementation required - } - -CCSXHGenericContainer::~CCSXHGenericContainer() - { - delete iListBox; - delete iFindPane; - } - -void CCSXHGenericContainer::ConstructL(const TRect& aRect) - { - CreateWindowL(); - - CreateAndPopulateListL(); - - iListBox->SetListBoxObserver(this); - SetRect(aRect); - ActivateL(); - } -// -------------------------------------------------------------------------- -// Does the following -// 1) Creates and populates the listbox -// 2) Highlights an item in the listbox -// 3) Check for MSK -// -------------------------------------------------------------------------- -void CCSXHGenericContainer::CreateAndPopulateListL() - { - // First phase construction - iListBox = new (ELeave) CAknSingleStyleListBox; - iListBox->SetContainerWindowL(*this); - - iListBox->ConstructL(this, 0); - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, - CEikScrollBarFrame::EAuto); - iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - - CTextListBoxModel* model = iListBox->Model(); // not taking ownership - model->SetOwnershipType (ELbmOwnsItemArray); - CDesCArray* testArray = STATIC_CAST(CDesCArray*, model->ItemTextArray()); - - CCSXHGenericTOC1* displayTopic = STATIC_CAST(CCSXHGenericTOC1*,iDocument.GetDisplayTopic()); - - displayTopic->FillChildDataL(testArray); - - //Find panel Begin - CAknSearchField::TSearchFieldStyle flags(CAknSearchField::ESearch); - iFindPane = CAknSearchField::NewL(*this, flags, - NULL,KFindNameLength); - - STATIC_CAST(CAknFilteredTextListBoxModel*, iListBox->Model()) - ->CreateFilterL(iListBox, iFindPane); - - STATIC_CAST(CAknFilteredTextListBoxModel*, iListBox->Model()) - ->Filter()->HandleOfferkeyEventL(); - //Corrections to TSW Error: KMAI-6WNACA with New UI CR: EVIA-6XAJ46 - if (FeatureManager::FeatureSupported(KFeatureIdJapanese) && - (User::Language() == ELangJapanese)) - { - iFindPane->Editor().SetAknEditorInputMode(EAknEditorHiraganaKanjiInputMode); - } - else - { - iFindPane->Editor().SetAknEditorCurrentInputMode(EAknEditorTextInputMode); - } - - HightLightItemL(); - } - -void CCSXHGenericContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent) - { - switch ( aListBoxEvent ) - { - case MEikListBoxObserver::EEventEnterKeyPressed: - case MEikListBoxObserver::EEventItemSingleClicked: -#ifdef FF_HELP_TUTORIAL_MERGE - if(IsShowTutorialItemSelectedL()) - { - CCSXHAppUi::GetInstance()->CallTutorialAiwProviderL(); - } - else - -#endif - { - iDocument.SendMessageToAppUiL( ECSXHOpenItemPropagated ); - } - - break; - default: - break;// do nothing with the rest of the events - } - } - -void CCSXHGenericContainer::SizeChanged() - { - iListBox->SetRect(Rect()); - AknFind::HandleFixedFindSizeChanged(this, iListBox, iFindPane); - } - -void CCSXHGenericContainer::FocusChanged(TDrawNow aDrawNow) - { - if (iListBox) - { - iListBox->SetFocus(IsFocused(), aDrawNow); - } - if ( iFindPane ) - { - iFindPane->SetFocus( IsFocused(), aDrawNow ); - } - } - -TInt CCSXHGenericContainer::CountComponentControls() const - { - return KComponentCount; - } - -CCoeControl* CCSXHGenericContainer::ComponentControl(TInt aIndex) const - { - switch (aIndex) - { - case 0: - return iListBox; - case 1: - return iFindPane; - default: - return NULL; - } - } - -void CCSXHGenericContainer::Draw(const TRect& aRect) const - { - CWindowGc& gc = SystemGc(); - gc.Clear(aRect); - } - -TKeyResponse CCSXHGenericContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) - { - TKeyResponse result(EKeyWasNotConsumed); - - TBool needRefresh; - result = AknFind::HandleFindOfferKeyEventL(aKeyEvent, aType, - this, iListBox, iFindPane, EFalse, needRefresh); - CheckForMSK(); - if (result == EKeyWasNotConsumed) - { - result = iListBox->OfferKeyEventL (aKeyEvent, aType); - } - return result; - } - -void CCSXHGenericContainer::HandleResourceChange(TInt aType) - { - CCSXHAppUi::GetInstance()->PropagateResourceChange(aType); - - if (KAknSplitInputEnabled == aType || KAknSplitInputDisabled == aType) - { - // Bug fixing, SetFocus can't be called with these aType, it will lead to infinite loop in fep. - return; - } - - if ( IsFocused() ) - { - SetFocus( IsFocused(), EDrawNow ); - } - - } - -void CCSXHGenericContainer::HandleResourceChangeImpl(TInt aType) - { - if (aType == KEikDynamicLayoutVariantSwitch) - { - iListBox->HandleResourceChange(aType); - TRect mainRect; - SizeChanged(); - TRect statusPaneRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,mainRect); - SetRect(mainRect); - DrawNow(); - } - else - { - CCoeControl::HandleResourceChange(aType); - } - } -// -------------------------------------------------------------------------- -// Sets the next topic to be displayed based on the selected item -// -------------------------------------------------------------------------- -void CCSXHGenericContainer::SetDisplayTopicL() - { - TInt index = iListBox->CurrentItemIndex(); - if(KErrNotFound == index) - return; - - TBuf selectedTOC2 = iListBox->Model()->ItemText(index); - selectedTOC2 = selectedTOC2.Mid(1); - - CCSXHGenericTOC1* displayTopic = STATIC_CAST(CCSXHGenericTOC1*,iDocument.GetDisplayTopic()); - if( displayTopic->GetChildL(selectedTOC2) ) - { - iDocument.SetDisplayAndPrevTopic(displayTopic->GetChildL(selectedTOC2)); - } - } - -TInt CCSXHGenericContainer::GetNumberOfListItems() - { - return iListBox->Model()->NumberOfItems(); - } - -void CCSXHGenericContainer::SetCurrentView(CCSXHGenericView* aView) - { - iView = aView; - } - -void CCSXHGenericContainer::HightLightItemL() - { - CCSXHHelpContentBase* prevTopic = iDocument.GetPrevTopic(); - if(!prevTopic) - return; - - TInt visibleItemcount = GetNumberOfListItems(); - for (TInt index = 0; index < visibleItemcount ; ++index ) - { - TBuf txt = iListBox->Model()->ItemText(index); - txt = txt.Mid(1);//remove the '/t' - if(txt.Compare(prevTopic->GetName()) == 0) - { - if(iListBox->CurrentItemIndex() != index) - iListBox->SetCurrentItemIndex(index); - return; - } - } - } - -void CCSXHGenericContainer::CheckForMSK() - { -#ifndef __SERIES60_30__ - if(AknLayoutUtils::MSKEnabled()) - { - if(iListBox->Model()->NumberOfItems()) - { - iView->SetMiddleSoftKey(ETrue); - } - else - { - iView->SetMiddleSoftKey(EFalse); - } - } -#endif - } - -#ifdef FF_HELP_TUTORIAL_MERGE -// -------------------------------------------------------------------------- -// CCSXHAppUi::IsShowTutorialItemSelectedL -// If the selected item is a tutorial item. -// -------------------------------------------------------------------------- -TBool CCSXHGenericContainer::IsShowTutorialItemSelectedL() - { - TBool bShowTutorial = EFalse; - //TODO: - // if keyword page supported tutorial, the comments should be opened - if( 0 != GetNumberOfListItems /*&& KCSXHKywdToc2ViewID != iView->Id() */) - { - TInt index = iListBox->CurrentItemIndex(); - if(KErrNotFound == index) - return bShowTutorial; - //Get Next View - TBuf selectedTOC2 = iListBox->Model()->ItemText(index); - - selectedTOC2 = selectedTOC2.Mid(1); - CCSXHGenericTOC1* displayTopic = STATIC_CAST(CCSXHGenericTOC1*, - iDocument.GetDisplayTopic()); - TUid NextViewId = displayTopic->GetChildL(selectedTOC2)->GetViewID(); - - //Check Tutorial is present for Application topic [TOC2] - if(NextViewId == KCSXHHtmlTopicViewID) - { - CCSXHHtmlTOC2* HTMLTOC2Ptr = STATIC_CAST(CCSXHHtmlTOC2*, - displayTopic->GetChildL(selectedTOC2)); - TFileName filename; - HTMLTOC2Ptr->GetHtmlUrlL( filename ); - if( KErrNotFound != filename.Find( KTutorialFileExtn )) - { - bShowTutorial = ETrue; - TCoeHelpContext helpContext; - HTMLTOC2Ptr->GetHelpContext(helpContext); - CCSXHAppUi::GetInstance()->SetHelpContext( helpContext ); - } - } - } - return bShowTutorial; - } - -#endif // FF_HELP_TUTORIAL_MERGE - - -void CCSXHGenericContainer::MakeVisible(TBool aVisible) - { - CCoeControl::MakeVisible(aVisible); - iListBox->ScrollBarFrame()->ComponentControl(0)->MakeVisible(aVisible); - }