390 */ |
390 */ |
391 void CAknFepUIAvkonImpl::ShowOwnsSoftkeysL(const TInt aResourceId, MEikCommandObserver* aObserver) |
391 void CAknFepUIAvkonImpl::ShowOwnsSoftkeysL(const TInt aResourceId, MEikCommandObserver* aObserver) |
392 { |
392 { |
393 if (iCba) |
393 if (iCba) |
394 { |
394 { |
395 delete iCba; |
395 DeleteCBAL(); |
396 iCba = NULL; |
396 } |
397 } |
397 // Create Inside CBA if needed |
398 iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, |
398 CreateInsideCBAL( CEikButtonGroupContainer::ECba, |
399 CEikButtonGroupContainer::EHorizontal, |
399 CEikButtonGroupContainer::EHorizontal, |
400 aObserver, |
400 aObserver, |
401 aResourceId); |
401 aResourceId ); |
402 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
402 |
403 iCba->DrawNow(); |
403 if ( iCba == NULL ) |
|
404 { |
|
405 iCba = CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::ECba, |
|
406 CEikButtonGroupContainer::EHorizontal, |
|
407 aObserver, |
|
408 aResourceId ); |
|
409 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
|
410 iCba->DrawNow(); |
|
411 } |
404 } |
412 } |
405 |
413 |
406 /** |
414 /** |
407 * This method is that empty CBA is shown in case aShown is ETrue. |
415 * This method is that empty CBA is shown in case aShown is ETrue. |
408 * If aShown is EFalse, empty CBA is erased. |
416 * If aShown is EFalse, empty CBA is erased. |
411 { |
419 { |
412 if (aShown) |
420 if (aShown) |
413 { |
421 { |
414 if (!iCba) |
422 if (!iCba) |
415 { |
423 { |
416 iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_EMPTY); |
424 CreateInsideCBAL( CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, R_AVKON_SOFTKEYS_EMPTY ); |
417 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
425 if ( iCba == NULL ) |
|
426 { |
|
427 iCba = CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::ECba, |
|
428 CEikButtonGroupContainer::EHorizontal, |
|
429 aObserver, R_AVKON_SOFTKEYS_EMPTY ); |
|
430 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
|
431 } |
418 } |
432 } |
419 // set each CBA |
433 // set each CBA |
420 TBool update = UpdateSoftkeyLabelL(ELeftSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY); |
434 TBool update = UpdateSoftkeyLabelL(ELeftSoftkeyIndex, ENullCommandId, R_TEXT_SOFTKEY_EMPTY); |
421 if (aInputMode == EPinyin || aInputMode == EZhuyin || |
435 if (aInputMode == EPinyin || aInputMode == EZhuyin || |
422 aInputMode == EStroke || aInputMode == ECangJie) |
436 aInputMode == EStroke || aInputMode == ECangJie) |
452 return iCba->ButtonGroup()->CommandId(aPosition); |
465 return iCba->ButtonGroup()->CommandId(aPosition); |
453 } |
466 } |
454 |
467 |
455 void CAknFepUIAvkonImpl::DeleteSoftkeys() |
468 void CAknFepUIAvkonImpl::DeleteSoftkeys() |
456 { |
469 { |
457 delete iCba; |
470 TRAP_IGNORE( DeleteCBAL() ); |
458 iCba = NULL; |
|
459 } |
471 } |
460 |
472 |
461 void CAknFepUIAvkonImpl::DrawSoftkeysNow() |
473 void CAknFepUIAvkonImpl::DrawSoftkeysNow() |
462 { |
474 { |
463 iCba->DrawNow(); |
475 iCba->DrawNow(); |
464 } |
476 } |
465 |
477 |
466 void CAknFepUIAvkonImpl::CreateSoftkeys(TInt aResourceId, MEikCommandObserver* aObserver) |
478 void CAknFepUIAvkonImpl::CreateSoftkeys(TInt aResourceId, MEikCommandObserver* aObserver) |
467 { |
479 { |
468 DeleteSoftkeys(); |
480 DeleteSoftkeys(); |
469 TRAP_IGNORE(iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, aResourceId)); |
481 TRAP_IGNORE(CreateInsideCBAL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, aResourceId)); |
470 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
482 if ( iCba == NULL) |
|
483 { |
|
484 TRAP_IGNORE(iCba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal, aObserver, aResourceId)); |
|
485 iCba->SetBoundingRect(CEikonEnv::Static()->EikAppUi()->ApplicationRect()); |
|
486 } |
471 iCba->MakeVisible(ETrue); |
487 iCba->MakeVisible(ETrue); |
472 iCba->ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront + 10); |
488 iCba->ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront + 10); |
473 } |
489 } |
474 |
490 |
475 TBool CAknFepUIAvkonImpl::UpdateSoftkeyLabelL(TInt aPosition, TInt aCommandId, TInt aTextResId) |
491 TBool CAknFepUIAvkonImpl::UpdateSoftkeyLabelL(TInt aPosition, TInt aCommandId, TInt aTextResId) |
892 } |
908 } |
893 |
909 |
894 #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
910 #endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__ |
895 #endif //RD_INTELLIGENT_TEXT_INPUT |
911 #endif //RD_INTELLIGENT_TEXT_INPUT |
896 |
912 |
|
913 void CAknFepUIAvkonImpl::DeleteCBAL() |
|
914 { |
|
915 if ( iCba ) |
|
916 { |
|
917 delete iCba; |
|
918 iCba = NULL; |
|
919 } |
|
920 |
|
921 if ( isCbaEmded ) |
|
922 { |
|
923 CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi(); |
|
924 if( eikAppUi!= NULL && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl() ) |
|
925 { |
|
926 CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg ); |
|
927 if ( dlg ) |
|
928 { |
|
929 CEikButtonGroupContainer* currentCba = dlg->MopGetObject( currentCba ); |
|
930 CEikCba* dlgcba = static_cast<CEikCba*>( currentCba->ButtonGroup()); |
|
931 if ( currentCba && iDialogCba == currentCba ) |
|
932 { |
|
933 currentCba->RemoveCommandFromStack( ELeftSoftkeyIndex, -1 ); |
|
934 currentCba->RemoveCommandFromStack( ERightSoftkeyIndex, -1 ); |
|
935 |
|
936 currentCba->DrawNow(); |
|
937 currentCba->ActivateL(); |
|
938 iDialogCba = NULL; |
|
939 isCbaEmded = EFalse; |
|
940 } |
|
941 } |
|
942 } |
|
943 } |
|
944 } |
|
945 |
|
946 void CAknFepUIAvkonImpl::CreateInsideCBAL( CEikButtonGroupContainer::TUse aUse, |
|
947 CEikButtonGroupContainer::TOrientation aOrientation, |
|
948 MEikCommandObserver* aCommandObserver, |
|
949 TInt aResourceId ) |
|
950 { |
|
951 CEikAppUi* eikAppUi = (CEikAppUi *)CCoeEnv::Static()->AppUi(); |
|
952 // If current is dialog create inside CBA |
|
953 if ( eikAppUi!= NULL && eikAppUi->IsDisplayingDialog() && eikAppUi->TopFocusedControl()) |
|
954 { |
|
955 CEikDialog* dlg = eikAppUi->TopFocusedControl()->MopGetObject( dlg ); |
|
956 if ( dlg ) |
|
957 { |
|
958 CEikButtonGroupContainer* currentCba = dlg->MopGetObject( currentCba ); |
|
959 CEikCba* dlgcba = static_cast<CEikCba*>( currentCba->ButtonGroup()); |
|
960 if ( currentCba ) |
|
961 { |
|
962 TUint flags( 0 ); |
|
963 flags |= CEikButtonGroupContainer::EIsEmbedded | CEikButtonGroupContainer::EAddToStack; |
|
964 if ( iCba != NULL ) |
|
965 { |
|
966 delete iCba; |
|
967 iCba = NULL; |
|
968 } |
|
969 iCba = CEikButtonGroupContainer::NewL( aUse, aOrientation, |
|
970 aCommandObserver, |
|
971 aResourceId, flags ); |
|
972 |
|
973 CEikCba* cba = static_cast<CEikCba*>( iCba->ButtonGroup()); |
|
974 |
|
975 CEikCba* dlgcba = static_cast<CEikCba*>( currentCba->ButtonGroup()); |
|
976 if( !isCbaEmded ) |
|
977 { |
|
978 currentCba->AddCommandToStackL( ELeftSoftkeyIndex, -1, _L(""), NULL, NULL ); |
|
979 currentCba->AddCommandToStackL( ERightSoftkeyIndex, -1, _L(""), NULL, NULL ); |
|
980 currentCba->ActivateL(); |
|
981 currentCba->DrawNow(); |
|
982 iDialogCba = currentCba; |
|
983 isCbaEmded = ETrue; |
|
984 } |
|
985 |
|
986 cba->SetButtonGroupFlags( ~( EEikCbaFlagTransparent | EEikCbaFlagOutlineFont )); |
|
987 TRect dlgRect( dlg->Rect()); |
|
988 TRect cbaRect( currentCba->Rect()); |
|
989 iCba->SetRect( currentCba->Rect()); |
|
990 iCba->SetPosition( |
|
991 TPoint( dlg->DrawableWindow()->Position().iX,dlg->DrawableWindow()->Position().iY + dlgRect.Height() - cbaRect.Height())); |
|
992 iCba->SetBoundingRect( dlg->Rect()); |
|
993 } |
|
994 } |
|
995 } |
|
996 } |
|
997 |
|
998 //End of File |