121 mSelfTimer = new CxuiSelfTimer(mEngine->settings()); |
123 mSelfTimer = new CxuiSelfTimer(mEngine->settings()); |
122 connect(mSelfTimer, SIGNAL(timerFinished()), this, SLOT(focusAndCapture())); |
124 connect(mSelfTimer, SIGNAL(timerFinished()), this, SLOT(focusAndCapture())); |
123 |
125 |
124 int value = Cxe::GeoTaggingDisclaimerDisabled; |
126 int value = Cxe::GeoTaggingDisclaimerDisabled; |
125 mEngine->settings().get(CxeSettingIds::GEOTAGGING_DISCLAIMER, value); |
127 mEngine->settings().get(CxeSettingIds::GEOTAGGING_DISCLAIMER, value); |
126 if(value == Cxe::GeoTaggingDisclaimerEnabled) { |
128 if (value == Cxe::GeoTaggingDisclaimerEnabled) { |
127 launchGeoTaggingDisclaimerDialog(); |
129 launchGeoTaggingDisclaimerDialog(); |
128 } |
130 } |
129 |
131 |
130 OstTrace0( camerax_performance, DUP1_CXUISTILLPRECAPTUREVIEW_CONSTRUCT, "msg: e_CX_STILLPRECAPVIEW_CONSTRUCT 0" ); |
132 OstTrace0( camerax_performance, DUP1_CXUISTILLPRECAPTUREVIEW_CONSTRUCT, "msg: e_CX_STILLPRECAPVIEW_CONSTRUCT 0" ); |
131 CX_DEBUG_EXIT_FUNCTION(); |
133 CX_DEBUG_EXIT_FUNCTION(); |
135 * Loads default widgets in layouts xml. |
137 * Loads default widgets in layouts xml. |
136 */ |
138 */ |
137 void CxuiStillPrecaptureView::loadDefaultWidgets() |
139 void CxuiStillPrecaptureView::loadDefaultWidgets() |
138 { |
140 { |
139 CX_DEBUG_ENTER_FUNCTION(); |
141 CX_DEBUG_ENTER_FUNCTION(); |
140 CX_DEBUG_ASSERT(mDocumentLoader); |
142 CX_ASSERT_ALWAYS(mDocumentLoader); |
141 |
143 |
142 // get pointer to the viewfinder |
144 // get pointer to the viewfinder |
143 QGraphicsWidget *widget = NULL; |
145 QGraphicsWidget *widget = NULL; |
144 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_VIEWFINDER); |
146 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_VIEWFINDER); |
145 mViewfinder = qobject_cast<HbTransparentWindow *>(widget); |
147 mViewfinder = qobject_cast<HbTransparentWindow *>(widget); |
146 CX_DEBUG_ASSERT(mViewfinder); |
148 CX_ASSERT_ALWAYS(mViewfinder); |
147 |
149 |
|
150 reloadIndicatorWidgets(); |
|
151 CX_DEBUG_EXIT_FUNCTION(); |
|
152 } |
|
153 |
|
154 /*! |
|
155 * Loads default indicators from docml and modifies the visibility |
|
156 * according to current settings. |
|
157 */ |
|
158 void CxuiStillPrecaptureView::reloadIndicatorWidgets() |
|
159 { |
|
160 CX_DEBUG_ENTER_FUNCTION(); |
|
161 CX_ASSERT_ALWAYS(mDocumentLoader); |
|
162 |
|
163 bool ok = false; |
|
164 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_INDICATORS_SECTION, &ok); |
|
165 CX_ASSERT_ALWAYS(ok); |
|
166 |
|
167 QGraphicsWidget *widget = NULL; |
148 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_QUALITY_ICON); |
168 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_QUALITY_ICON); |
149 mQualityIcon = qobject_cast<HbLabel *>(widget); |
169 mQualityIcon = qobject_cast<HbLabel *>(widget); |
150 CX_DEBUG_ASSERT(mQualityIcon); |
170 CX_ASSERT_ALWAYS(mQualityIcon); |
|
171 |
|
172 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_FLASHBLINK_INDICATOR_ICON); |
|
173 HbLabel *flashBlinkingIcon = qobject_cast<HbLabel *>(widget); |
|
174 CX_ASSERT_ALWAYS(flashBlinkingIcon); |
151 |
175 |
152 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_GEOTAGGING_INDICATOR_ICON); |
176 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_GEOTAGGING_INDICATOR_ICON); |
153 mGeoTaggingIndicatorIcon = qobject_cast<HbLabel *>(widget); |
177 mGeoTaggingIndicatorIcon = qobject_cast<HbLabel *>(widget); |
154 CX_DEBUG_ASSERT(mGeoTaggingIndicatorIcon); |
178 CX_ASSERT_ALWAYS(mGeoTaggingIndicatorIcon); |
155 |
179 |
156 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_FACE_TRACKING_ICON); |
180 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_FACE_TRACKING_ICON); |
157 mFaceTrackingIcon = qobject_cast<HbLabel *>(widget); |
181 mFaceTrackingIcon = qobject_cast<HbLabel *>(widget); |
158 CX_DEBUG_ASSERT(mFaceTrackingIcon); |
182 CX_ASSERT_ALWAYS(mFaceTrackingIcon); |
159 |
183 |
160 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_INDICATOR_CONTAINER); |
184 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_INDICATOR_CONTAINER); |
161 mIndicators = qobject_cast<HbWidget *>(widget); |
185 mIndicators = qobject_cast<HbWidget *>(widget); |
162 CX_DEBUG_ASSERT(mIndicators); |
186 CX_ASSERT_ALWAYS(mIndicators); |
|
187 |
|
188 QGraphicsLayout *layout = mIndicators->layout(); |
|
189 QGraphicsLayoutItem *graphicsLayoutItem = NULL; |
|
190 QGraphicsItem *graphicsItem = NULL; |
|
191 QString key = ""; |
|
192 int currentSettingValue = -1; |
|
193 bool isSettingOff = false; |
|
194 // Go through the items in the layout to check whether they should be |
|
195 // shown or not in the indicator pane. Start from the last towards |
|
196 // the first, so that removing items from between works correctly. |
|
197 for (int i = layout->count() - 1; i >= 0; i--) { |
|
198 graphicsLayoutItem = layout->itemAt(i); |
|
199 isSettingOff = false; |
|
200 if (graphicsLayoutItem) { |
|
201 graphicsItem = graphicsLayoutItem->graphicsItem(); |
|
202 currentSettingValue = -1; |
|
203 if (graphicsItem == mGeoTaggingIndicatorIcon) { |
|
204 key = CxeSettingIds::GEOTAGGING; |
|
205 mEngine->settings().get(key, currentSettingValue); |
|
206 if (currentSettingValue == Cxe::GeoTaggingOff) { |
|
207 isSettingOff = true; |
|
208 } |
|
209 } else if (graphicsItem == mFaceTrackingIcon) { |
|
210 key = CxeSettingIds::FACE_TRACKING; |
|
211 mEngine->settings().get(key, currentSettingValue); |
|
212 // facetracking implementation does not use |
|
213 // enum for on/off values but instead |
|
214 // 0 for off and 1 for on. |
|
215 if (currentSettingValue == 0) { |
|
216 isSettingOff = true; |
|
217 } |
|
218 } else if (graphicsItem == flashBlinkingIcon) { |
|
219 //remove flash indicator |
|
220 isSettingOff = true; |
|
221 } |
|
222 if (isSettingOff) { |
|
223 layout->removeAt(i); |
|
224 } |
|
225 } |
|
226 } |
|
227 |
163 // create background for indicator container |
228 // create background for indicator container |
164 createWidgetBackgroundGraphic(mIndicators, TRANSPARENT_BACKGROUND_GRAPHIC); |
229 createWidgetBackgroundGraphic(mIndicators, TRANSPARENT_BACKGROUND_GRAPHIC); |
|
230 |
|
231 mIndicators->setVisible(true); |
165 |
232 |
166 CX_DEBUG_EXIT_FUNCTION(); |
233 CX_DEBUG_EXIT_FUNCTION(); |
167 } |
234 } |
168 |
235 |
169 /*! |
236 /*! |
185 |
252 |
186 bool ok = false; |
253 bool ok = false; |
187 |
254 |
188 OstTrace0( camerax_performance, DUP4_CXUISTILLPRECAPTUREVIEW_LOADWIDGETS, "msg: e_CX_DOCUMENTLOADER_LOAD 1" ); |
255 OstTrace0( camerax_performance, DUP4_CXUISTILLPRECAPTUREVIEW_LOADWIDGETS, "msg: e_CX_DOCUMENTLOADER_LOAD 1" ); |
189 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_WIDGETS_SECTION, &ok); |
256 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_WIDGETS_SECTION, &ok); |
190 Q_ASSERT_X(ok, "camerax ui", "error in xml file parsing"); |
257 CX_ASSERT_ALWAYS(ok); |
191 if (CxuiServiceProvider::isCameraEmbedded()) { |
258 if (CxuiServiceProvider::isCameraEmbedded()) { |
192 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_EMBEDDED_SECTION, &ok); |
259 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_EMBEDDED_SECTION, &ok); |
193 } else { |
260 } else { |
194 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_STANDALONE_SECTION, &ok); |
261 mDocumentLoader->load(STILL_1ST_XML, STILL_PRE_CAPTURE_STANDALONE_SECTION, &ok); |
195 } |
262 } |
196 OstTrace0( camerax_performance, DUP5_CXUISTILLPRECAPTUREVIEW_LOADWIDGETS, "msg: e_CX_DOCUMENTLOADER_LOAD 0" ); |
263 OstTrace0( camerax_performance, DUP5_CXUISTILLPRECAPTUREVIEW_LOADWIDGETS, "msg: e_CX_DOCUMENTLOADER_LOAD 0" ); |
197 Q_ASSERT_X(ok, "camerax ui", "error in xml file parsing"); |
264 CX_ASSERT_ALWAYS(ok); |
198 |
265 |
199 // get pointers to ui components from the layout data |
266 // get pointers to ui components from the layout data |
200 QGraphicsWidget *widget = NULL; |
267 QGraphicsWidget *widget = NULL; |
201 QObject *object = NULL; |
268 QObject *object = NULL; |
202 |
269 |
203 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_ZOOM_SLIDER); |
270 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_ZOOM_SLIDER); |
204 mSlider = qobject_cast<CxuiZoomSlider *>(widget); |
271 mSlider = qobject_cast<CxuiZoomSlider *>(widget); |
205 CX_DEBUG_ASSERT(mSlider); |
272 CX_ASSERT_ALWAYS(mSlider); |
206 mSlider->addZoomButtons(); |
273 mSlider->addZoomButtons(); |
207 createWidgetBackgroundGraphic(mSlider, TRANSPARENT_BACKGROUND_GRAPHIC); |
274 createWidgetBackgroundGraphic(mSlider, TRANSPARENT_BACKGROUND_GRAPHIC); |
208 |
275 |
209 if (mSelfTimer) { |
276 if (mSelfTimer) { |
210 // let selftimer class get needed selftimer related widgets |
277 // let selftimer class get needed selftimer related widgets |
214 |
281 |
215 // create background for selftimer containers |
282 // create background for selftimer containers |
216 HbWidget *container = NULL; |
283 HbWidget *container = NULL; |
217 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_CONTAINER); |
284 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_CONTAINER); |
218 container = qobject_cast<HbWidget *>(widget); |
285 container = qobject_cast<HbWidget *>(widget); |
219 CX_DEBUG_ASSERT(container); |
286 CX_ASSERT_ALWAYS(container); |
220 createWidgetBackgroundGraphic(container, TRANSPARENT_BACKGROUND_GRAPHIC); |
287 createWidgetBackgroundGraphic(container, TRANSPARENT_BACKGROUND_GRAPHIC); |
221 |
288 |
222 // connect selftimer start button to hide controls |
289 // connect selftimer start button to hide controls |
223 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_START_BUTTON); |
290 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_SELFTIMER_START_BUTTON); |
224 HbPushButton *startButton = qobject_cast<HbPushButton *>(widget); |
291 HbPushButton *startButton = qobject_cast<HbPushButton *>(widget); |
225 CX_DEBUG_ASSERT(startButton); |
292 CX_ASSERT_ALWAYS(startButton); |
226 connect(startButton, SIGNAL(released()), this, SLOT(hideControls())); |
293 connect(startButton, SIGNAL(released()), this, SLOT(hideControls())); |
227 |
294 |
228 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_TOOLBAR); |
295 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_TOOLBAR); |
229 mToolbar = qobject_cast<HbToolBar *>(widget); |
296 mToolbar = qobject_cast<HbToolBar *>(widget); |
230 CX_DEBUG_ASSERT(mToolbar); |
297 CX_ASSERT_ALWAYS(mToolbar); |
231 |
298 |
232 object = mDocumentLoader->findObject(STILL_PRE_CAPTURE_FLASH_ACTION); |
299 object = mDocumentLoader->findObject(STILL_PRE_CAPTURE_FLASH_ACTION); |
233 mFlashSetting = qobject_cast<HbAction *>(object); |
300 mFlashSetting = qobject_cast<HbAction *>(object); |
234 CX_DEBUG_ASSERT(mFlashSetting); |
301 CX_ASSERT_ALWAYS(mFlashSetting); |
235 |
302 |
236 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_IMAGES_LEFT_LABEL); |
303 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_IMAGES_LEFT_LABEL); |
237 mImagesLeft = qobject_cast<HbLabel *>(widget); |
304 mImagesLeft = qobject_cast<HbLabel *>(widget); |
238 CX_DEBUG_ASSERT(mImagesLeft); |
305 CX_ASSERT_ALWAYS(mImagesLeft); |
239 |
306 |
240 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_IMAGES_LEFT_CONTAINER); |
307 widget = mDocumentLoader->findWidget(STILL_PRE_CAPTURE_IMAGES_LEFT_CONTAINER); |
241 mImagesLeftContainer = qobject_cast<HbWidget *>(widget); |
308 mImagesLeftContainer = qobject_cast<HbWidget *>(widget); |
242 CX_DEBUG_ASSERT(mImagesLeftContainer); |
309 CX_ASSERT_ALWAYS(mImagesLeftContainer); |
243 createWidgetBackgroundGraphic(mImagesLeftContainer, TRANSPARENT_BACKGROUND_GRAPHIC); |
310 createWidgetBackgroundGraphic(mImagesLeftContainer, TRANSPARENT_BACKGROUND_GRAPHIC); |
244 updateImagesLeftLabel(); |
311 updateImagesLeftLabel(); |
245 |
312 |
246 if (CxuiServiceProvider::isCameraEmbedded()) { |
313 if (CxuiServiceProvider::isCameraEmbedded()) { |
247 CX_DEBUG(("EMBEDDED: camera in embedded mode")); |
314 CX_DEBUG(("EMBEDDED: camera in embedded mode")); |
858 // update the quality indicator on screen |
925 // update the quality indicator on screen |
859 updateQualityIcon(); |
926 updateQualityIcon(); |
860 // update images left when quality values are changed |
927 // update images left when quality values are changed |
861 updateImagesLeftLabel(); |
928 updateImagesLeftLabel(); |
862 } else if (key == CxeSettingIds::FACE_TRACKING) { |
929 } else if (key == CxeSettingIds::FACE_TRACKING) { |
|
930 reloadIndicatorWidgets(); |
863 updateFaceTrackingIcon(); |
931 updateFaceTrackingIcon(); |
|
932 } else if (key == CxeSettingIds::GEOTAGGING) { |
|
933 reloadIndicatorWidgets(); |
864 } |
934 } |
865 |
935 |
866 // update toolbar flash icon |
936 // update toolbar flash icon |
867 if (mFlashSetting && key == CxeSettingIds::FLASH_MODE) { |
937 if (mFlashSetting && key == CxeSettingIds::FLASH_MODE) { |
868 CX_DEBUG((("flash mode: %d"), newValue.toInt())); |
938 CX_DEBUG((("flash mode: %d"), newValue.toInt())); |