textinput/peninputgenericitut/src/peninputgenericitutdatamgr.cpp
branchRCL_3
changeset 18 b1ea1642412e
parent 11 c8fb4cf7b3ae
child 19 ac7e4d1d9209
equal deleted inserted replaced
16:857bebeecec0 18:b1ea1642412e
    98     iMenuItemList.ResetAndDestroy();
    98     iMenuItemList.ResetAndDestroy();
    99     
    99     
   100     CCoeEnv::Static()->DeleteResourceFile(iAvkonResId);
   100     CCoeEnv::Static()->DeleteResourceFile(iAvkonResId);
   101         
   101         
   102     CCoeEnv::Static()->DeleteResourceFile(iCommonResId);
   102     CCoeEnv::Static()->DeleteResourceFile(iCommonResId);
   103     
   103 
   104     if (iConfigResId)
   104     // Remove all resource files from control environment
   105         {
   105     for (TInt i=0; i< iConfigResIds.Count(); i++)
   106         CCoeEnv::Static()->DeleteResourceFile(iConfigResId);
   106         {
   107         }
   107         CCoeEnv::Static()->DeleteResourceFile(iConfigResIds[i]);
       
   108         }
       
   109     iConfigResIds.Close();
   108 
   110 
   109     ClearChnCandidates(EItutCandidates);
   111     ClearChnCandidates(EItutCandidates);
   110     ClearChnCandidates(EItutPuncCandidates);
   112     ClearChnCandidates(EItutPuncCandidates);
   111 
   113 
   112     iKeypadCellRects.Close();
   114     iKeypadCellRects.Close();
  1141     }
  1143     }
  1142 
  1144 
  1143 void CGenericItutDataMgr::SetLanguageL(TInt aLanguage)
  1145 void CGenericItutDataMgr::SetLanguageL(TInt aLanguage)
  1144     {    
  1146     {    
  1145     ASSERT( IsValidLanguage( aLanguage ) );
  1147     ASSERT( IsValidLanguage( aLanguage ) );
  1146     	
  1148         
  1147     if (iLanguage != aLanguage)
  1149     if (iLanguage != aLanguage)
  1148         {	        
  1150         {            
  1149         if( IsValidLanguage( iLanguage ) )
  1151         if( IsValidLanguage( iLanguage ) )
  1150         	iIsLangDirectionSwitch =  IsRtoLLanguage( aLanguage ) ^ IsRtoLLanguage( iLanguage );
  1152             iIsLangDirectionSwitch =  IsRtoLLanguage( aLanguage ) ^ IsRtoLLanguage( iLanguage );
  1151         else        
  1153         else        
  1152         	//Check mirroring is needed when first setting language
  1154             //Check mirroring is needed when first setting language
  1153         	iIsLangDirectionSwitch = IsRtoLLanguage( aLanguage );        	
  1155             iIsLangDirectionSwitch = IsRtoLLanguage( aLanguage );            
  1154         
  1156         
  1155         iLanguage = aLanguage;
  1157         iLanguage = aLanguage;
  1156         iInputMode = KInvalidImMode;
  1158         iInputMode = KInvalidImMode;
  1157         
  1159         
  1158         //SetTextAlignment();
  1160         //SetTextAlignment();
  1163             {
  1165             {
  1164             iCurrentScriptIdx = scriptIdx;
  1166             iCurrentScriptIdx = scriptIdx;
  1165 
  1167 
  1166             CCoeEnv* coeEnv = CCoeEnv::Static();
  1168             CCoeEnv* coeEnv = CCoeEnv::Static();
  1167             
  1169             
  1168             if (iConfigResId)
       
  1169                 {
       
  1170                 coeEnv->DeleteResourceFile(iConfigResId);
       
  1171                 }
       
  1172 
       
  1173             TFileName resourceConfigName(iResourceFilename);
  1170             TFileName resourceConfigName(iResourceFilename);
  1174             BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceConfigName);
  1171             BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceConfigName);
  1175             iConfigResId = coeEnv->AddResourceFileL(resourceConfigName);
  1172             // Do not delete resource file from control environment if changing language.
       
  1173             // Otherwise crash happens if switching theme. For example:If writing language
       
  1174             // is Chinese, enters spell mode, then switches theme, crash happens. 
       
  1175             TInt configResId = coeEnv->AddResourceFileL(resourceConfigName);
       
  1176             if ( iConfigResIds.Find(configResId) ==  KErrNotFound)
       
  1177                 {
       
  1178                 iConfigResIds.Append( configResId );
       
  1179                 }
       
  1180             else
       
  1181                 {
       
  1182                 // Remove resource file to ensure the resource file is added only one time.
       
  1183                 coeEnv->DeleteResourceFile( configResId );
       
  1184                 }
  1176             
  1185             
  1177             if (IsChinese())
  1186             if (IsChinese())
  1178                 {
  1187                 {
  1179                 iLayoutContext->UiManager()->CreateChineseSpecificCtrlsIfNeededL();
  1188                 iLayoutContext->UiManager()->CreateChineseSpecificCtrlsIfNeededL();
  1180                 }
  1189                 }
  1181             
  1190             
  1182             if( IsKorean())
  1191             if( IsKorean())
  1183             	{
  1192                 {
  1184                 iLayoutContext->UiManager()->CreateKoreanSpecificCtrlsIfNeededL();
  1193                 iLayoutContext->UiManager()->CreateKoreanSpecificCtrlsIfNeededL();
  1185             	}
  1194                 }
  1186 
  1195 
  1187             NotifyChangeControlLayout(MItutPropertySubscriber::EItutPropertyKeypadResourceId, 
  1196             NotifyChangeControlLayout(MItutPropertySubscriber::EItutPropertyKeypadResourceId, 
  1188                                       KeypadResourceId());  
  1197                                       KeypadResourceId());  
  1189             }
  1198             }
  1190         }
  1199         }
  1925                                          iPtiEngine( aPtiEngine ),
  1934                                          iPtiEngine( aPtiEngine ),
  1926                                          iLanguage(ELangNone),
  1935                                          iLanguage(ELangNone),
  1927                                          iInputMode(KInvalidImMode),
  1936                                          iInputMode(KInvalidImMode),
  1928                                          iCase(EAknEditorUpperCase),
  1937                                          iCase(EAknEditorUpperCase),
  1929                                          iIsChineseSpell( EFalse ),
  1938                                          iIsChineseSpell( EFalse ),
  1930                                          iConfigResId(0),
       
  1931                                          iLayoutContext(aLayoutContext),
  1939                                          iLayoutContext(aLayoutContext),
  1932                                          iCurrentScriptIdx(KInvalidIndex),
  1940                                          iCurrentScriptIdx(KInvalidIndex),
  1933                                          iLandScape(EFalse),
  1941                                          iLandScape(EFalse),
  1934                                          iSpellMode(EFalse)
  1942                                          iSpellMode(EFalse)
  1935     {
  1943     {