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

📄 aknexsettinglistcontainer.cpp

📁 symbian下的settinglist 适合初学者
💻 CPP
字号:
/* Copyright (c) 2004, Nokia. All rights reserved */


// INCLUDE FILES
#include <barsread.h>
#include <eiklabel.h>
#include <avkon.hrh>
#include <aknlists.h>
#include <aknexsettinglist.rsg>
#include <aknquerydialog.h>

#include "aknexsettinglist.hrh"
#include "aknexsettinglistview.h"
#include "aknexsettinglistcontainer.h"



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

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::CAknExSettingListContainer()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
CAknExSettingListContainer::CAknExSettingListContainer(
                            CAknExSettingListView* aView ):
                            iLabel( NULL ),
                            iView( aView ),
                            iCurrentOutlineId( EAknExSettingListCmdEmptyOutline )
    {
    // No implementation required
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CAknExSettingListContainer::ConstructL( const TRect& aRect )
    {
    // Creates window
    CreateWindowL();

    // Sets rectangle of frame
    SetRect( aRect ); 
    
     // Activates the window. (Ready to draw)
    ActivateL();
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::~CAknExSettingListContainer()
// Destructor.
// -----------------------------------------------------------------------------
//

CAknExSettingListContainer::~CAknExSettingListContainer()
    {
    // Deletes the label object.
    delete iLabel;
    }

// ----------------------------------------------------------------------------
// CAknExSettingListContainer::SetCurrentOutlineId()
// Sets ID of current outline.
// ----------------------------------------------------------------------------
//
void CAknExSettingListContainer::SetCurrentOutlineId( const TInt aOutlineId )
    {
    // Sets ID of current outline.
    iCurrentOutlineId = aOutlineId;
    }

// ----------------------------------------------------------------------------
// void CAknExSettingListContainer::DisplayLabelL()
// Displays the label by ID of resource.
// ----------------------------------------------------------------------------
//
void CAknExSettingListContainer::DisplayLabelL( const TInt aResourceId )
    {

    // Creates the label object.
    if ( !iLabel )
        {
        iLabel = new( ELeave ) CEikLabel;
        iLabel->SetContainerWindowL( *this );
        iLabel->SetFont( LatinBold19() );
        iLabel->SetAlignment( EHCenterVCenter );
        }

    TBuf<KAknExSettingListTextBufLength> labelText( NULL );

    iCoeEnv->ReadResource( labelText, aResourceId );
    iLabel->SetTextL( labelText );

    SizeChanged();
    DrawNow();
    }

// ----------------------------------------------------------------------------
// CAknExSettingListContainer::OfferKeyEventL()
// Handles the key events.
// ----------------------------------------------------------------------------
//
TKeyResponse CAknExSettingListContainer::OfferKeyEventL( const TKeyEvent& 
                                                         aKeyEvent,
                                                         TEventCode aType )
    {

     // Is not key event?
    if ( aType != EEventKey )
        {
        return EKeyWasNotConsumed;
        }

    // The code of key event is
    switch ( aKeyEvent.iCode )
        {
        case EKeySpace: // Space key.
        case EKeyRightArrow:

            // Requires to display next outline screen.
            iView->SetCurrentOutlineId( iCurrentOutlineId );
            iView->DisplayNextOutlineL();
            break;

        case EKeyLeftArrow:
            // Display the previous outline.
            iView->SetCurrentOutlineId( iCurrentOutlineId );
            iView->DisplayPreviousOutlineL();

        default:
            return EKeyWasNotConsumed;
        }
    return EKeyWasConsumed;
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::SizeChanged()
// Called by framework when the view size is changed.
// -----------------------------------------------------------------------------
//
void CAknExSettingListContainer::SizeChanged()
    {
    // Sets rectangle of label.
    if ( iLabel )
        {
        iLabel->SetRect( Rect() );
        }
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::CountComponentControls()
// Returns number of component.
// -----------------------------------------------------------------------------
//
TInt CAknExSettingListContainer::CountComponentControls() const
    {
    TInt count( KAknExSettingListCountInitial );

    if ( iLabel )
        {
        count++;
        }

    // Returns number of component.
    return count; 
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::ComponentControl()
// Returns pointer to particular component.
// -----------------------------------------------------------------------------
//
CCoeControl* CAknExSettingListContainer::ComponentControl( TInt aIndex ) const
    {
    // Component is ...
    switch ( aIndex )
        {
        case EAknExSettingListComponentLabel:
            if ( iLabel )
                {
                // Returns the pointer to label object.
                return iLabel; 
                }

        default:
            return NULL; // Exception: Returns NULL value.
        }
    }

// -----------------------------------------------------------------------------
// CAknExSettingListContainer::Draw() const
// Clears the window's rectangle.
// -----------------------------------------------------------------------------
//
void CAknExSettingListContainer::Draw( const TRect& aRect ) const
    {

    // (Re)draw the rectangle of frame.
    CWindowGc& gc = SystemGc();
    gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetBrushColor( KRgbGray );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    gc.DrawRect( aRect );
    }

// End of File

⌨️ 快捷键说明

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