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

📄 aknexquerycontainer.cpp

📁 symbian中询问对话框生成的源代码 适合初学者使用。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    CleanupStack::PushL( array );

    CDesCArrayFlat* items =
        new ( ELeave ) CDesCArrayFlat( KAknExQueryArrayFlatResourceId );
    CleanupStack::PushL( items );


    for ( TInt i( 0 ) ; i < 5 ; i += 1 )
        {
        items->AppendL( ( *array )[i] );
        }

    CTextListBoxModel* model = listPane->Model();
    model->SetItemTextArray( items );
    model->SetOwnershipType( ELbmOwnsItemArray );
    CleanupStack::Pop(); // items - listbox model now owns this

    popupList->ExecuteLD();
    CleanupStack::PopAndDestroy(); // array
    CleanupStack::Pop(); // popupList
    CleanupStack::PopAndDestroy(); // listPane

    // delete array;
    iDisplayDialog = EFalse;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowListQueryL()
// Display of List Query.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowListQueryL( const TInt aResourceId )
    {
    iDisplayDialog = ETrue;
    SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
    CArrayFixFlat<TInt>* indexArray = NULL;
    CAknListQueryDialog* dlg;
    TInt index( 0 );

    if ( aResourceId == R_AKNEXQUERY_MULTI_SELECTION_LIST_QUERY )
        {

        indexArray = new ( ELeave ) CArrayFixFlat<TInt>( 6 );
        CleanupStack::PushL( indexArray );
        dlg = new ( ELeave ) CAknListQueryDialog( indexArray );

        }
    else
        {
        dlg = new ( ELeave ) CAknListQueryDialog( &index );
        }

    TInt answer( dlg->ExecuteLD( aResourceId ) );

    TBuf<KAknExQueryTextBufLength> text;
    if ( aResourceId == R_AKNEXQUERY_LIST_QUERY )
        {
        if ( answer )
            {
            TBuf<KAknExQueryTextBufLength> baseText;
            iCoeEnv->ReadResource( baseText, R_AKNEXQUERY_ITEM_SELECTED );
            text.Format( baseText, index+1 );
            ShowMessageL( text );
            }
        else
            {
            iCoeEnv->ReadResource( text, R_AKNEXQUERY_QUERYDISCARDED );
            ShowMessageL( text );
            }
        }

    if ( indexArray )
        {
        CleanupStack::PopAndDestroy();
        }
    iDisplayDialog = EFalse;
    }


// ----------------------------------------------------------------------------
// CAknExQueryContainer::PopoutListBoxL()
// Create handler.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::PopoutListBoxL( TInt aCommand )
    {
    SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );

    if ( CreateListBoxL( aCommand ) )
        {
        iHandler->HandleListBoxEventL(
            iListBox, MEikListBoxObserver::EEventEnterKeyPressed );
        }
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::CreateListBoxL()
// Creates listbox object.
// ----------------------------------------------------------------------------
//
TBool CAknExQueryContainer::CreateListBoxL( TInt aCommand )
    {
    DeleteListBoxL();

    TInt resourceId;
    switch ( aCommand )
        {
        case EAknExQueryOutline7:
            iHandler = new ( ELeave ) CAknExQueryEditorListEventHandler( this );
            resourceId = R_AKNEXQUERY_EDITOR_LIST_ITEM;
            break;
        case EAknExQueryOutline9:
            iHandler = new ( ELeave ) CAknExQueryKeyListEventHandler( this );
            resourceId = R_AKNEXQUERY_KEY_LIST_ITEM;
            break;
        case EAknExQueryOutline32:
            iHandler = new ( ELeave ) CAknExQueryIconListEventHandler( this );
            resourceId = R_AKNEXQUERY_ICON_LIST_ITEM;
            break;
        case EAknExQueryOutline34:
            iHandler = new ( ELeave ) CAknExQueryRollerListEventHandler( this );
            resourceId = R_AKNEXQUERY_ROLLER_LIST_ITEM;
            break;
        case EAknExQueryOutline39:
            iHandler =
                new ( ELeave ) CAknExQueryTextAndTextListEventHandler( this );
            resourceId = R_AKNEXQUERY_MULTILINE_TEXT_AND_TEXT_LIST_ITEM;
            break;
        case EAknExQueryOutline40:
            iHandler =
                new ( ELeave ) CAknExQueryTextAndTimeListEventHandler( this );
            resourceId = R_AKNEXQUERY_MULTILINE_TEXT_AND_TIME_LIST_ITEM;
            break;
        case EAknExQueryOutline41:
            iHandler =
                new ( ELeave ) CAknExQueryTimeAndTimeListEventHandler( this );
            resourceId = R_AKNEXQUERY_MULTILINE_TIME_AND_TIME_LIST_ITEM;
            break;
        case EAknExQueryOutline42:
            iHandler =
                new ( ELeave ) CAknExQueryTextAndNumberListEventHandler( this );
            resourceId = R_AKNEXQUERY_MULTILINE_TEXT_AND_NUMBER_LIST_ITEM;
            break;
        case EAknExQueryOutline43:
            iHandler =
                new ( ELeave ) CAknExQueryTextAndDurationListEventHandler(
                    this );
            resourceId = R_AKNEXQUERY_MULTILINE_TEXT_AND_DURATION_LIST_ITEM;
            break;
        case EAknExQueryOutline44:
            iHandler =
                new ( ELeave ) CAknExQueryTimeAndDurationListEventHandler(
                    this );
            resourceId = R_AKNEXQUERY_MULTILINE_TIME_AND_DURATION_LIST_ITEM;
            break;
        case EAknExQueryOutline112:
            iHandler = new ( ELeave ) CAknExQueryEditorListEventHandler( this );
            resourceId = R_AKNEXQUERY_EDITOR_LIST_ITEM;
            break;
        default:
            return( EFalse );
        }

    TInt flags( CEikListBox::EPopout | CEikListBox::ELeftDownInViewRect );
    iListBox = new ( ELeave ) CEikColumnListBox;
    iListBox->ConstructL( this, flags );

    iListBox->SetListBoxObserver( iHandler );
    iListBox->SetBorder( TGulBorder::EShallowRaised );
    iListBox->CreateScrollBarFrameL( ETrue );
    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
        CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );

    // Creates list items
    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();

    return( ETrue );
    }

// ----------------------------------------------------------------------------
// 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::ShowMessageQueryL()
// Show Message Query.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowMessageQueryL()
    {
    iDisplayDialog = ETrue;
    HBufC* message= HBufC::NewLC( 10000 );

    TBuf<KAknExQueryTextBufLength> messageFormat;

    iCoeEnv->ReadResource( messageFormat,  R_AKNEXQUERY_MESSAGE_TEXT4 );
    TBuf<KAknExQueryTextBufLength> messageString;
    //"Very long text entry for message query %d. "
    messageString.Format( messageFormat, 1 );
    message->Des().Format( messageString );
    //"Now two empty lines:\n\n\n...and text continues\n"
    iCoeEnv->ReadResource( messageString, R_AKNEXQUERY_MESSAGE_TEXT5 );
    message->Des().Append( messageString );
    //"Some text many lines:\n"
    iCoeEnv->ReadResource( messageString, R_AKNEXQUERY_MESSAGE_TEXT6 );
    message->Des().Append( messageString );

    //"Loop:\n"
    TBuf<KAknExQueryTextBufLength> messageString2;
    iCoeEnv->ReadResource( messageString2, R_AKNEXQUERY_MESSAGE_TEXT7 );

    for ( TInt ii( 0 ); ii < 80; ii++ )
        {
        message->Des().Append( messageString2 );
        message->Des().AppendNum( ii );
        message->Des().Append( messageString );
        }
    //"\nTHE END!"
    iCoeEnv->ReadResource( messageString, R_AKNEXQUERY_MESSAGE_TEXT8 );
    message->Des().Append( messageString );

    TPtrC messagePtrC( message->Des() );
    CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( messagePtrC );
    CleanupStack::PopAndDestroy(); // message
    dlg->PrepareLC( R_AVKON_MESSAGE_QUERY_DIALOG );

    HBufC* header = HBufC::NewLC( 30 );
    iCoeEnv->ReadResource( messageString, R_AKNEXQUERY_HEADING_TEXT );
    header->Des().Append( messageString );
    TPtrC headerPtrC( header->Des() );
    dlg->QueryHeading()->SetTextL( headerPtrC );
    CleanupStack::PopAndDestroy(); // header

    dlg->RunLD();

    iDisplayDialog = EFalse;
    }

// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowDataQueryWithHeadingLineL()
// Show Query With Heading Text.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowQueryWithHeadingLineL( const TInt aResouceId,
                                      const TInt aTextId )
    {
    iDisplayDialog = ETrue;
    SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );

    TBuf<KAknExQueryTextBufLength> longText;
	TBuf<KAknExQueryTextBufLength> prompt;
    iCoeEnv->ReadResource( prompt, aResouceId );

    CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL(
        longText, CAknQueryDialog::ENoTone );
    CleanupStack::PushL( dlg );
    dlg->SetPromptL( prompt );
    CleanupStack::Pop(); //dlg

    if ( aTextId )
        {
        TBuf<128> string;
        iCoeEnv->ReadResource( string, aTextId );
        dlg->QueryHeading()->SetTextL( string );
        dlg->SetPromptL( string );
        }

    dlg->ExecuteLD( R_AKNEXQUERY_DATA_QUERY_WITH_HEADING );

⌨️ 快捷键说明

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