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

📄 aknexlistmarkcontainer.cpp

📁 Symbian手机编程
💻 CPP
字号:
/*
* =============================================================================
*  Name     : CAknExListMarkContainer
*  Part of  : AknExList
*  Copyright (c) 2003 Nokia. All rights reserved.
* =============================================================================
*/

// INCLUDE FILES
#include <aknlists.h> // for avrell style listbox
#include <akntabgrp.h>
#include <aknsfld.h>
#include <aknexlist.rsg>
#include <aknexlist.mbg>
#include "AknExList.hrh"
#include "AknExListConst.h"
#include "AknExListMarkView.h"
#include "AknExListMarkContainer.h"

// CONSTANTS
// for initialization.
const TInt KAknExListInitCount = 0;
// Key for re-opehing outline 83.
#define REOPENOUTLINE83LISTKEY '0'

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

// ----------------------------------------------------------------------------
// CAknExListMarkContainer::CAknExListMarkContainer( CAknExListMarkView* )
// Copy constructor.
// ----------------------------------------------------------------------------
//
CAknExListMarkContainer::CAknExListMarkContainer(
    CAknExListMarkView* aView )
:   iListBox( NULL ),
    iView( aView ),
    iOutlineId( KAknExListInitOutlineId )
    {
    }

// ----------------------------------------------------------------------------
// void CAknExListMarkContainer::ConstructL( const TRect& )
// EPOC constructor.
// ----------------------------------------------------------------------------
//
void CAknExListMarkContainer::ConstructL( const TRect& aRect )
    {
    CreateWindowL(); // Creates window.
    SetRect( aRect ); // Sets rectangle of frame.
    ActivateL(); // Activates window. (Ready to draw)
    }

// ----------------------------------------------------------------------------
// CAknExListMarkContainer::~CAknExListMarkContainer()
// Destructor.
// ----------------------------------------------------------------------------
//
CAknExListMarkContainer::~CAknExListMarkContainer()
    {
    delete iListBox; // Deletes listbox object.
    delete iFindBox;
    }

// ----------------------------------------------------------------------------
// void CAknExListMarkContainer::DisplayListBoxL( const TInt )
// Displays listbox or start screen.
// ----------------------------------------------------------------------------
//
void CAknExListMarkContainer::DisplayListBoxL( const TInt aOutlineId )
    {
    // Sets outlineId.
    iOutlineId = aOutlineId;

    // Deletes listbox object.
    if ( iListBox )
        {
        delete iListBox;
        iListBox = NULL;
        }

    delete iFindBox;
    iFindBox = NULL;

    TInt resourceId( KAknExListInitListResourceId ); // For listbox.
    TBool isNeedFindBox(EFalse);

    // Creates ListBox control object and sets resource ID.
    switch ( iOutlineId ) // Outline ID is...
        {
        case EAknExListCmdOutline32: // OUTLINE32 screen.
        case EAknExListCmdOutline81: // OUTLINE81 screen.
        case EAknExListCmdOutline82: // OUTLINE82 screen.
        case EAknExListCmdOutline83: // OUTLINE83 screen.
        case EAknExListCmdOutline87: // OUTLINE87 screen.
            resourceId = R_AKNEXLIST_SINGLE_4;
            iListBox = new( ELeave ) CAknSingleStyleListBox();
            break;
        default:
            break;
        }

    if ( iListBox )
        {
        SetListBoxFromResourceL( iListBox, resourceId );

        //SizeChanged();

        // Creates graphic.
        SetGraphicIconL( iListBox );

        //iListBox->ActivateL();
        // Update scrollbar in order to draw correct scroll bar.
        UpdateScrollBar(iListBox);
        
        }

    if (isNeedFindBox)
        {
        iFindBox = CreateFindBoxL(iListBox, iListBox->Model(),
                                  CAknSearchField::ESearch);
        }

    SizeChanged();
    iListBox->ActivateL();
    DrawNow();
    }

// ----------------------------------------------------------------------------
// CEikListBox* CAknExListMarkContainer::ListBox()
// Returns pointer to listbox object.
// ----------------------------------------------------------------------------
//
CEikListBox* CAknExListMarkContainer::ListBox()
    {
    return iListBox;
    }

// ----------------------------------------------------------------------------
// TKeyResponse CAknExListMarkContainer::OfferKeyEventL( const TKeyEvent&,
//  TEventCode )
// Handles the key events.
// ----------------------------------------------------------------------------
//
TKeyResponse CAknExListMarkContainer::OfferKeyEventL(
    const TKeyEvent& aKeyEvent,
    TEventCode aType )
    {
    if ( aType != EEventKey ) // Is not key event?
        {
        return EKeyWasNotConsumed;
        }

    switch ( aKeyEvent.iCode ) // The code of key event is...
        {
        case EKeySpace: // Space key.
            iView->DisplayNextOutlineL();
            return EKeyWasConsumed;
        case REOPENOUTLINE83LISTKEY:
            {
            if (iOutlineId == EAknExListCmdOutline83)
                {
                DisplayListBoxL(EAknExListCmdOutline83);
                return EKeyWasConsumed;
                }
            break;
            }
        default:
            {
            break;
            }
        }

    if ( iListBox )
        {
        if ( iFindBox )
            {
            TBool needRefresh( EFalse );
            
            // Offers the key event to find box.
            if ( AknFind::HandleFindOfferKeyEventL( aKeyEvent, aType, this,
                                                    iListBox, iFindBox,
                                                    EFalse,
                                                    needRefresh ) ==
                EKeyWasConsumed )
                {
                if ( needRefresh )
                    {
                    SizeChangedForFindBox();
                    DrawNow();
                    }

                return EKeyWasConsumed;
                }
            }

        return iListBox->OfferKeyEventL( aKeyEvent, aType );
        }
    else
        {
        return EKeyWasNotConsumed;
        }
    }

// ----------------------------------------------------------------------------
// void CAknExListColumnContainer::SizeChangedForFindBox()
// Called by framework when the view size is changed for creating listbox with
// findbox.
// ----------------------------------------------------------------------------
//
void CAknExListMarkContainer::SizeChangedForFindBox()
    {
    if ( iListBox && iFindBox )
        {
        CAknColumnListBox* aknListBox = STATIC_CAST(CAknColumnListBox*, iListBox);
        AknFind::HandleFixedFindSizeChanged(this, aknListBox, iFindBox);
        }
    }


// ----------------------------------------------------------------------------
// void CAknExListMarkContainer::GraphicIconL( CArrayPtr<CGulIcon>* )
// Appends graphics data.
// ----------------------------------------------------------------------------
//
void CAknExListMarkContainer::GraphicIconL( CArrayPtr<CGulIcon>* aIcons )
    {
    if ( aIcons )
        {
        // Appends icon according to iOutlineId.
        switch ( iOutlineId )
            {
            case EAknExListCmdOutline32:
            case EAknExListCmdOutline81:
            case EAknExListCmdOutline82:
            case EAknExListCmdOutline83:
            case EAknExListCmdOutline87:
                aIcons->AppendL( iEikonEnv->CreateIconL( KAknExListMbmFileName,
                                                         EMbmAknexlistMarked_add,
                                                         EMbmAknexlistMarked_add_m ) );
                break;
            default:
                break;
            }
        }
    }

// ----------------------------------------------------------------------------
// void CAknExListMarkContainer::SizeChanged()
// Called by framework when the view size is changed.
// ----------------------------------------------------------------------------
//
void CAknExListMarkContainer::SizeChanged()
    {
    if (iListBox)
        {
        if (iFindBox)
            {
            SizeChangedForFindBox();
            }
        else
            {
            iListBox->SetRect(Rect()); // Sets rectangle of lstbox.
            }
        }
    }

// ----------------------------------------------------------------------------
// TInt CAknExListMarkContainer::CountComponentControls() const
// Returns number of components.
// ----------------------------------------------------------------------------
//
TInt CAknExListMarkContainer::CountComponentControls() const
    {
    TInt count( KAknExListInitCount );

    if ( iListBox )
        {
        count++;
        }
    if (iFindBox)
        {
        count++;
        }

    return count; // Returns number of controls inside this container.
    }

// ----------------------------------------------------------------------------
// CCoeControl* CAknExListMarkContainer::ComponentControl( TInt ) const
// Returns pointer to particular component.
// ----------------------------------------------------------------------------
//
CCoeControl* CAknExListMarkContainer::ComponentControl( TInt aIndex ) const
    {
    switch ( aIndex )
        {
        case EAknExListDefaultComponent:
            return iListBox; // Returns the pointer to listbox object.
        case EAknExListFindBox:
            return iFindBox;
        default:
            return NULL; // Exception : Returns NULL.
        }
    }

// End of File

⌨️ 快捷键说明

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