91 HSMENUTEST_FUNC_ENTRY("HsPreviewHSWidgetState::onEntry"); |
93 HSMENUTEST_FUNC_ENTRY("HsPreviewHSWidgetState::onEntry"); |
92 HsMenuBaseState::onEntry(event); |
94 HsMenuBaseState::onEntry(event); |
93 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
95 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
94 QVariantMap data = menuEvent->data(); |
96 QVariantMap data = menuEvent->data(); |
95 |
97 |
96 const int entryId = data.value(itemIdKey()).toInt(); |
98 mEntryId = data.value(itemIdKey()).toInt(); |
97 |
99 |
98 QVariantHash widgetData; |
100 QVariantHash widgetData; |
99 widgetData.insert(LIBRARY, data.value(widgetLibraryAttributeName()).toString()); |
101 widgetData.insert(LIBRARY, data.value(widgetLibraryAttributeName()).toString()); |
100 widgetData.insert(URI, data.value(widgetUriAttributeName()).toString()); |
102 widgetData.insert(URI, data.value(widgetUriAttributeName()).toString()); |
101 QScopedPointer<HsWidgetHost> widget( |
103 |
102 contentService()->createWidgetForPreview(widgetData)); |
104 QScopedPointer<HsWidgetHost> widget(contentService()->createWidgetForPreview(widgetData)); |
103 |
105 |
104 if (widget) { |
106 if (widget) { |
105 widget->setMinimumSize(widget->preferredWidth(),widget->preferredHeight()); |
107 widget->setMinimumSize(widget->preferredWidth(),widget->preferredHeight()); |
106 |
108 |
107 HbDocumentLoader loader; |
109 HbDocumentLoader loader; |
114 "Error while loading docml file."); |
116 "Error while loading docml file."); |
115 |
117 |
116 mPopupDialog = |
118 mPopupDialog = |
117 qobject_cast<HbDialog*>( |
119 qobject_cast<HbDialog*>( |
118 loader.findWidget(HS_WIDGET_PREVIEW_DIALOG_NAME)); |
120 loader.findWidget(HS_WIDGET_PREVIEW_DIALOG_NAME)); |
119 |
121 |
120 HbScrollArea *const scrollArea( |
122 mScrollArea = |
121 qobject_cast<HbScrollArea*>( |
123 qobject_cast<HbScrollArea*>( |
122 loader.findWidget(HS_WIDGET_PREVIEW_SCROLL_AREA_NAME))); |
124 loader.findWidget(HS_WIDGET_PREVIEW_SCROLL_AREA_NAME)); |
123 |
125 |
124 if (mPopupDialog != NULL && scrollArea != NULL) { |
126 // set parent to actions to delete them together with dialog |
125 mPopupDialog->setContentWidget(scrollArea); //ownership transferred |
127 mPopupDialog->primaryAction()->setParent(mPopupDialog); |
|
128 mPopupDialog->secondaryAction()->setParent(mPopupDialog); |
|
129 |
|
130 if (mPopupDialog != NULL && mScrollArea != NULL) { |
|
131 mPopupDialog->setContentWidget(mScrollArea); // ownership transferred |
126 mPopupDialog->setTimeout(HbPopup::NoTimeout); |
132 mPopupDialog->setTimeout(HbPopup::NoTimeout); |
127 scrollArea->verticalScrollBar()->setInteractive(true); |
133 mPopupDialog->setAttribute(Qt::WA_DeleteOnClose, true); |
128 scrollArea->horizontalScrollBar()->setInteractive(true); |
134 mScrollArea->verticalScrollBar()->setInteractive(true); |
129 scrollArea->setContentWidget(widget.data()); |
135 mScrollArea->horizontalScrollBar()->setInteractive(true); |
130 scrollArea->takeContentWidget(); |
136 mWidget = widget.take(); // ownership transfered |
|
137 mScrollArea->setContentWidget(mWidget); // ownership transferred |
131 |
138 |
132 subscribeForMemoryCardRemove(entryId); |
139 subscribeForMemoryCardRemove(); |
133 widget->initializeWidget(); |
140 mWidget->initializeWidget(); |
134 widget->showWidget(); |
141 mWidget->showWidget(); |
135 // Launch popup syncronously |
142 // Launch popup asyncronously |
136 const HbAction *const action(mPopupDialog->exec()); |
143 mPopupDialog->open(this, SLOT(previewDialogFinished(HbAction*))); |
137 |
|
138 disconnect(mNotifier, |
|
139 SIGNAL(entryChanged(CaEntry,ChangeType)), |
|
140 this, SLOT(memoryCardRemoved())); |
|
141 |
|
142 if (action == mPopupDialog->primaryAction()) { |
|
143 widget->hideWidget(); |
|
144 HsScene::instance()->activePage()->addNewWidget( |
|
145 widget.take()); // ownership transferred |
|
146 } else { |
|
147 widget->uninitializeWidget(); |
|
148 widget->deleteFromDatabase(); |
|
149 } |
|
150 } |
144 } |
151 |
145 |
152 } else { |
146 } else { |
153 showMessageWidgetCorrupted(entryId); |
147 showMessageWidgetCorrupted(); |
154 } |
148 } |
155 |
149 |
156 HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::onEntry"); |
150 HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::onEntry"); |
157 } |
151 } |
158 #ifdef COVERAGE_MEASUREMENT |
152 #ifdef COVERAGE_MEASUREMENT |
159 #pragma CTC ENDSKIP |
153 #pragma CTC ENDSKIP |
160 #endif //COVERAGE_MEASUREMENT |
154 #endif //COVERAGE_MEASUREMENT |
161 |
155 |
162 /*! |
|
163 State exited. |
|
164 \retval void |
|
165 */ |
|
166 void HsPreviewHSWidgetState::stateExited() |
|
167 { |
|
168 HSMENUTEST_FUNC_ENTRY("HsPreviewHSWidgetState::stateExited"); |
|
169 |
|
170 |
|
171 delete mNotifier; |
|
172 mNotifier = NULL; |
|
173 |
|
174 qDeleteAll(mObjectList); |
|
175 mObjectList.clear(); |
|
176 |
|
177 mPopupDialog = NULL; |
|
178 |
|
179 HSMENUTEST_FUNC_EXIT("HsPreviewHSWidgetState::stateExited"); |
|
180 qDebug("HsPreviewHSWidgetState::stateExited()"); |
|
181 } |
|
182 |
156 |
183 /*! |
157 /*! |
184 Memory card with instaled widget was removed. |
158 Memory card with instaled widget was removed. |
185 \retval void |
159 \retval void |
186 */ |
160 */ |
190 mPopupDialog->close(); |
164 mPopupDialog->close(); |
191 } |
165 } |
192 } |
166 } |
193 |
167 |
194 /*! |
168 /*! |
|
169 Slot launched on dismissing the preview dialog |
|
170 \retval void |
|
171 */ |
|
172 void HsPreviewHSWidgetState::previewDialogFinished(HbAction* finishedAction) |
|
173 { |
|
174 if (mPopupDialog != NULL) { |
|
175 // (work-around for crash if more then one action is selected in HbDialog) |
|
176 disconnect(mNotifier, |
|
177 SIGNAL(entryChanged(CaEntry,ChangeType)), |
|
178 this, SLOT(memoryCardRemoved())); |
|
179 |
|
180 if (finishedAction == mPopupDialog->primaryAction()) { |
|
181 mWidget->hideWidget(); |
|
182 mScrollArea->takeContentWidget(); |
|
183 HsScene::instance()->activePage()->addNewWidget( |
|
184 mWidget); // ownership transferred |
|
185 } else { |
|
186 mWidget->uninitializeWidget(); |
|
187 mWidget->deleteFromDatabase(); |
|
188 } |
|
189 mPopupDialog = NULL; |
|
190 mScrollArea = NULL; |
|
191 mWidget = NULL; |
|
192 |
|
193 delete mNotifier; |
|
194 mNotifier = NULL; |
|
195 |
|
196 } else { |
|
197 // (work-around for crash if more then one action is selected in HbDialog) |
|
198 qWarning("Another signal finished was emited."); |
|
199 } |
|
200 } |
|
201 |
|
202 |
|
203 |
|
204 /*! |
195 Subscribe for memory card remove. |
205 Subscribe for memory card remove. |
196 \param entryId: HSWidget id. |
206 \retval void |
197 \retval void |
207 */ |
198 */ |
208 void HsPreviewHSWidgetState::subscribeForMemoryCardRemove() |
199 void HsPreviewHSWidgetState::subscribeForMemoryCardRemove(int entryId) |
|
200 { |
209 { |
201 CaNotifierFilter filter; |
210 CaNotifierFilter filter; |
202 QList<int> entryIds; |
211 QList<int> entryIds; |
203 entryIds.append(entryId); |
212 entryIds.append(mEntryId); |
204 filter.setIds(entryIds); |
213 filter.setIds(entryIds); |
205 mNotifier = CaService::instance()->createNotifier(filter); |
214 mNotifier = CaService::instance()->createNotifier(filter); |
206 mNotifier->setParent(this); |
215 mNotifier->setParent(this); |
207 connect(mNotifier, |
216 connect(mNotifier, |
208 SIGNAL(entryChanged(CaEntry,ChangeType)), |
217 SIGNAL(entryChanged(CaEntry,ChangeType)), |
210 } |
219 } |
211 |
220 |
212 |
221 |
213 /*! |
222 /*! |
214 Shows message about corrupted widget library. Deletes widget eventually |
223 Shows message about corrupted widget library. Deletes widget eventually |
215 \param itemId entryId of widget (needed to delete it) |
|
216 \retval void |
224 \retval void |
217 */ |
225 */ |
218 #ifdef COVERAGE_MEASUREMENT |
226 #ifdef COVERAGE_MEASUREMENT |
219 #pragma CTC SKIP |
227 #pragma CTC SKIP |
220 #endif //COVERAGE_MEASUREMENT |
228 #endif //COVERAGE_MEASUREMENT |
221 void HsPreviewHSWidgetState::showMessageWidgetCorrupted(int itemId) |
229 void HsPreviewHSWidgetState::showMessageWidgetCorrupted() |
222 { |
230 { |
223 HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted"); |
231 HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted"); |
|
232 |
224 QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi")); |
233 QString message(hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi")); |
225 if (HbMessageBox::question(message,hbTrId( |
234 HbMessageBox::question(message, this, |
226 "txt_common_button_ok"), hbTrId("txt_common_button_cancel"))) { |
235 SLOT(messageWidgetCorruptedFinished(HbAction*)), |
227 HsMenuService::executeAction(itemId, removeActionIdentifier()); |
236 hbTrId("txt_common_button_ok"), hbTrId("txt_common_button_cancel")); |
228 } |
237 |
229 HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted"); |
238 HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted"); |
230 } |
239 } |
231 #ifdef COVERAGE_MEASUREMENT |
240 #ifdef COVERAGE_MEASUREMENT |
232 #pragma CTC ENDSKIP |
241 #pragma CTC ENDSKIP |
233 #endif //COVERAGE_MEASUREMENT |
242 #endif //COVERAGE_MEASUREMENT |
234 |
243 |
|
244 |
|
245 /*! |
|
246 Slot launched on dismissing the corrupted widget error note |
|
247 \retval void |
|
248 */ |
|
249 void HsPreviewHSWidgetState::messageWidgetCorruptedFinished(HbAction* finishedAction) |
|
250 { |
|
251 if (finishedAction && qobject_cast<HbMessageBox*>(finishedAction->parent())->primaryAction() == finishedAction) { |
|
252 HsMenuService::executeAction(mEntryId, removeActionIdentifier()); |
|
253 } |
|
254 } |