📄 aknexquerycontainer.cpp
字号:
void CAknExQueryContainer::ShowGlobalMessageQueryL(
const TTimerUpdateType& aUpdateType )
{
iDisplayDialog = ETrue;
SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
if ( !iGlobalMsgQuery )
{
iGlobalMsgQuery = CAknGlobalMsgQuery::NewL();
}
delete iGlobalListObserver;
iGlobalListObserver = NULL;
iGlobalListObserver = CAknExQueryGlobalListObserver::NewL( this );
iGlobalListObserver->SetSelectItemFlag();
iGlobalListObserver->Start();
HBufC* messageText = HBufC::NewLC( KAknExQueryTextLargeMessageLength );
// Read message from resouce
for ( TInt i( R_AKNEXQUERY_MESSAGE_TEXT1 );
i <= R_AKNEXQUERY_MESSAGE_TEXT3 ; i += 1 )
{
TBuf<KAknExQueryTextMaxLength> temp;
iCoeEnv->ReadResource( temp, i );
messageText->Des() += temp;
}
TBuf<KAknExQueryTextBufLength> headerText;
iCoeEnv->ReadResource( headerText, R_AKNEXQUERY_HEADING_TEXT );
iGlobalMsgQuery->ShowMsgQueryL( iGlobalListObserver->iStatus,
*messageText,
R_AVKON_SOFTKEYS_ANSWER_EXIT,
headerText,
KAvkonMbmFilePath,
EMbmAvkonQgn_indi_checkbox_on,
EMbmAvkonQgn_indi_checkbox_on_mask );
CleanupStack::PopAndDestroy(); //messageText
iGlobalListObserver->UnsetSelectItemFlag();
StartTimerL( 3000000, 50000000, aUpdateType );
iDisplayDialog = EFalse;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::StartTimerL()
//
// ----------------------------------------------------------------------------
void CAknExQueryContainer::StartTimerL( TInt aStart, TInt aInterval,
const TTimerUpdateType& aUpdateType )
{
DeleteTimer();
iTimer = CPeriodic::NewL( EPriorityLow );
iTimerUpdateType = aUpdateType;
iTimer->Start( aStart, aInterval, TCallBack( TimerCallbackL, this ) );
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::TimerCallbackL()
//
// ----------------------------------------------------------------------------
TInt CAknExQueryContainer::TimerCallbackL( TAny* aThis )
{
static_cast<CAknExQueryContainer*>( aThis )->ProcessTimerEventL();
return 0;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::ProcessTimerEventL()
//
// ----------------------------------------------------------------------------
void CAknExQueryContainer::ProcessTimerEventL()
{
if ( iGlobalMsgQuery && iTimerUpdateType == EUpdateGlobalQuery )
{
iGlobalMsgQuery->UpdateMsgQuery( R_AVKON_SOFTKEYS_EXIT );
iTimerUpdateType = ECancelGlobalQuery;
}
else if ( iGlobalMsgQuery && iTimerUpdateType == ECancelGlobalQuery )
{
iTimerUpdateType = ENoUpdate;
iGlobalMsgQuery->CancelMsgQuery();
DeleteTimer();
}
else if ( iGlobalListQuery && iTimerUpdateType == ECancelListQuery )
{
iGlobalListQuery->CancelListQuery();
DeleteTimer();
}
else if ( iPopupList && iTimerUpdateType == ECancelPopupList )
{
iPopupList->CancelPopup();
DeleteTimer();
}
else if ( iGlobalListQuery && iTimerUpdateType == EUpdateGlobalListQueryUp )
{
iGlobalListQuery->MoveSelectionUp();
iTimerUpdateType = EUpdateGlobalListQueryDown;
DeleteTimer();
}
else if ( iGlobalListQuery && iTimerUpdateType == EUpdateGlobalListQueryDown )
{
iGlobalListQuery->MoveSelectionDown();
iTimerUpdateType = EUpdateGlobalListQuerySelect;
DeleteTimer();
}
else if ( iGlobalListQuery && iTimerUpdateType
== EUpdateGlobalListQuerySelect )
{
iGlobalListQuery->SelectItem();
iTimerUpdateType = ENoUpdate;
DeleteTimer();
}
else if ( iQueryDialog && iTimerUpdateType == ECancelQueryAnim )
{
CAknQueryControl* control = static_cast<CAknQueryControl*>
( iQueryDialog->ControlOrNull( EGeneralQuery ) );
control->CancelAnimation();
DeleteTimer();
}
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::DoSetIconArrayL()
// Set icon to array dynamically.
// ----------------------------------------------------------------------------
void CAknExQueryContainer::DoSetIconArrayL()
{
TInt index( 0 );
CAknListQueryDialog* dialog = new ( ELeave ) CAknListQueryDialog( &index );
dialog->PrepareLC( R_AKNEXQUERY_MULTI_SELECTION_QUERY );
CArrayPtr<CGulIcon>* icons = new ( ELeave ) CAknIconArray( 10 );
CleanupStack::PushL( icons );
icons->AppendL( iEikonEnv->CreateIconL( KAvkonMbmFilePath,
EMbmAvkonQgn_indi_marked_add, EMbmAvkonQgn_indi_marked_add_mask ) );
icons->AppendL( iEikonEnv->CreateIconL( KAvkonMbmFilePath,
EMbmAvkonQgn_prop_folder_medium,EMbmAvkonQgn_prop_folder_medium_mask ) );
dialog->SetIconArrayL( icons );
dialog->RunLD();
CleanupStack::Pop(); //icons
}
void CAknExQueryContainer::DeleteTimer()
{
delete iTimer;
iTimer = NULL;
}
// ----------------------------------------------------------------------------
// 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::ShowCodeQueryL()
// Display of Code Query.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowCodeQueryL(
const TInt aLength, TDesC* aDefaultText )
{
iDisplayDialog = ETrue;
SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
TBuf<KAknExQueryCodeBufLength> textData;
if ( aDefaultText && aDefaultText->Length() <= KAknExQueryCodeBufLength )
{
textData = *aDefaultText;
}
CAknTextQueryDialog* dlg =
new ( ELeave ) CAknTextQueryDialog( textData,
CAknQueryDialog::ENoTone );
if ( aLength )
{
dlg->PrepareLC( R_AKNEXQUERY_CODE_QUERY );
dlg->SetMaxLength( aLength );
dlg->RunLD();
}
else
{
dlg->ExecuteLD( R_AKNEXQUERY_CODE_QUERY );
}
iDisplayDialog = EFalse;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::DoCancelPopUp()
// Cancel Popup.
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::DoCancelPopUp()
{
iDisplayDialog = ETrue;
SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
CEikTextListBox* list = new ( ELeave ) CEikTextListBox;
CleanupStack::PushL( list );
iPopupList = CAknPopupList::NewL( list, R_AVKON_SOFTKEYS_OK_BACK, AknPopupLayouts::EMenuWindow );
CleanupStack::PushL( iPopupList );
list->ConstructL( iPopupList,CEikListBox::ELeftDownInViewRect );
list->CreateScrollBarFrameL( ETrue );
list->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
TBuf<50> buf;
CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( 1 );
CleanupStack::PushL( items );
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_LIST_ITEM4 );
items->AppendL( buf );
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_LIST_ITEM5 );
items->AppendL( buf );
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_LIST_ITEM6 );
items->AppendL( buf );
CTextListBoxModel* model = list->Model();
model->SetItemTextArray( items );
model->SetOwnershipType( ELbmOwnsItemArray );
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_LIST_TITLE2 );
iPopupList->SetTitleL( buf );
StartTimerL( 3000000, 10000000, ECancelPopupList );
TInt answer( iPopupList->ExecuteLD() );
DeleteTimer();
if ( answer )
{
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_MESSAGE_TEXT10 );
TInt index = list->CurrentItemIndex();
TBuf<50> text;
text.Format( buf, index+1 );
User::InfoPrint( text );
}
else
{
iCoeEnv->ReadResource( buf, R_AKNEXQUERY_MESSAGE_TEXT11 );
User::InfoPrint( buf );
}
CleanupStack::Pop( 2 ); //items ( destroyed by listbox ). popupList
CleanupStack::PopAndDestroy(); // list
iDisplayDialog = EFalse;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::ShowGlobalListQueryL()
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::ShowGlobalListQueryL( const TTimerUpdateType& aUpdateType )
{
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 );
if ( aUpdateType != ENoTimer )
{
StartTimerL( 5000000, 10000000, aUpdateType );
}
CleanupStack::PopAndDestroy(); // textArray
iDisplayDialog = EFalse;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::DataLayoutFromControlByLayoutOrNull()
//
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::DataLayoutFromControlByLayoutOrNull()
{
iDisplayDialog = ETrue;
SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
CAknQueryDialog* dlg = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );
dlg->PrepareLC( R_AKNEXQUERY_DATA_QUERY );
CAknQueryControl* control =
static_cast<CAknQueryControl*>( dlg->ControlOrNull( EGeneralQuery ) );
CEikEdwin* edwin =
static_cast<CEikEdwin*>( control->ControlByLayoutOrNull( EDataLayout ) );
edwin->SetTextL( &KAknExQueryDefaultDataText );
dlg->RunLD();
iDisplayDialog = EFalse;
}
// ----------------------------------------------------------------------------
// CAknExQueryContainer::StaticSizeDataLayoutFromControlByLayoutOrNull()
// ----------------------------------------------------------------------------
//
void CAknExQueryContainer::StaticSizeDataLayoutFromControlByLayoutOrNull()
{
iDisplayDialog = ETrue;
SetTextToLabelL( R_AKNEXQUERY_OPERATE_MESSAGE );
TBuf<KAknExQueryTextBufLength> temp;
CAknTextQueryDialog* dlg = new ( ELeave )
CAknTextQueryDialog( temp, CAknQueryDialog::ENoTone );
dlg->PrepareLC( R_AKNEXQUERY_DATA_QUERY_WITH_HEADING );
CAknQueryControl* control =
static_cast<CAknQueryControl*>( dlg->ControlOrNull( EGeneralQuery ) );
CEikEdwin* edwin =
static_cast<CEikEdwin*>( control->ControlByLayoutOrNull( EStaticSizeDataLayout ) );
edwin->SetTextL( &KAknExQueryDefaultDataText );
dlg->RunLD();
iDisplayDialog = EFalse;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -