diff -r 0d1adf67ec1b -r 12f60d9a73b3 csxhelp/src/CSXHHtmlTopicView.cpp --- a/csxhelp/src/CSXHHtmlTopicView.cpp Thu Aug 19 09:42:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,378 +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: CCSXHHtmlTopicView class definition -* -*/ - -// INCLUDES -#include "CSXHHtmlTopicView.h" -#include "CSXHHtmlTopicContainer.h" -#include "CSXHHtmlTOC2.h" -#include "CSXHAppUi.h" -#include "CSXHDocument.h" -#include -#include "CsHelp.hrh" - -#include "CSXHViewIDs.h" -#include "CSXHKywdTOC1.h" -#include "CSXHHelpDataBase.h" -#include "CSXHContextTopic.h" -#include "CSXHHtmlTOC2.h" -#include "CSXHHtmlTOC1.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -TInt CCSXHHtmlTopicView::iFontSize = TBrCtlDefs::EFontSizeLevelLarger; - -CCSXHHtmlTopicView* CCSXHHtmlTopicView::NewL(const TUid& aUid, const TInt& aFlags,const -TRect& aRect) - { - CCSXHHtmlTopicView* temp = new(ELeave) CCSXHHtmlTopicView(aUid,aFlags); - CleanupStack::PushL(temp); - temp->ConstructL(aRect); - CleanupStack::Pop(temp); - return temp; - } - -CCSXHHtmlTopicView::CCSXHHtmlTopicView(const TUid& aUid, const TInt& aFlags): - iUid(aUid),iAppFlags(aFlags) - { - } -CCSXHHtmlTopicView::~CCSXHHtmlTopicView() - { - if(iBCContainer) - { - delete iBCContainer; - iBCContainer = NULL; - } - } - -void CCSXHHtmlTopicView::ConstructL(const TRect& /*aRect*/) - { - BaseConstructL(iAppFlags); - } - -void CCSXHHtmlTopicView::SetViewTypeL(TInt type) - { - if(type == iContextTopicView) - return; - - if(type == EContextHtmlView) - { - iContextTopicView = ETrue; - SetSoftKeysL(R_CSHELP_SOFTKEYS_OPTIONS_CLOSE_OPENLINK); - } - else - { - iContextTopicView = EFalse; - SetSoftKeysL(R_CSHELP_SOFTKEYS_OPTIONS_BACK_OPENLINK); - } - } - -TInt CCSXHHtmlTopicView::GetViewType() - { - return iContextTopicView ? EContextHtmlView : EHtmlView; - } - -TUid CCSXHHtmlTopicView::Id() const - { - return iUid; - } -// -------------------------------------------------------------------------- -// Launches an application based on the Application UID and a View ID -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::HandleCommandL(TInt aCommand ) - { - switch(aCommand) - { - case EAknSoftkeyBack: - { - if(iBCContainer->HandleBackKeyL()) - return; - CCSXHDocument *doc = static_cast(AppUi()->Document()); - //if not the current view, return - TUid viewId = doc->GetDisplayTopic()->GetViewID(); - if( viewId != KCSXHHtmlTopicViewID && viewId != KCSXHKywdToc2ViewID ) - { - return; - } - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - CCSXHKywdTOC1* kywdParent = displayTopic->GetKywdParent(); - if(kywdParent) - { - doc->SetDisplayAndPrevTopic(kywdParent); - AppUi()->HandleCommandL(ECSXHOpenItem); - } - else - { - HandleCommandL(ECSXHOpenApplicationTopics); - } - break; - } - case ECSXHOpenApplicationTopics: - { - CCSXHDocument *doc = static_cast(AppUi()->Document()); - if(iBCContainer->GetCurrActiveObject()) - { - doc->SetDisplayTopic(iBCContainer->GetCurrActiveObject()); - CCSXHAppUi::GetInstance()->ResetTOC2ViewContainer(); - } - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - doc->SetDisplayAndPrevTopic(displayTopic->GetParent()); - AppUi()->HandleCommandL(ECSXHOpenItem); - } - break; - case ECSXHTOC1ListView: - { - CCSXHDocument *doc = static_cast(AppUi()->Document()); - if(iBCContainer->GetCurrActiveObject()) - { - doc->SetDisplayTopic(iBCContainer->GetCurrActiveObject()); - CCSXHAppUi::GetInstance()->ResetTOC2ViewContainer(); - } - - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - //These two steps are necessary to set the correct display and prev topics - doc->SetDisplayTopic(displayTopic->GetParent()); - doc->SetDisplayAndPrevTopic(doc->GetHelpDataBase()->GetMainTopics()); - AppUi()->HandleCommandL(ECSXHOpenItem); - } - break; - case ECsHelpCmdFontLarge: - { - TInt CurrentFontSize = iBCContainer->GetCurrentValueL(TBrCtlDefs::ESettingsFontSize); - iBCContainer->SetSelectedFontSizeL(++CurrentFontSize); - iFontSize = CurrentFontSize; - } - break; - case ECsHelpCmdFontSmall: - { - TInt CurrentFontSize = iBCContainer->GetCurrentValueL(TBrCtlDefs::ESettingsFontSize); - iBCContainer->SetSelectedFontSizeL(--CurrentFontSize); - iFontSize = CurrentFontSize; - } - break; - case ECSXHOpenHyperLink: - { - iBCContainer->HandleCommandOpenHyperLinkL(); - } - break; - case ECSXHSearchText: - { - CCSXHDocument *doc = static_cast(AppUi()->Document()); - if(iBCContainer->GetCurrActiveObject()) - { - doc->SetDisplayTopic(iBCContainer->GetCurrActiveObject()); - CCSXHAppUi::GetInstance()->ResetTOC2ViewContainer(); - } - } - AppUi()->HandleCommandL( aCommand ); - break; - case EAknSoftkeyExit: - case EAknSoftkeyClose: - AppUi()->HandleCommandL( aCommand ); - break; - default: - break; - } - } -// -------------------------------------------------------------------------- -// Handlign for view activation. For a context view, the actual display topic -// has to be modified -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::DoActivateL(const TVwsViewId& aPrevViewId,TUid,const TDesC8&) - { - iPrevious = aPrevViewId; - CCSXHDocument *doc = static_cast(AppUi()->Document()); - - if(!iBCContainer) - { - TRAPD(Result,iBCContainer = CCSXHHtmlTopicContainer::NewL(ClientRect(),*doc,this)); - if(KErrNone != Result) - return; - } - - //Set the correct display topic here for context sensitive launch - if(doc->GetDisplayTopic()->GetViewID() == KCSXHContextHtmlTopicViewID) - { - CCSXHContextTopic *topic = STATIC_CAST(CCSXHContextTopic*,doc->GetDisplayTopic()); - doc->SetDisplayTopic(topic->GetTopic()); - iContextTopicView = ETrue; - } - else - { - iContextTopicView = EFalse; - } - - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - TRAPD(err,iBCContainer->SetAndLoadInitialTopicL(displayTopic)); - - if( KErrNone != err ) - { - delete iBCContainer; - iBCContainer = NULL; - return; - } - if( iContextTopicView ) - { - SetSoftKeysL(R_CSHELP_SOFTKEYS_OPTIONS_CLOSE_OPENLINK); - } - else - { - SetSoftKeysL(R_CSHELP_SOFTKEYS_OPTIONS_BACK_OPENLINK); - } - iBCContainer->SetMopParent(this); - iBCContainer->SetRect(ClientRect()); - AppUi()->AddToStackL(*this, iBCContainer); - iBCContainer->MakeVisible(ETrue); - } - -void CCSXHHtmlTopicView::DoDeactivate() - { - if(iBCContainer) - { - iBCContainer->MakeVisible(EFalse); - TRAP_IGNORE(iBCContainer->CancelFetchL()); - // FEP causes crash if it still hold the observer. - // fix as FEP suggested. - iBCContainer->SetFocus( EFalse ); - AppUi()->RemoveFromStack(iBCContainer); - } - } -// -------------------------------------------------------------------------- -// When a view which was previously activated, goes to background and gets -// activated again, the DoActivateL will not be called only ViewActivatedL -// will be called. Special handling is required for the context view for the -// scenario, open context help from any application, with out changing the -// help view, open context help from another application, the contents of the -// context view has to be refreshed with the new topic -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::ViewActivatedL(const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage) - { - - if(iBCContainer) - { - //This handling is required for the following scenario - //Context sensitive help launch more than once with no - //other view navigation in the help application - CCSXHDocument *doc = static_cast(AppUi()->Document()); - if(doc->GetDisplayTopic()->GetViewID() == KCSXHContextHtmlTopicViewID) - { - CCSXHContextTopic *topic = static_cast(doc->GetDisplayTopic()); - doc->SetDisplayTopic(topic->GetTopic()); - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - iBCContainer->RefreshL(displayTopic); - SetSoftKeysL(R_CSHELP_SOFTKEYS_OPTIONS_CLOSE_OPENLINK); - } - iBCContainer->CheckForMSK(); - } - CAknView::ViewActivatedL(aPrevViewId,aCustomMessageId,aCustomMessage); - } - -void CCSXHHtmlTopicView::SetSoftKeysL(TInt aSoftKeys) - { - if( Cba() ) - { - Cba()->SetCommandSetL( aSoftKeys ); - Cba()->DrawDeferred(); - } - } -// -------------------------------------------------------------------------- -// Dynamically updating Options menu item -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane) - { - - if( R_CSXH_MENU_HTMLTOPICVIEW == aResourceId) - { - TInt CurrentFontSize = iBCContainer->GetCurrentValueL(TBrCtlDefs::ESettingsFontSize); - - if(CurrentFontSize == TBrCtlDefs::EFontSizeLevelNormal) - { - aMenuPane->SetItemDimmed(ECsHelpCmdFontSmall,ETrue); - } - else if(CurrentFontSize == TBrCtlDefs::EFontSizeLevelAllLarge) - { - aMenuPane->SetItemDimmed(ECsHelpCmdFontLarge,ETrue); - } - - if(!iBCContainer->IsHyperLinkFocused()) - { - aMenuPane->SetItemDimmed(ECSXHOpenHyperLink,ETrue); - } - } - } -// -------------------------------------------------------------------------- -// MSK Handling -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::SetMiddleSoftKey(TBool aValue) - { -#ifndef __SERIES60_30__ - if(AknLayoutUtils::MSKEnabled()) - { - Cba()->MakeCommandVisible(ECSXHOpenHyperLink,aValue); - Cba()->DrawDeferred(); - } -#endif - } - -TInt CCSXHHtmlTopicView::GetCurrentFontSize() - { - return iFontSize; - } - -void CCSXHHtmlTopicView::ResourceChangeHdl(TInt aType) - { - if(iBCContainer) - iBCContainer->HandleResourceChangeImpl(aType); - } - -#ifdef FF_HELP_TUTORIAL_MERGE - // -------------------------------------------------------------------------- -// CCSXHAppUi::LaunchTutorial -// Lauch tutorial if exist, else popup a error message. -// -------------------------------------------------------------------------- -void CCSXHHtmlTopicView::LaunchTutorialL() - { - CCSXHDocument *doc = static_cast(AppUi()->Document()); - CCSXHHtmlTOC2 *displayTopic = STATIC_CAST(CCSXHHtmlTOC2*,doc->GetDisplayTopic()); - TCoeHelpContext helpContext; - displayTopic->GetHelpContext(helpContext); - CCSXHAppUi::GetInstance()->SetHelpContext(helpContext); - if( CCSXHAppUi::GetInstance()->IsApplicationPresentInTutorialL() ) - { - CCSXHAppUi::GetInstance()->CallTutorialAiwProviderL(); - } - else - { - HBufC* ErrorMessage = iCoeEnv->AllocReadResourceLC(R_TYPE_NO_HELP_TOPICS); - CAknGlobalNote* note = CAknGlobalNote::NewLC(); - note->ShowNoteL(EAknGlobalInformationNote, *ErrorMessage); - - CleanupStack::PopAndDestroy(note); - CleanupStack::PopAndDestroy(ErrorMessage); - } - } -#endif // FF_HELP_TUTORIAL_MERGE