csxhelp/src/CSXHLegacyTopicView.cpp
changeset 0 1f04cf54edd8
--- /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 <cshelp.rsg>
+#include "CsHelp.hrh"
+
+#include "CSXHHelpContentBase.h"
+#include "CSXHLegacyTOC2.h"
+#include "CSXHLegacyTOC1.h" 
+#include "CSXHViewIDs.h"
+#include "CSXHHelpDataBase.h"
+#include "CSXHContextTopic.h"
+
+#include <akntitle.h>
+
+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<CCSXHDocument*>(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<CCSXHDocument*>(AppUi()->Document());              
+            CCSXHLegacyTOC2* displayTopic = STATIC_CAST(CCSXHLegacyTOC2*,doc->GetDisplayTopic());
+            doc->SetDisplayAndPrevTopic(displayTopic->GetParent());
+            AppUi()->HandleCommandL(ECSXHOpenItem);                 
+            }               
+        break;
+        case ECSXHTOC1ListView:
+            {
+            CCSXHDocument* doc = static_cast<CCSXHDocument*>(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<CCSXHDocument*>(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<CCSXHDocument*>(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);
+    }
+