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

📄 aknexgridviewasmarkableselection.cpp

📁 symbian 格子的生成和使用源代码 让你明白九宫格生成原理 适合游戏开发
💻 CPP
字号:
/* Copyright (c) 2004, Nokia. All rights reserved */


// INCLUDE FILES
#include <eikmenub.h>
#include <aknviewappui.h>
#include <avkon.hrh>
#include <AknGridView.h>
#include <akntitle.h>
#include <AknExGrid.rsg>

#include "AknExGridView.h"
#include "AknExGridAppUi.h"
#include "AknExGridViewAsMarkableSelection.h"
#include "AknExGridContainerAsSelection.h"
#include "AknExGrid.hrh"


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

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMarkableSelection* CAknExGridViewAsMarkableSelection::NewL()
    {
    CAknExGridViewAsMarkableSelection* self =
        CAknExGridViewAsMarkableSelection::NewLC();
    CleanupStack::Pop( self );
    return self;
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMarkableSelection* CAknExGridViewAsMarkableSelection::NewLC()
    {
    CAknExGridViewAsMarkableSelection* self =
        new ( ELeave ) CAknExGridViewAsMarkableSelection();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }

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

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::~CAknExGridViewAsMarkableSelection()
// Destructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMarkableSelection::~CAknExGridViewAsMarkableSelection()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iContainer;
    }

// -----------------------------------------------------------------------------
// TUid CAknExGridViewAsMarkableSelection::Id()
// Returns the View Id.
// -----------------------------------------------------------------------------
//
TUid CAknExGridViewAsMarkableSelection::Id() const
    {
    return KViewMarkableSelectionId;
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::HandleCommandL()
// Handles the commands.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMarkableSelection::HandleCommandL( TInt aCommand )
    {
    TBuf<KLengthOfAboutString> aboutString;
    switch ( aCommand )
        {
        case EAknSoftkeyBack: // return to main view
        case ESGridSoftKeyNext:
            {
            CEikStatusPane *sp = StatusPane();
            CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
                ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );

            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewId, EAknExGridViewTab );
            break;
            }

        case EAknExGridCmdAddOneItemInsert:
            iContainer->InsertDataL( 1 );
            break;

        case EAknExGridCmdAddFiveItemsInsert:
            iContainer->InsertDataL( 5 );
            break;

        case EAknExGridCmdAddOneItemToTheLast:
             iContainer->AddDataL( 1 );
             break;

        case EAknExGridCmdAddFiveItemsToTheLast:
            iContainer->AddDataL( 5 );
             break;

        case EAknExGridCmdRemoveOneItemFromCurrent:
            iContainer->RemoveDataL( 1 , KRemoveFromCurrent );
            break;

        case EAknExGridCmdRemoveFiveItemsFromCurrent:
            iContainer->RemoveDataL( 5 , KRemoveFromCurrent );
            break;

        case EAknExGridCmdRemoveOneItemFromLast:
            iContainer->RemoveDataL( 1 , KRemoveFromLast );
            break;

        case EAknExGridCmdRemoveFiveItemsFromLast:
            iContainer->RemoveDataL( 5 , KRemoveFromLast );
            break;

        case EAknExGridCmdRemoveAllItems:
            iContainer->RemoveDataL( KRemoveAllItems , KRemoveFromLast );
            break;

        case EAknExGridCmdFillingOrder:
            iContainer->DetermineFillingOrderL();
            break;

        case EAknExGridCmdLoopingVertFollowLoop:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndLoops );
            break;

        case EAknExGridCmdLoopingVertFollowStop:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndStops );
            break;

        case EAknExGridCmdLoopingVertFollowGrid:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollFollowsGrid );
            break;

        case EAknExGridCmdLoopingVertStopEnd:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollStops );
            break;

        case EAknExGridCmdLoopingHorizFollowLoop:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndLoops );
            break;

        case EAknExGridCmdLoopingHorizFollowStop:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndStops );
            break;

        case EAknExGridCmdLoopingHorizFollowGrid:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollFollowsGrid );
            break;

        case EAknExGridCmdLoopingHorizStopEnd:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollStops );
            break;

        case EAknExGridCmdChangeSize:
            iContainer->DetermineChangeSizeL();
            break;

        case EAknExGridCmdContainText:
            iContainer->SelectContents( EContainText );
            break;

        case EAknExGridCmdContainGraphic:
            iContainer->SelectContents( EContainGraphic );
            break;

        case EAknExGridCmdContainBoth:
            iContainer->SelectContents( EContainBoth );
            break;

        case EAknExGridCmdAbout:
            iCoeEnv->ReadResource(
                aboutString, R_EXGR_TEXT_ABOUT_MARKABLE );
            iEikonEnv->AlertWin( aboutString );
            break;

        case EAknExGridCmdClose: // return to main view
            STATIC_CAST( CAknExGridAppUi*, AppUi() )
                ->ChangeActiveViewAndTabL( KViewId, EAknExGridViewTab );
            break;

        case EAknExGridCmdSelectAll:
        case EAknExGridCmdDeselectAll:
        case EAknExGridCmdToggle:
            iContainer->MarkAllItemsL( aCommand );
            break;

        default:
            {
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    }


// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::DynInitMenuPaneL()
//  This function is called by the EIKON framework just before it displays
//  a menu pane. Its default implementation is empty, and by overriding it,
//  the application can set the state of menu items dynamically according
//  to the state of application data.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMarkableSelection::DynInitMenuPaneL(
                        TInt aResourceId, CEikMenuPane* aMenuPane )
    {
    if ( aResourceId == R_EXGR_MENUPANE_SELECTION )
        {
        aMenuPane->SetItemDimmed( EAknExGridCmdSelectAll, EFalse );
        aMenuPane->SetItemDimmed( EAknExGridCmdDeselectAll, EFalse );
        aMenuPane->SetItemDimmed( EAknExGridCmdToggle, EFalse );
        }
    }


// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::HandleClientRectChange()
// Handles the size of the clientrect.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMarkableSelection::HandleClientRectChange()
    {
    if ( iContainer )
        {
        iContainer->SetRect( ClientRect() );
        }
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::DoActivateL()
// Creates the Container class object.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMarkableSelection::DoActivateL(
    const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/,
    const TDesC8& /*aCustomMessage*/ )
    {
    iContainer = CAknExGridContainerAsSelection::NewL(
                                    ClientRect(), EAknExGridMarkableGrid );
    iContainer->SetMopParent( this );

    AppUi()->AddToStackL( *this, iContainer );
   }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMarkableSelection::DoDeactivate()
// Deletes the Container class object.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMarkableSelection::DoDeactivate()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iContainer;
    iContainer = NULL;
    }

// End of File

⌨️ 快捷键说明

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