100 // ----------------------------------------------------------------------------- |
86 // ----------------------------------------------------------------------------- |
101 // CCalenLunarLocalizer::ConstructL |
87 // CCalenLunarLocalizer::ConstructL |
102 // ----------------------------------------------------------------------------- |
88 // ----------------------------------------------------------------------------- |
103 // |
89 // |
104 EXPORT_C void CCalenLunarLocalizer::ConstructL() |
90 EXPORT_C void CCalenLunarLocalizer::ConstructL() |
105 { |
91 { |
106 TRACE_ENTRY_POINT; |
92 iRowFormatter = CCalenExtraRowFormatter::NewL(); |
107 |
93 |
108 iRowFormatter = CCalenExtraRowFormatter::NewL(); |
94 iFestivalNames.append(hbTrId("txt_calendar_preview_title_spring_fest")); |
109 |
95 iFestivalNames.append(hbTrId("txt_calendar_preview_title_lantern_fest")); |
110 TFileName dllName; |
96 iFestivalNames.append(hbTrId("txt_calendar_preview_title_dragon_fest")); |
111 // Get the complate path of the DLL from where it is currently loaded |
97 iFestivalNames.append(hbTrId("txt_calendar_preview_title_seventh_night_fest")); |
112 Dll::FileName( dllName ); |
98 iFestivalNames.append(hbTrId("txt_calendar_preview_title_ghost_fest")); |
113 |
99 iFestivalNames.append(hbTrId("txt_calendar_preview_title_mid_autumn_fest")); |
114 TFileName resourceFilename; |
100 iFestivalNames.append(hbTrId("txt_calendar_preview_title_double_fest")); |
115 resourceFilename.Append(dllName.Mid(0,2)); |
101 iFestivalNames.append(hbTrId("txt_calendar_preview_title_eigth_day_fest")); |
116 resourceFilename.Append(KResourcePath); |
102 iFestivalNames.append(hbTrId("txt_calendar_preview_title_new_year_fest")); |
117 resourceFilename.Append(KResourceChinesePluginFile); |
103 |
118 BaflUtils::NearestLanguageFile( CEikonEnv::Static()->FsSession(), resourceFilename ); |
104 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_chun")); |
119 // Add the resource file. |
105 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_yu_shui")); |
120 iResourceFileOffset = CEikonEnv::Static()->AddResourceFileL( resourceFilename ); |
106 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_jing_zhe")); |
121 |
107 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_chun_fen")); |
122 iFestivalNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_FESTIVALS); |
108 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_qing_ming")); |
123 iSolarTermNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_SOLAR_ITEMS); |
109 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_gu_yu")); |
124 iHeavenlyStemNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_HEAV_STEMS); |
110 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_xia")); |
125 iTerrestialBranchNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_TERR_BRANCHES); |
111 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_man")); |
126 iAnimalYearNames = iEikEnv->ReadDesCArrayResourceL(R_CALEN_CHI_ANIMAL_YEARS); |
112 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_mang_zhong")); |
127 |
113 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xia_zhi")); |
128 iGregorianDateFormat = StringLoader::LoadL(R_QTN_DATE_USUAL_WITH_ZERO); |
114 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_shu")); |
129 |
115 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_shu")); |
130 |
116 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_qiu")); |
131 TRACE_EXIT_POINT; |
117 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_chu_shu")); |
132 } |
118 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_bai_lu")); |
|
119 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_qiu_fen")); |
|
120 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_han_lu")); |
|
121 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_shaung_jiang")); |
|
122 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_li_dong")); |
|
123 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_xue")); |
|
124 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_xue")); |
|
125 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_dong_zhi")); |
|
126 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_xiao_han")); |
|
127 iSolarTermNames.append(hbTrId("txt_calendar_preview_title_da_han")); |
|
128 |
|
129 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_jia")); |
|
130 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_yi")); |
|
131 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_bing")); |
|
132 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_ding")); |
|
133 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_wu")); |
|
134 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_ji")); |
|
135 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_geng")); |
|
136 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_xing")); |
|
137 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_reng")); |
|
138 iHeavenlyStemNames.append(hbTrId("txt_calendar_preview_title_gui")); |
|
139 |
|
140 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_zi")); |
|
141 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_chou")); |
|
142 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_yin")); |
|
143 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_mao")); |
|
144 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_chen")); |
|
145 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_si")); |
|
146 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_wu")); |
|
147 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_wei")); |
|
148 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_shen")); |
|
149 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_you")); |
|
150 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_xu")); |
|
151 iTerrestialBranchNames.append(hbTrId("txt_calendar_preview_title_tbranch_hai")); |
|
152 |
|
153 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rat")); |
|
154 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_ox")); |
|
155 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_tiger")); |
|
156 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rabbit")); |
|
157 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dragon")); |
|
158 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_snake")); |
|
159 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_horse")); |
|
160 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_sheep")); |
|
161 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_monkey")); |
|
162 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_rooster")); |
|
163 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_dog")); |
|
164 iAnimalYearNames.append(hbTrId("txt_calendar_preview_title_year_of_the_pig")); |
|
165 |
|
166 } |
133 |
167 |
134 // ----------------------------------------------------------------------------- |
168 // ----------------------------------------------------------------------------- |
135 // CCalenLunarLocalizer::LocalizeL |
169 // CCalenLunarLocalizer::LocalizeL |
136 // ----------------------------------------------------------------------------- |
170 // ----------------------------------------------------------------------------- |
137 // |
171 // |
138 EXPORT_C CCalenLunarLocalizedInfo* CCalenLunarLocalizer::LocalizeL( TCalenLunarInfo& aInfo ) |
172 EXPORT_C CCalenLunarLocalizedInfo* CCalenLunarLocalizer::LocalizeL( TCalenLunarInfo& aInfo ) |
139 { |
173 { |
140 TRACE_ENTRY_POINT; |
174 CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL(); |
141 |
175 CleanupStack::PushL( localized ); |
142 |
176 |
143 CCalenLunarLocalizedInfo* localized = CCalenLunarLocalizedInfo::NewL(); |
177 |
144 CleanupStack::PushL( localized ); |
178 if ( aInfo.HasFestival() ) |
145 |
179 { |
146 if ( aInfo.HasFestival() ) |
180 QString festival = iFestivalNames.at(aInfo.iFestival); |
147 { |
181 localized->iFestival.Set( static_cast<const TUint16*>(festival.utf16()),festival.length()); |
148 localized->iFestival.Set( iFestivalNames->MdcaPoint( aInfo.iFestival ) ); |
182 } |
149 } |
183 |
150 |
184 if ( aInfo.HasSolarTerm() ) |
151 if ( aInfo.HasSolarTerm() ) |
185 { |
152 { |
186 QString solarTerm = iSolarTermNames.at(aInfo.iSolarTerm); |
153 localized->iSolarTerm.Set( iSolarTermNames->MdcaPoint( aInfo.iSolarTerm ) ); |
187 localized->iSolarTerm.Set( static_cast<const TUint16*>(solarTerm.utf16()),solarTerm.length()); |
154 } |
188 } |
155 |
189 |
156 // Animal year |
190 // Animal year |
157 localized->iAnimalYear.Set( iAnimalYearNames->MdcaPoint( aInfo.AnimalYear() ) ); |
191 QString animalYear = iAnimalYearNames.at(aInfo.AnimalYear()); |
158 |
192 localized->iAnimalYear.Set( static_cast<const TUint16*>(animalYear.utf16()),animalYear.length()); |
159 |
193 |
160 // Lunar year |
194 // Lunar year |
161 CPtrCArray* yearSubs = new (ELeave) CPtrCArray(2); |
195 QString heavenlyStemNames = iHeavenlyStemNames.at(aInfo.iHeavenlyStem); |
162 CleanupStack::PushL( yearSubs ); |
196 QString terrestialBranchNames = iTerrestialBranchNames.at(aInfo.iTerrestialBranch); |
163 yearSubs->AppendL( iHeavenlyStemNames->MdcaPoint( aInfo.iHeavenlyStem ) ); |
197 QString lunarYear = hbTrId("txt_calendar_info_lunar_year").arg(heavenlyStemNames).arg(terrestialBranchNames); |
164 yearSubs->AppendL( iTerrestialBranchNames->MdcaPoint( aInfo.iTerrestialBranch ) ); |
198 localized->iLunarYear = static_cast<const TUint16*> (lunarYear.utf16()), lunarYear.length(); |
165 |
199 |
166 HBufC* tmp = StringLoader::LoadLC( R_CALE_LUNAR_YEAR, *yearSubs); |
200 LocalizeMonthAndDayL(localized, aInfo); |
167 RDebug::Print( *tmp ); |
201 |
168 localized->iLunarYear = *tmp; |
202 QString monthAndDay = QString::fromUtf16(localized->LunarMonthAndDay().Ptr(),localized->LunarMonthAndDay().Length()); |
169 CleanupStack::PopAndDestroy( tmp ); |
203 QString yearString = QString::fromUtf16(localized->LunarYear().Ptr(),localized->LunarYear().Length()); |
170 CleanupStack::PopAndDestroy( yearSubs ); |
204 QString fullLunarDate = hbTrId("txt_calendar_info_lunar_full_date").arg(monthAndDay).arg(yearString); |
171 |
205 |
172 RDebug::Print( localized->iLunarYear ); |
206 localized->iFullLunarDate = static_cast<const TUint16*> (fullLunarDate.utf16()), fullLunarDate.length(); |
173 |
207 |
174 LocalizeMonthAndDayL(localized, aInfo); |
208 QString format(r_qtn_date_usual_with_zero); |
175 |
209 TBuf<100> gregFormatBuf; |
176 // Full lunar date |
210 gregFormatBuf = static_cast<const TUint16*> (format.utf16()), format.length(); |
177 CPtrCArray* subs = new (ELeave) CPtrCArray(2); |
211 |
178 CleanupStack::PushL( subs ); |
212 aInfo.iGregorianDate.FormatL( localized->iGregorianDate, gregFormatBuf ); |
179 subs->AppendL( localized->LunarMonthAndDay() ); |
213 |
180 subs->AppendL( localized->LunarYear() ); |
214 CleanupStack::Pop( localized ); |
181 |
215 |
182 tmp = StringLoader::LoadLC( R_CALE_LUNAR_FULL_DATE, *subs ); |
216 return localized; |
183 localized->iFullLunarDate = *tmp; |
217 } |
184 CleanupStack::PopAndDestroy( tmp ); |
|
185 CleanupStack::PopAndDestroy( subs ); |
|
186 |
|
187 |
|
188 aInfo.iGregorianDate.FormatL( localized->iGregorianDate, |
|
189 *iGregorianDateFormat ); |
|
190 CleanupStack::Pop( localized ); |
|
191 |
|
192 |
|
193 |
|
194 TRACE_EXIT_POINT; |
|
195 return localized; |
|
196 } |
|
197 |
218 |
198 |
219 |
199 // ----------------------------------------------------------------------------- |
220 // ----------------------------------------------------------------------------- |
200 // CCalenLunarLocalizer::GetExtraRowTextL |
221 // CCalenLunarLocalizer::GetExtraRowTextL |
201 // ----------------------------------------------------------------------------- |
222 // ----------------------------------------------------------------------------- |
225 // CCalenLunarLocalizer::LocalizeMonthAndDayL |
246 // CCalenLunarLocalizer::LocalizeMonthAndDayL |
226 // ----------------------------------------------------------------------------- |
247 // ----------------------------------------------------------------------------- |
227 // |
248 // |
228 void CCalenLunarLocalizer::LocalizeMonthAndDayL(CCalenLunarLocalizedInfo* aLocInfo, |
249 void CCalenLunarLocalizer::LocalizeMonthAndDayL(CCalenLunarLocalizedInfo* aLocInfo, |
229 TCalenLunarInfo& aInfo) |
250 TCalenLunarInfo& aInfo) |
230 { |
251 { |
231 // Lunar Month and Day |
252 TBuf<10> month; |
232 TInt dateResource = aInfo.iLunarDate.iLeapMonth ? R_CALE_LUNAR_LEAP_DATE : R_CALE_LUNAR_DATE; |
253 TBuf<10> day; |
233 TBuf<10> month; |
254 GetChineseMonth(aInfo.iLunarDate, month); |
234 TBuf<10> day; |
255 GetChineseDay(aInfo.iLunarDate, day); |
235 GetChineseMonth(aInfo.iLunarDate, month); |
256 |
236 GetChineseDay(aInfo.iLunarDate, day); |
257 QString formattedString; |
237 |
258 if(aInfo.iLunarDate.iLeapMonth) { |
238 CPtrCArray* monthAndDaySubs = new (ELeave) CPtrCArray(2); |
259 formattedString = hbTrId( |
239 CleanupStack::PushL( monthAndDaySubs ); |
260 "txt_calendar_info_lunar_leap_date").arg( |
240 monthAndDaySubs->AppendL(month); |
261 QString((QChar*)month.Ptr(),month.Length())).arg( |
241 monthAndDaySubs->AppendL(day); |
262 QString((QChar*)day.Ptr(),day.Length())); |
242 |
263 }else { |
243 HBufC* tmp = StringLoader::LoadLC( dateResource, *monthAndDaySubs ); |
264 formattedString = hbTrId( |
244 aLocInfo->iLunarMonthAndDay = *tmp; |
265 "txt_calendar_info_lunar_date").arg( |
245 CleanupStack::PopAndDestroy( tmp ); |
266 QString((QChar*)month.Ptr(),month.Length())).arg( |
246 CleanupStack::PopAndDestroy( monthAndDaySubs ); |
267 QString((QChar*)day.Ptr(),day.Length())); |
247 } |
268 } |
|
269 aLocInfo->iLunarMonthAndDay = static_cast<const TUint16*> ( |
|
270 formattedString.utf16()), formattedString.length(); |
|
271 } |
248 |
272 |
249 // ----------------------------------------------------------------------------- |
273 // ----------------------------------------------------------------------------- |
250 // CCalenLunarLocalizer::GetChineseMonth |
274 // CCalenLunarLocalizer::GetChineseMonth |
251 // ----------------------------------------------------------------------------- |
275 // ----------------------------------------------------------------------------- |
252 // |
276 // |