homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
equal
deleted
inserted
replaced
22 #include <hbmessagebox.h> |
22 #include <hbmessagebox.h> |
23 #include <hbaction.h> |
23 #include <hbaction.h> |
24 #include <hbnotificationdialog.h> |
24 #include <hbnotificationdialog.h> |
25 #include <hsmenueventfactory.h> |
25 #include <hsmenueventfactory.h> |
26 #include "hsmenudialogfactory.h" |
26 #include "hsmenudialogfactory.h" |
|
27 #include "hsmenuentryremovedhandler.h" |
|
28 |
27 #include "hsaddtohomescreenstate.h" |
29 #include "hsaddtohomescreenstate.h" |
28 #include "hsmenuevent.h" |
30 #include "hsmenuevent.h" |
29 #include "canotifier.h" |
31 #include "canotifier.h" |
30 #include "canotifierfilter.h" |
32 #include "canotifierfilter.h" |
31 #include "caservice.h" |
33 #include "caservice.h" |
53 \retval void |
55 \retval void |
54 */ |
56 */ |
55 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) : |
57 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) : |
56 QState(parent), |
58 QState(parent), |
57 mCorruptedMessage(NULL), mConfirmAction(NULL), |
59 mCorruptedMessage(NULL), mConfirmAction(NULL), |
58 mMenuMode(NormalHsMenuMode), |
60 mMenuMode(NormalHsMenuMode) |
59 mNotifier(0) |
|
60 { |
61 { |
61 setObjectName("/AddToHomeScreenState"); |
62 setObjectName("/AddToHomeScreenState"); |
62 |
63 |
63 if (this->parent()) { |
64 if (this->parent()) { |
64 setObjectName(this->parent()->objectName() + objectName()); |
65 setObjectName(this->parent()->objectName() + objectName()); |
137 QVariantHash params; |
138 QVariantHash params; |
138 params[URI] = uri; |
139 params[URI] = uri; |
139 params[HOMESCREENDATA] = mToken; |
140 params[HOMESCREENDATA] = mToken; |
140 bool success = contentService.createWidget(params); |
141 bool success = contentService.createWidget(params); |
141 if (!success) { |
142 if (!success) { |
142 subscribeForMemoryCardRemove(); |
|
143 showMessageWidgetCorrupted(); |
143 showMessageWidgetCorrupted(); |
144 } else { |
144 } else { |
145 emit exit(); |
145 emit exit(); |
146 if (mMenuMode == AddHsMenuMode) { |
146 if (mMenuMode == AddHsMenuMode) { |
147 machine()->postEvent( |
147 machine()->postEvent( |
163 HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted"); |
163 HSMENUTEST_FUNC_ENTRY("HsCollectionState::showMessageWidgetCorrupted"); |
164 |
164 |
165 mCorruptedMessage = HsMenuDialogFactory().create( |
165 mCorruptedMessage = HsMenuDialogFactory().create( |
166 hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi")); |
166 hbTrId("txt_applib_dialog_file_corrupted_unable_to_use_wi")); |
167 mConfirmAction = mCorruptedMessage->actions().value(0); |
167 mConfirmAction = mCorruptedMessage->actions().value(0); |
|
168 |
|
169 QScopedPointer<HsMenuEntryRemovedHandler> entryObserver( |
|
170 new HsMenuEntryRemovedHandler(mEntryId, |
|
171 mCorruptedMessage, SLOT(close()))); |
|
172 |
|
173 entryObserver.take()->setParent(mCorruptedMessage); |
|
174 |
168 mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*))); |
175 mCorruptedMessage->open(this, SLOT(messageWidgetCorruptedFinished(HbAction*))); |
169 |
176 |
170 HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted"); |
177 HSMENUTEST_FUNC_EXIT("HsCollectionState::showMessageWidgetCorrupted"); |
171 } |
178 } |
172 |
179 |
194 \retval void |
201 \retval void |
195 */ |
202 */ |
196 void HsAddToHomeScreenState::cleanUp() |
203 void HsAddToHomeScreenState::cleanUp() |
197 { |
204 { |
198 // Close popups if App key was pressed |
205 // Close popups if App key was pressed |
199 if (mCorruptedMessage) { |
206 if (mCorruptedMessage != NULL) { |
200 disconnect(mCorruptedMessage, SIGNAL(finished(HbAction*)), |
|
201 this, SLOT(messageWidgetCorruptedFinished(HbAction*))); |
|
202 mCorruptedMessage->close(); |
207 mCorruptedMessage->close(); |
203 mCorruptedMessage = NULL; |
208 mCorruptedMessage = NULL; |
204 } |
209 } |
205 |
210 |
206 disconnect(mNotifier, |
|
207 SIGNAL(entryChanged(CaEntry,ChangeType)), |
|
208 this, SLOT(memoryCardRemoved())); |
|
209 |
|
210 delete mNotifier; |
|
211 mNotifier = NULL; |
|
212 mToken = NULL; |
211 mToken = NULL; |
213 } |
212 } |
214 |
213 |
215 |
214 |
216 /*! |
215 /*! |
303 } else { |
302 } else { |
304 qWarning() << message; |
303 qWarning() << message; |
305 } |
304 } |
306 } |
305 } |
307 |
306 |
308 /*! |
307 |
309 Subscribe for memory card remove. |
308 |
310 \retval void |
309 |
311 */ |
|
312 void HsAddToHomeScreenState::subscribeForMemoryCardRemove() |
|
313 { |
|
314 CaNotifierFilter filter; |
|
315 QList<int> entryIds; |
|
316 entryIds.append(mEntryId); |
|
317 filter.setIds(entryIds); |
|
318 mNotifier = CaService::instance()->createNotifier(filter); |
|
319 mNotifier->setParent(this); |
|
320 connect(mNotifier, |
|
321 SIGNAL(entryChanged(CaEntry,ChangeType)), |
|
322 SLOT(memoryCardRemoved())); |
|
323 } |
|
324 |
|
325 /*! |
|
326 Memory card with instaled widget was removed. |
|
327 \retval void |
|
328 */ |
|
329 void HsAddToHomeScreenState::memoryCardRemoved() |
|
330 { |
|
331 if (mCorruptedMessage) { |
|
332 mCorruptedMessage->close(); |
|
333 mCorruptedMessage = NULL; |
|
334 } |
|
335 // exit not needed, it is called after dialog closed |
|
336 } |
|