fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonImpl.cpp
branchRCL_3
changeset 3 f5a1e66df979
parent 0 eb1f2e154e89
child 6 6ceef9a83b1a
equal deleted inserted replaced
0:eb1f2e154e89 3:f5a1e66df979
   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)
   435             iCba->DrawNow();
   449             iCba->DrawNow();
   436             }
   450             }
   437         }
   451         }
   438     else
   452     else
   439         {
   453         {
   440         delete iCba;
   454         DeleteCBAL();
   441         iCba = NULL;
       
   442         }
   455         }
   443     }
   456     }
   444 
   457 
   445 TBool CAknFepUIAvkonImpl::SoftkeysExist()
   458 TBool CAknFepUIAvkonImpl::SoftkeysExist()
   446 	{
   459 	{
   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