📄 aknexquerycontainer.cpp
字号:
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 + -