81 |
82 |
82 /*! |
83 /*! |
83 * CxuiSettingsInfo::CxuiSettingsInfo |
84 * CxuiSettingsInfo::CxuiSettingsInfo |
84 */ |
85 */ |
85 CxuiSettingsInfo::CxuiSettingsInfo(CxeEngine *engine) |
86 CxuiSettingsInfo::CxuiSettingsInfo(CxeEngine *engine) |
86 : mEngine(engine) |
87 : mMode(-1), mEngine(engine) |
87 { |
88 { |
88 CX_DEBUG_ENTER_FUNCTION(); |
89 CX_DEBUG_ENTER_FUNCTION(); |
89 CX_ASSERT_ALWAYS(engine); |
90 CX_ASSERT_ALWAYS(engine); |
90 |
91 |
91 mXmlReader = new CxuiSettingXmlReader(); |
92 mXmlReader = new CxuiSettingXmlReader(); |
92 |
|
93 // Initialize for the mode already so that the UI |
|
94 // can already use the settings info even if engine isn't ready yet. |
|
95 initForCurrentMode(CxeError::None); |
|
96 |
|
97 // Follow engine mode changes |
|
98 connect(&engine->cameraDeviceControl(), SIGNAL(initModeComplete(CxeError::Id)), |
|
99 this, SLOT(initForCurrentMode(CxeError::Id))); |
|
100 |
|
101 CX_DEBUG_EXIT_FUNCTION(); |
93 CX_DEBUG_EXIT_FUNCTION(); |
102 } |
94 } |
103 |
95 |
104 /*! |
96 /*! |
105 * CxuiSettingsInfo::~CxuiSettingsInfo |
97 * CxuiSettingsInfo::~CxuiSettingsInfo |
122 */ |
114 */ |
123 bool CxuiSettingsInfo::getSettingsContent(const QString &key, |
115 bool CxuiSettingsInfo::getSettingsContent(const QString &key, |
124 RadioButtonListParams &settings) |
116 RadioButtonListParams &settings) |
125 { |
117 { |
126 CX_DEBUG_ENTER_FUNCTION(); |
118 CX_DEBUG_ENTER_FUNCTION(); |
|
119 |
|
120 // Check that right content is loaded. Load now if not. |
|
121 checkMode(); |
127 |
122 |
128 bool found(false); |
123 bool found(false); |
129 |
124 |
130 if (key == CxeSettingIds::IMAGE_QUALITY || |
125 if (key == CxeSettingIds::IMAGE_QUALITY || |
131 key == CxeSettingIds::VIDEO_QUALITY) { |
126 key == CxeSettingIds::VIDEO_QUALITY) { |
207 mEngine->stillCaptureControl().supportedImageQualities(); |
205 mEngine->stillCaptureControl().supportedImageQualities(); |
208 |
206 |
209 int index = 0; |
207 int index = 0; |
210 |
208 |
211 // get the localized possible strings for each image quality setting |
209 // get the localized possible strings for each image quality setting |
212 QString vga = hbTrId("txt_cam_dblist_vga"); |
210 QString vga = "txt_cam_dblist_vga"; |
213 QString normal = hbTrId("txt_cam_dblist_ln_mpix"); |
211 QString normal = "txt_cam_dblist_ln_mpix"; |
214 QString imagesLeft = hbTrId("txt_cam_dblist_hd_720p_val_ln_images_left"); |
212 QString imagesLeft = "txt_cam_dblist_hd_720p_val_ln_images_left"; |
215 QString widescreen = hbTrId("txt_cam_dblist_ln_mpix_widescreen"); |
213 QString widescreen = "txt_cam_dblist_ln_mpix_widescreen"; |
216 |
214 |
217 foreach(CxeImageDetails quality, list) { |
215 foreach(CxeImageDetails quality, list) { |
218 // mapping the right value for each quality |
216 // mapping the right value for each quality |
219 |
217 |
220 QString settingString; |
218 QString settingString; |
221 QString qualityIcon = ""; |
219 QString qualityIcon = ""; |
|
220 qreal pxCount = quality.mMpxCount.toDouble(); |
222 |
221 |
223 if (quality.mWidth == KResVGA.width() && quality.mHeight == KResVGA.height()) { |
222 if (quality.mWidth == KResVGA.width() && quality.mHeight == KResVGA.height()) { |
224 settingString.append(vga); |
223 settingString.append(hbTrId(vga.toAscii().constData())); |
225 settingString.append(" "); |
224 settingString.append(" "); |
226 } |
225 } |
227 |
226 |
228 if (quality.mAspectRatio == Cxe::AspectRatio16to9) { |
227 if (quality.mAspectRatio == Cxe::AspectRatio16to9) { |
229 settingString.append(widescreen.arg(quality.mMpxCount)); |
228 settingString.append(hbTrId(widescreen.toAscii().constData()).arg(pxCount,0,'g',3)); |
230 } else { |
229 } else { |
231 settingString.append(normal.arg(quality.mMpxCount)); |
230 settingString.append(hbTrId(normal.toAscii().constData()).arg(pxCount,0,'g',3)); |
232 } |
231 } |
233 |
232 |
234 settingString.append(","); |
233 settingString.append(NEW_LINE_CHAR); |
235 settingString.append(imagesLeft.arg(quality.mPossibleImages)); |
234 settingString.append(HbParameterLengthLimiter(imagesLeft.toAscii().constData(), quality.mPossibleImages)); |
236 CX_DEBUG(( "Image quality setting string: %s", settingString.toAscii().constData())); |
235 CX_DEBUG(( "Image quality setting string: %s", settingString.toAscii().constData())); |
237 |
236 |
238 if (quality.mMpxCount == "12") { |
237 if (quality.mMpxCount == "12") { |
239 qualityIcon = "qtg_mono_12mp"; |
238 qualityIcon = "qtg_mono_12mp"; |
240 } else if (quality.mMpxCount == "9") { |
239 } else if (quality.mMpxCount == "9") { |
305 quality.mHeight == KResWideVGA.height()) { |
304 quality.mHeight == KResWideVGA.height()) { |
306 settingString.append(wideVga); |
305 settingString.append(wideVga); |
307 qualityIcon = "qtg_mono_vga_wide"; |
306 qualityIcon = "qtg_mono_vga_wide"; |
308 } |
307 } |
309 |
308 |
310 settingString.append(","); |
309 settingString.append(NEW_LINE_CHAR); |
311 time.sprintf("%02d:%02d", quality.mRemainingTime / 60, quality.mRemainingTime % 60); |
310 time.sprintf("%02d:%02d", quality.mRemainingTime / 60, quality.mRemainingTime % 60); |
312 settingString.append(timeleft.arg(time)); |
311 settingString.append(timeleft.arg(time)); |
313 |
312 |
314 |
313 |
315 |
314 |
324 } |
323 } |
325 |
324 |
326 CX_DEBUG_EXIT_FUNCTION(); |
325 CX_DEBUG_EXIT_FUNCTION(); |
327 } |
326 } |
328 |
327 |
329 /** |
328 /*! |
330 * Load new setting content based on the new mode. |
329 * Check that the right content for current mode is loaded. |
331 */ |
330 * |
332 void CxuiSettingsInfo::initForCurrentMode(CxeError::Id status) |
331 * UI gets "settings changed" / "scene changed" events quite |
333 { |
332 * early when switching mode (image / video). We cannot rely |
334 CX_DEBUG_ENTER_FUNCTION(); |
333 * on CxeCameraDeviceControl::initModeComplete signal since |
335 |
334 * that would be coming too late. (We would be using setting XML |
336 if (status == CxeError::None) { |
335 * for the old mode, and setting keys/values/icons would not |
|
336 * be found.) Better check this whenever UI requests for |
|
337 * content for a setting, and reload the XML when needed. |
|
338 * @see CxuiSettingsInfo::getSettingsContent(const QString &, RadioButtonListParams &) |
|
339 * @see CxuiSettingsInfo::getSettingsContent(const QString &, SliderParams &) |
|
340 * @see CxeCameraDeviceControl::initModeComplete(CxeError::Id) |
|
341 */ |
|
342 void CxuiSettingsInfo::checkMode() |
|
343 { |
|
344 CX_DEBUG_ENTER_FUNCTION(); |
|
345 |
|
346 int oldMode = mMode; |
|
347 mMode = mEngine->cameraDeviceControl().mode(); |
|
348 if (mMode != oldMode) { |
337 // Select the setting XML file based on mode. |
349 // Select the setting XML file based on mode. |
338 QString sourceXml(mEngine->cameraDeviceControl().mode() == Cxe::ImageMode |
350 QString sourceXml(mEngine->cameraDeviceControl().mode() == Cxe::ImageMode |
339 ? CxUiSettings::IMAGE_SETTING_MAPPING_FILE |
351 ? CxUiSettings::IMAGE_SETTING_MAPPING_FILE |
340 : CxUiSettings::VIDEO_SETTING_MAPPING_FILE); |
352 : CxUiSettings::VIDEO_SETTING_MAPPING_FILE); |
341 |
353 |
342 mXmlReader->setXmlSource(sourceXml); |
354 mXmlReader->setXmlSource(sourceXml); |
343 } else { |
|
344 // Clear XML reader content on error. |
|
345 mXmlReader->setXmlSource(QString()); |
|
346 } |
355 } |
347 |
356 |
348 CX_DEBUG_EXIT_FUNCTION(); |
357 CX_DEBUG_EXIT_FUNCTION(); |
349 } |
358 } |
350 |
359 |