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 { |