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

📄 aknexquerycontainer.cpp

📁 symbian ui的 例子 初学者可以 好好看看,这个是培训的资料,应该比较宝贵
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    CDesCArray* textArray = iCoeEnv->ReadDesCArrayResourceL( resourceId );
    iListBox->Model()->SetItemTextArray( textArray );
    iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray );

    // Sets pixel values of width.
    TRect rect( TPoint( KAknExQueryListBoxRectPointX,
        KAknExQueryListBoxRectPointY ),
        TSize( KAknExQueryListBoxRectWidth,
        KAknExQueryListBoxRectHeight )  );

    CColumnListBoxData* columnData = iListBox->ItemDrawer()->ColumnData();
    columnData->SetColumnWidthPixelL( KAknExQueryNameColumnIndex,
                                      rect.Width() );
    columnData->SetColumnWidthPixelL( KAknExQueryNameGapColumnIndex,
                                      rect.Width() );

    // Gets current number of list box items.
    TInt numberOfItems( iListBox->Model()->NumberOfItems() );
    // Gets new height of list box.
    TInt height( iListBox->CalcHeightBasedOnNumOfItems( numberOfItems ) );
    // If new height is less than defined height of list box
    // sets new height to list box height.
    if ( height < rect.Height() )
        {
        rect.SetHeight( height );
        }

    iListBox->SetRect( rect ); // Sets rectangle of list box.
    ActivateL();
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::DeleteListBoxL()
// Deletes listbox object.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::DeleteListBoxL()
    {
    if ( iListBox )
        {
        delete iListBox;
        iListBox = NULL;
        }
    if ( iHandler )
        {
        delete iHandler;
        iHandler = NULL;
        }
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::CreateLabelL()
// Creates label object.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::CreateLabelL( TInt aResourceId )
    {
    if ( !iLabelResultMessage )
        {
        iLabelResultMessage = new ( ELeave ) CEikLabel;
        iLabelResultMessage->SetContainerWindowL( *this );
        iLabelResultMessage->SetRect( Rect() );
        iLabelResultMessage->SetAlignment( EHCenterVTop );
        iLabelResultMessage->SetPosition( AKNEXQUERY_LABEL2_POSITION );
        if (AknLayoutUtils::Variant() == EApacVariant)
			{
			iLabelResultMessage->SetFont( ApacPlain16() );
			}
		else
			{
			iLabelResultMessage->SetFont( LatinBold19() );
		    }
        }

    TBuf<KAknExQueryTextBufLength> labelText;
    iCoeEnv->ReadResource( labelText, aResourceId );
    iLabelResultMessage->SetTextL( labelText );
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::DeleteLabelL()
// Deletes label object.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::DeleteLabelL()
    {
    delete iLabelResultMessage;
    iLabelResultMessage = NULL;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::SetTextToLabelL()
// Set Label text.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::SetTextToLabelL( TInt aResourceId )
    {
    TBuf<KAknExQueryTextBufLength> messageString;
    iCoeEnv->ReadResource( messageString, aResourceId );
    iLabel->SetTextL( messageString );
    DrawNow();
    }


// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowMessageL( const TDesC& aMessage )
// Show Message.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowMessageL( const TDesC& aMessage )
    {
    iLabelResultMessage->SetTextL( aMessage );
    DrawNow();
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::OfferKeyEventL()
// Handles the key events.
// ----------------------------------------------------------------------------
//
TKeyResponse CAknExQueryContainer::OfferKeyEventL(
    const TKeyEvent& aKeyEvent,
    TEventCode aType )
    {
    if ( aType != EEventKey )
        {
        return EKeyWasNotConsumed;
        }
    switch ( aKeyEvent.iCode )
        {
        case EKeySpace:
            if ( iDisplayDialog )
                {
                return EKeyWasNotConsumed;
                }
            iView->DisplayNextOutlineL();
            DrawNow();
            break;
        default:
            if ( !iDisplayDialog && iListBox )
                {
                return iListBox->OfferKeyEventL( aKeyEvent, aType );
                }
            else
                {
                return EKeyWasNotConsumed;
                }
        }
    return EKeyWasConsumed;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::SizeChanged()
// Called by framework when the view size is changed
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::SizeChanged()
    {
    if ( iLabel )
        {
        iLabel->SetExtent( AKNEXQUERY_LABEL_ORIGIN, Size() );
        iLabel->SetAlignment( EHCenterVCenter );
        }
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::CountComponentControls() const
//  Returns number of component.
// ----------------------------------------------------------------------------
//
TInt CAknExQueryContainer::CountComponentControls() const
    {
    TInt count( KAknExQueryCountComponentControls );
    if ( iLabelResultMessage )
        {
        count++;
        }
    if ( iListBox )
        {
        count++;
        }
    return count;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::ComponentControl( TInt aIndex ) const
// Returns pointer to particular component.
// ----------------------------------------------------------------------------
//
CCoeControl* CAknExQueryContainer::ComponentControl( TInt aIndex ) const
    {
    switch ( aIndex )
        {
        case EAknExQueryComponentLabel:
            return iLabel;
        case EAknExQueryComponentLabel2:
            if ( iLabelResultMessage )
                {
                return iLabelResultMessage;
                }
            else
                {
                return iListBox;
                }
        case EAknExQueryComponentListBox:
            return iListBox;
        default:
            return NULL;
        }
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::Draw( const TRect& aRect ) const
//
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::Draw( const TRect& aRect ) const
    {
    CWindowGc& gc = SystemGc();
    gc.SetPenStyle( CGraphicsContext::ENullPen );
    gc.SetBrushColor( KAknExQueryGray );
    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
    gc.DrawRect( aRect );
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowMultiLineTimeAndDurationLayoutL
// Display of MultiLine Time with Duration Query
// ----------------------------------------------------------------------------
void CAknExQueryContainer::ShowMultiLineTimeAndDurationLayoutL(
     const TInt aResourceId,
    const TInt aTopResourceId)
    {
    iDisplayDialog = ETrue;
    SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );

    TBuf<KAknExQueryTextBufLength> bufferRes;

    iCoeEnv -> ReadResource(bufferRes, aTopResourceId);

    TTime topDateTime;
    topDateTime.Set(bufferRes);
	topDateTime.HomeTime();

    TTimeIntervalSeconds bottomDuration = 300;	// set timer field to 5 minutes

    CAknMultiLineDataQueryDialog* dlg =
        CAknMultiLineDataQueryDialog::NewL( topDateTime, bottomDuration );

    dlg->ExecuteLD( aResourceId );

    iDisplayDialog = EFalse;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::SetIconL()
// Set Icon dynamically
// ----------------------------------------------------------------------------
void CAknExQueryContainer::SetIconL( CAknQueryDialog* aDlg,
                                    TInt32 aBitmap,
                                    TInt32 aMask )
    {
    CEikImage* image = new ( ELeave ) CEikImage();
    CleanupStack::PushL( image );

    CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL(
        KAknExQueryMbmFilePath, aBitmap );
    CleanupStack::PushL( bitmap );
    CFbsBitmap* mask = iEikonEnv->CreateBitmapL(
        KAknExQueryMbmFilePath, aMask );
    CleanupStack::PushL( mask );

    image->SetBitmap( bitmap );
    image->SetMask( mask );
    CleanupStack::Pop( 2 ); //mask and bitmap

    aDlg->QueryHeading()->SetHeaderImageL( image );
    CleanupStack::PopAndDestroy(); //image
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowGlobalListQueryL()
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowGlobalListQueryL()
    {
    iDisplayDialog = ETrue;
    SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );

    CDesCArray* textArray = iCoeEnv->ReadDesCArrayResourceL(
       R_AKNEXQUERY_SUB_POPUP_DATA );

    CleanupStack::PushL( textArray );

    if ( iGlobalListObserver )
        {
        iGlobalListObserver->Cancel();
        delete iGlobalListObserver;
        iGlobalListObserver = NULL;
        }
    iGlobalListObserver = CAknExQueryGlobalListObserver::NewL( this );
    iGlobalListObserver->UnsetSelectItemFlag();

    iGlobalListObserver->Start();

    if ( iGlobalListQuery )
        {
        delete iGlobalListQuery;
        iGlobalListQuery = NULL;
        }
    iGlobalListQuery = CAknGlobalListQuery::NewL();

    iGlobalListObserver->SetSelectItemFlag();
    iGlobalListQuery->ShowListQueryL(
        textArray,
        iGlobalListObserver->iStatus,
        0 );

    CleanupStack::PopAndDestroy(); // textArray
    iDisplayDialog = EFalse;
    }

// End of File

⌨️ 快捷键说明

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