diff -r 000000000000 -r 1f04cf54edd8 csxhelp/src/CSXHLegacyTopicView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/csxhelp/src/CSXHLegacyTopicView.cpp Tue Jan 26 15:15:23 2010 +0200 @@ -0,0 +1,213 @@ +/* +* 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: CCSXHLegacyTopicView class definition +* +*/ + + +// INCLUDES +#include "CSXHLegacyTopicView.h" +#include "CSXHLegacyTopicContainer.h" +#include "CSXHAppUi.h" +#include "CSXHDocument.h" +#include +#include "CsHelp.hrh" + +#include "CSXHHelpContentBase.h" +#include "CSXHLegacyTOC2.h" +#include "CSXHLegacyTOC1.h" +#include "CSXHViewIDs.h" +#include "CSXHHelpDataBase.h" +#include "CSXHContextTopic.h" + +#include + +CCSXHLegacyTopicView* CCSXHLegacyTopicView::NewL(const TUid& aUid, + const TInt& aFlags,const TRect& aRect) + { + CCSXHLegacyTopicView* temp = new(ELeave) CCSXHLegacyTopicView(aUid,aFlags); + CleanupStack::PushL(temp); + temp->ConstructL(aRect); + CleanupStack::Pop(temp); + return temp; + } + +CCSXHLegacyTopicView::CCSXHLegacyTopicView(const TUid& aUid, const TInt& aFlags) + : iUid(aUid),iAppFlags(aFlags) + { + } + +CCSXHLegacyTopicView::~CCSXHLegacyTopicView() + { + } + +void CCSXHLegacyTopicView::ConstructL(const TRect& /*aRect*/) + { + BaseConstructL(iAppFlags); + } + +TUid CCSXHLegacyTopicView::Id() const + { + return iUid; + } +// -------------------------------------------------------------------------- +// Launches an application based on the Application UID and a View ID +// -------------------------------------------------------------------------- +void CCSXHLegacyTopicView::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + case ECSXHOpenApplicationTopics: + { + CCSXHDocument* doc = static_cast(AppUi()->Document()); + CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic()); + CCSXHLegacyTOC1* toc1 = displayTopic->GetLegacyParent(); + if(toc1) + { + doc->SetDisplayAndPrevTopic(toc1); + AppUi()->HandleCommandL(ECSXHOpenItem); + } + else + { + //Handling will be same as EAknSoftkeyBack + HandleCommandL(EAknSoftkeyBack); + } + break; + } + case EAknSoftkeyBack: + { + CCSXHDocument* doc = static_cast(AppUi()->Document()); + CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic()); + doc->SetDisplayAndPrevTopic(displayTopic->GetParent()); + AppUi()->HandleCommandL(ECSXHOpenItem); + } + break; + case ECSXHTOC1ListView: + { + CCSXHDocument* doc = static_cast(AppUi()->Document()); + CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic()); + CCSXHGenericTOC1* toc1 = displayTopic->GetLegacyParent(); + if(!toc1) + toc1 = displayTopic->GetParent(); + doc->SetDisplayTopic(toc1); + doc->SetDisplayAndPrevTopic(doc->GetHelpDataBase()->GetMainTopics()); + AppUi()->HandleCommandL(ECSXHOpenItem); + } + break; + default: + AppUi()->HandleCommandL(aCommand); + break; + } + } + +// -------------------------------------------------------------------------- +// Handlign for view activation. For a context view, the actual display topic +// has to be modified +// -------------------------------------------------------------------------- +void CCSXHLegacyTopicView::DoActivateL(const TVwsViewId& aPrevViewId,TUid /* aCustomMessageId */, + const TDesC8& /* aCustomMessage */) + { + iPrevious = aPrevViewId; + CCSXHDocument* doc = static_cast(AppUi()->Document()); + //Set the correct display topic here for context sensitive launch + if(iUid == KCSXHContextLegacyTopicViewID) + { + CCSXHContextTopic* topic = STATIC_CAST(CCSXHContextTopic*,doc->GetDisplayTopic()); + doc->SetDisplayTopic(topic->GetTopic()); + } + + if(!iTopicContainer) + { + CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic()); + iTopicContainer = CCSXHLegacyTopicContainer::NewL(ClientRect(),*doc,displayTopic); + } + + iTopicContainer->SetMopParent(this); + iTopicContainer->SetRect(ClientRect()); + AppUi()->AddToStackL(*this, iTopicContainer); + iTopicContainer->MakeVisible(ETrue); + + //Set the title of the view + CEikStatusPane* sp = StatusPane(); + CAknTitlePane* title = STATIC_CAST(CAknTitlePane*, + sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle))); + title->SetTextL(doc->GetDisplayTopic()->GetName()); + + //MSK: Should be Inactive in this view + //TSW Error:EAJA-6XLFTW : + //S60 3.2 Help: Selection key opens Option menu in Topic view + //If MSK is not defined, "." appears in the MSK, + //On Middle key press, Options menu items are shown to the user +#ifndef __SERIES60_30__ + if(AknLayoutUtils::MSKEnabled()) + { + Cba()->MakeCommandVisible(ECSXHDummyMSK,EFalse); + Cba()->DrawDeferred(); + } +#endif + } + +void CCSXHLegacyTopicView::DoDeactivate() + { + if(iTopicContainer) + { + iTopicContainer->MakeVisible(EFalse); + AppUi()->RemoveFromStack(iTopicContainer); + delete iTopicContainer; + iTopicContainer = NULL; + } + } +// -------------------------------------------------------------------------- +// 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 CCSXHLegacyTopicView::ViewActivatedL(const TVwsViewId& aPrevViewId, + TUid aCustomMessageId, + const TDesC8& aCustomMessage) + { + if(iTopicContainer && iUid == KCSXHContextLegacyTopicViewID) + { + CCSXHDocument* doc = static_cast(AppUi()->Document()); + + if(doc->GetDisplayTopic()->GetViewID() == KCSXHContextLegacyTopicViewID) + { + CCSXHContextTopic* topic = STATIC_CAST(CCSXHContextTopic*,doc->GetDisplayTopic()); + doc->SetDisplayTopic(topic->GetTopic()); + CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic()); + iTopicContainer->RefreshL(displayTopic); + } + + //Set the title of the view + CEikStatusPane* sp = StatusPane(); + CAknTitlePane* title = STATIC_CAST(CAknTitlePane*, + sp->ControlL(TUid::Uid(EEikStatusPaneUidTitle))); + title->SetTextL(doc->GetDisplayTopic()->GetName()); + } + + CAknView::ViewActivatedL(aPrevViewId,aCustomMessageId,aCustomMessage); + } +void CCSXHLegacyTopicView::ViewDeactivated() + { + CAknView::ViewDeactivated(); + } +void CCSXHLegacyTopicView::ResourceChangeHdl(TInt aType) + { + if(iTopicContainer) + iTopicContainer->HandleResourceChangeImpl(aType); + } +