⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 navigationpaneappui.cpp

📁 symbian 下浏览器调用实现的完整源码。可以用了封装自己浏览器。
💻 CPP
字号:
/**
* 
* @brief Definition of CNavigationPaneAppUi
*
* Copyright (c) EMCC Software Ltd 2003
* @version 1.0
*/

// INCLUDE FILES

//  Class include
#include "NavigationPaneAppUi.h"

// System includes
#include <avkon.rsg>
#include <NavigationPane.rsg>
#include <stringloader.h>
#include <aknnavi.h>
#include <akntabgrp.h>
#include <aknnavide.h>
#include <barsread.h>

// User includes
#include "NavigationPane.hrh" // TNavigationPaneViewNumber
#include "NavigationPaneView1.h" // CNavigationPaneView1


// ================= MEMBER FUNCTIONS =======================

CNavigationPaneAppUi::CNavigationPaneAppUi()
	: iNaviDecorator(NULL)
	{
	}


CNavigationPaneAppUi::~CNavigationPaneAppUi()
	{
    delete iNaviDecorator;
	}
	
/**
* Symbian OS 2nd phase constructor.  Constructs the application's views, 
* transferring ownership of them to the superclass.
* Sets view 1 as the default and remembers that this is the current view id.  
*/	
void CNavigationPaneAppUi::ConstructL()
	{
	BaseConstructL();

	iView1 = CNavigationPaneView1::NewL();
	AddViewL(iView1); // transfer ownership

	}

/**
* From CEikAppUi, takes care of command handling for application views.
*
* @param aCommand command to be handled
*/
void CNavigationPaneAppUi::HandleCommandL(TInt aCommand)
	{
	switch (aCommand)
		{

        // display a tab group in the navigation pane from a resource
		case ENavigationPaneSetNaviPane:
			{
			TUid naviPaneUid;
			naviPaneUid.iUid = EEikStatusPaneUidNavi;

			CEikStatusPane* statusPane = StatusPane();

			CEikStatusPaneBase::TPaneCapabilities subPane =
				statusPane->PaneCapabilities(naviPaneUid);

            // if we can access the navigation pane
			if (subPane.IsPresent() && subPane.IsAppOwned())
				{

				CAknNavigationControlContainer* naviPane =
					(CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);

                // read the tab group resource
                TResourceReader reader;
                iCoeEnv->CreateResourceReaderLC(reader, R_NAVIGATIONPANE_TABGROUP);

                if (iNaviDecorator)
                    {
                    delete iNaviDecorator;
                    iNaviDecorator = NULL;
                    }

                // set the navigation pane tab group
                iNaviDecorator = naviPane->CreateTabGroupL(reader);
                CleanupStack::PopAndDestroy(); // pushed by CreateResourceReaderLC
				naviPane->PushL(*iNaviDecorator);
				}
			break;
			}

        // display a label in the navigation pane from a resource
		case ENavigationPaneSetNaviPaneLabel:
			{
			TUid naviPaneUid;
			naviPaneUid.iUid = EEikStatusPaneUidNavi;
			CEikStatusPane* statusPane = StatusPane();


			CEikStatusPaneBase::TPaneCapabilities subPane =
				statusPane->PaneCapabilities(naviPaneUid);

            // if we can access the navigation pane
			if (subPane.IsPresent() && subPane.IsAppOwned())
				{

		        CAknNavigationControlContainer* naviPane =
				    (CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);

                // read the navigation pane text resource
                TResourceReader reader;
                iCoeEnv->CreateResourceReaderLC(reader, R_NAVIGATIONPANE_NAVI_TEXT);

                if (iNaviDecorator)
                    {
                    delete iNaviDecorator;
                    iNaviDecorator = NULL;
                    }

                // set the navigation pane label
	            iNaviDecorator = naviPane->CreateNavigationLabelL(reader);
                CleanupStack::PopAndDestroy(); // pushed by CreateResourceReaderLC
		    
                naviPane->PushL(*iNaviDecorator);
                }
			break;
			}

        // display an image in the navigation pane from a resource
		case ENavigationPaneSetNaviPaneImage:
			{
			TUid naviPaneUid;
			naviPaneUid.iUid = EEikStatusPaneUidNavi;
			CEikStatusPane* statusPane = StatusPane();


			CEikStatusPaneBase::TPaneCapabilities subPane =
				statusPane->PaneCapabilities(naviPaneUid);

            // if we can access the navigation pane
			if (subPane.IsPresent() && subPane.IsAppOwned())
				{

		        CAknNavigationControlContainer* naviPane =
				    (CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);

                // read the navigation pane image resource
                TResourceReader reader;
                iCoeEnv->CreateResourceReaderLC(reader, R_NAVIGATIONPANE_NAVI_IMAGE);

                if (iNaviDecorator)
                    {
                    delete iNaviDecorator;
                    iNaviDecorator = NULL;
                    }

                // set the navigation pane image
	            iNaviDecorator = naviPane->CreateNavigationImageL(reader);
                CleanupStack::PopAndDestroy(); // pushed by CreateResourceReaderLC
		    
                naviPane->PushL(*iNaviDecorator);
                }
			break;
			}
		

		case EEikCmdExit:
			{
			Exit();
			break;
			}
		default:
			break;		
		}
	}

/**
* Handle key presses, and pass them to the navigation decorator if it exists
*
* @param aKeyEvent key pressed information
* @param aType  type of key event
*/

TKeyResponse CNavigationPaneAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
    {

    CAknNavigationDecorator* navi = iNaviDecorator;
    // if we haven't already got a navigation decorator, then try to get current one
    if (navi == NULL)
        {
    	TUid naviPaneUid;
	    naviPaneUid.iUid = EEikStatusPaneUidNavi;

	    CEikStatusPane* statusPane = StatusPane();

        CAknNavigationControlContainer* naviPane =
		    (CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);
	
        navi = naviPane->Top();
        }


    if (navi == NULL)
        {
        return EKeyWasNotConsumed;
        }


    CAknTabGroup* tabGroup = (CAknTabGroup*) navi->DecoratedControl();

	if (tabGroup == NULL)
		{
    	return EKeyWasNotConsumed;
		}

    // if we've got a tab group, then offer the key event to it.
    return tabGroup->OfferKeyEventL(aKeyEvent, aType);
	}

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -