helloviewappui.cpp

来自「symbianOS第三版开发与实用教程部分源码和部分试验」· C++ 代码 · 共 190 行

CPP
190
字号
/*
============================================================================
 Name        : HelloViewAppUi.cpp
 Author      : Lion
 Copyright   : Your copyright notice
 Description : CHelloViewAppUi implementation
============================================================================
*/

// INCLUDE FILES
#include <avkon.hrh>
#include <aknnotewrappers.h>
#include <stringloader.h>
#include <HelloView.rsg>
#include <f32file.h>
#include <s32file.h>


#include "HelloView.pan"
#include "HelloViewAppUi.h"
#include "HelloViewAppview1.h"
#include "HelloViewAppview2.h"
#include "HelloView.hrh"

_LIT( KFileName, "C:\\private\\0DD9A677\\HelloView.txt" );
_LIT( KText, "Hello World!");

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


// -----------------------------------------------------------------------------
// CHelloViewAppUi::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CHelloViewAppUi::ConstructL()
    {
    BaseConstructL();


    // Show tabs for main views from resources
    CEikStatusPane* sp = StatusPane();

    // Fetch pointer to the default navi pane control
    iNaviPane = (CAknNavigationControlContainer*)sp->ControlL( TUid::Uid(EEikStatusPaneUidNavi));

    // Tabgroup has been read from resource and it were pushed to the navi pane. 
    // Get pointer to the navigation decorator with the ResourceDecorator() function. 
    // Application owns the decorator and it has responsibility to delete the object.
   // iDecoratedTabGroup = iNaviPane->ResourceDecorator();
    iDecoratedTabGroup = iNaviPane->CreateTabGroupL();
    
    if (iDecoratedTabGroup)
        {
        iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();

        iTabGroup->AddTabL(1,_L("View1"));
        iTabGroup->AddTabL(2,_L("View2"));
        iTabGroup->SetActiveTabByIndex(0);
        iNaviPane->PushL(*iDecoratedTabGroup);
        }

    CHelloViewAppView1* view1 = new (ELeave) CHelloViewAppView1;

    CleanupStack::PushL( view1 );
    view1->ConstructL();
    AddViewL( view1 );      // transfer ownership to CAknViewAppUi
    CleanupStack::Pop();    // view1

    CHelloViewAppView2* view2 = new (ELeave) CHelloViewAppView2;

    CleanupStack::PushL( view2 );
    view2->ConstructL();
    AddViewL( view2 );      // transfer ownership to CAknViewAppUi
    CleanupStack::Pop();    // view2

    SetDefaultViewL(*view1);
	}
// -----------------------------------------------------------------------------
// CHelloViewAppUi::CHelloViewAppUi()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
CHelloViewAppUi::CHelloViewAppUi()
    {
    // No implementation required
    }

// -----------------------------------------------------------------------------
// CHelloViewAppUi::~CHelloViewAppUi()
// Destructor.
// -----------------------------------------------------------------------------
//
CHelloViewAppUi::~CHelloViewAppUi()
    {
    delete iDecoratedTabGroup;

    }

// -----------------------------------------------------------------------------
// CHelloViewAppUi::HandleCommandL()
// Takes care of command handling.
// -----------------------------------------------------------------------------
//
void CHelloViewAppUi::HandleCommandL( TInt aCommand )
    {
    switch( aCommand )
        {
        case EEikCmdExit:
        case EAknSoftkeyExit:
            Exit();
            break;

        case EHelloViewCmd1:
            {
            
			ActivateLocalViewL(TUid::Uid(EHelloViewId2));
			iTabGroup->SetActiveTabById(2);
			break;
            }
            break;
		case EHelloViewCmd2:
			{

			ActivateLocalViewL(TUid::Uid(EHelloViewId1));
			iTabGroup->SetActiveTabById(1);
			break;
			
			}
			break;
        default:
            //Panic( EHelloViewUi );
            break;
        }
    }
// -----------------------------------------------------------------------------
//  Called by the framework when the application status pane
//  size is changed.  Passes the new client rectangle to the
//  AppContainer1
// -----------------------------------------------------------------------------
//
//void CHelloViewAppUi::HandleStatusPaneSizeChange()
//{
//	iAppContainer1->SetRect( ClientRect() );
//	
//} 
TKeyResponse CHelloViewAppUi::HandleKeyEventL(const TKeyEvent& aKeyEvent, TEventCode /*aType*/)
{
	 if ( iTabGroup == NULL )
        {
        return EKeyWasNotConsumed;
        }

    TInt active = iTabGroup->ActiveTabIndex();
    TInt count = iTabGroup->TabCount();


        if (aKeyEvent.iScanCode == EStdKeyLeftArrow)
{            if ( active > 0 )
                {
                active--;
                iTabGroup->SetActiveTabByIndex( active );
                if (active == 0)
                {
                	ActivateLocalViewL(TUid::Uid(EHelloViewId1));
                }
                }
                return EKeyWasConsumed;
}

     if (aKeyEvent.iScanCode == EStdKeyRightArrow)       
         {   if( (active + 1) < count )
                {
                active++;
                iTabGroup->SetActiveTabByIndex( active );
                if (active == 1)
                {
                	ActivateLocalViewL(TUid::Uid(EHelloViewId2));
                }
                }
         return EKeyWasConsumed; 
         }

    return EKeyWasNotConsumed;
	
}


// End of File

⌨️ 快捷键说明

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