55 \retval void |
55 \retval void |
56 */ |
56 */ |
57 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) : |
57 HsAddToHomeScreenState::HsAddToHomeScreenState(QState *parent) : |
58 QState(parent), |
58 QState(parent), |
59 mCorruptedMessage(NULL), mConfirmAction(NULL), |
59 mCorruptedMessage(NULL), mConfirmAction(NULL), |
60 mMenuMode(NormalHsMenuMode) |
60 mMenuMode(Hs::NormalHsMenuMode) |
61 { |
61 { |
62 setObjectName("/AddToHomeScreenState"); |
62 setObjectName("/AddToHomeScreenState"); |
63 |
63 |
64 if (this->parent()) { |
64 if (this->parent()) { |
65 setObjectName(this->parent()->objectName() + objectName()); |
65 setObjectName(this->parent()->objectName() + objectName()); |
92 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::onEntry"); |
92 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::onEntry"); |
93 QState::onEntry(event); |
93 QState::onEntry(event); |
94 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
94 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
95 QVariantMap data = menuEvent->data(); |
95 QVariantMap data = menuEvent->data(); |
96 |
96 |
97 mEntryId = data.value(itemIdKey()).toInt(); |
97 mEntryId = data.value(Hs::itemIdKey).toInt(); |
98 QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(mEntryId); |
98 QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(mEntryId); |
99 const QString entryTypeName = entry->entryTypeName(); |
99 const QString entryTypeName = entry->entryTypeName(); |
100 |
100 |
101 mMenuMode = static_cast<HsMenuMode>(data.value(menuModeType()).toInt()); |
101 mMenuMode = static_cast<Hs::HsMenuMode>(data.value(Hs::menuModeType).toInt()); |
102 mToken = data.value(HOMESCREENDATA); |
102 mToken = data.value(Hs::homescreenData); |
103 |
103 |
104 bool success = false; |
104 bool success = false; |
105 if (entryTypeName == widgetTypeName()) { |
105 if (entryTypeName == Hs::widgetTypeName) { |
106 const QString uri = entry->attribute(widgetUriAttributeName()); |
106 const QString uri = entry->attribute(Hs::widgetUriAttributeName); |
107 success = addWidget(*HsContentService::instance(), uri); |
107 success = addWidget(*HsContentService::instance(), uri); |
108 HsMenuService::touch(mEntryId); |
|
109 } else { |
108 } else { |
110 success = addApplication(*HsContentService::instance(), *entry); |
109 success = addApplication(*HsContentService::instance(), *entry); |
111 } |
110 } |
112 |
111 |
113 if (success && (mMenuMode == NormalHsMenuMode)) { |
112 if (success && (mMenuMode == Hs::NormalHsMenuMode)) { |
114 HbNotificationDialog *notificationDialog = new HbNotificationDialog(); |
113 HbNotificationDialog *notificationDialog = new HbNotificationDialog(); |
115 notificationDialog->setAttribute(Qt::WA_DeleteOnClose); |
114 notificationDialog->setAttribute(Qt::WA_DeleteOnClose); |
116 notificationDialog->setSequentialShow(false); |
115 notificationDialog->setSequentialShow(false); |
117 notificationDialog->setTitle(hbTrId( |
116 notificationDialog->setTitle(hbTrId( |
118 "txt_applib_dpophead_added_to_homescreen") ); |
117 "txt_applib_dpophead_added_to_homescreen") ); |
134 bool HsAddToHomeScreenState::addWidget(HsContentService &contentService, |
133 bool HsAddToHomeScreenState::addWidget(HsContentService &contentService, |
135 const QString &uri) |
134 const QString &uri) |
136 { |
135 { |
137 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addWidget"); |
136 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addWidget"); |
138 QVariantHash params; |
137 QVariantHash params; |
139 params[URI] = uri; |
138 params[Hs::uri] = uri; |
140 params[HOMESCREENDATA] = mToken; |
139 params[Hs::homescreenData] = mToken; |
141 bool success = contentService.createWidget(params); |
140 bool success = contentService.createWidget(params); |
142 if (!success) { |
141 if (!success) { |
143 showMessageWidgetCorrupted(); |
142 showMessageWidgetCorrupted(); |
144 } else { |
143 } else { |
145 emit exit(); |
144 emit exit(); |
146 if (mMenuMode == AddHsMenuMode) { |
145 if (mMenuMode == Hs::AddHsMenuMode) { |
147 machine()->postEvent( |
146 machine()->postEvent( |
148 HsMenuEventFactory::createOpenHomeScreenEvent()); |
147 HsMenuEventFactory::createOpenHomeScreenEvent()); |
149 } |
148 } |
150 } |
149 } |
151 logActionResult("Adding widget", mEntryId, success); |
150 logActionResult("Adding widget", mEntryId, success); |
183 */ |
182 */ |
184 void HsAddToHomeScreenState::messageWidgetCorruptedFinished |
183 void HsAddToHomeScreenState::messageWidgetCorruptedFinished |
185 (HbAction* finishedAction) |
184 (HbAction* finishedAction) |
186 { |
185 { |
187 if (static_cast<QAction*>(finishedAction) == mConfirmAction) { |
186 if (static_cast<QAction*>(finishedAction) == mConfirmAction) { |
188 HsMenuService::executeAction(mEntryId, removeActionIdentifier()); |
187 HsMenuService::executeAction(mEntryId, Hs::removeActionIdentifier); |
189 } |
188 } |
190 emit exit(); |
189 emit exit(); |
191 if (mMenuMode == AddHsMenuMode) { |
190 if (mMenuMode == Hs::AddHsMenuMode) { |
192 machine()->postEvent( |
191 machine()->postEvent( |
193 HsMenuEventFactory::createOpenHomeScreenEvent()); |
192 HsMenuEventFactory::createOpenHomeScreenEvent()); |
194 } |
193 } |
195 mConfirmAction = NULL; |
194 mConfirmAction = NULL; |
196 } |
195 } |
221 */ |
220 */ |
222 bool HsAddToHomeScreenState::addShortcut(HsContentService &contentService) |
221 bool HsAddToHomeScreenState::addShortcut(HsContentService &contentService) |
223 { |
222 { |
224 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addShortcut"); |
223 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addShortcut"); |
225 QVariantHash params; |
224 QVariantHash params; |
226 params[URI] = SHORTCUT_WIDGET_URI; |
225 params[Hs::uri] = SHORTCUT_WIDGET_URI; |
227 QVariantHash preferences; |
226 QVariantHash preferences; |
228 preferences[SHORTCUT_ID] = QString::number(mEntryId); |
227 preferences[SHORTCUT_ID] = QString::number(mEntryId); |
229 params[PREFERENCES] = preferences; |
228 params[Hs::preferences] = preferences; |
230 params[HOMESCREENDATA] = mToken; |
229 params[Hs::homescreenData] = mToken; |
231 const bool result = contentService.createWidget(params); |
230 const bool result = contentService.createWidget(params); |
232 logActionResult("Adding shortcut", mEntryId, result); |
231 logActionResult("Adding shortcut", mEntryId, result); |
233 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addShortcut"); |
232 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addShortcut"); |
234 return result; |
233 return result; |
235 } |
234 } |
243 */ |
242 */ |
244 bool HsAddToHomeScreenState::addApplication(HsContentService &contentService, |
243 bool HsAddToHomeScreenState::addApplication(HsContentService &contentService, |
245 CaEntry& entry) |
244 CaEntry& entry) |
246 { |
245 { |
247 bool success = false; |
246 bool success = false; |
248 if (entry.attributes().contains(widgetUriAttributeName())) { |
247 if (entry.attributes().contains(Hs::widgetUriAttributeName)) { |
249 QVariantHash params; |
248 QVariantHash params; |
250 const QString uri = entry.attribute(widgetUriAttributeName()); |
249 const QString uri = entry.attribute(Hs::widgetUriAttributeName); |
251 params[URI] = uri; |
250 params[Hs::uri] = uri; |
252 |
251 |
253 QVariantHash preferences; |
252 QVariantHash preferences; |
254 QMap<QString, QString> attributes = entry.attributes(); |
253 QMap<QString, QString> attributes = entry.attributes(); |
255 QMapIterator<QString, QString> i(attributes); |
254 QMapIterator<QString, QString> i(attributes); |
256 while (i.hasNext()) { |
255 while (i.hasNext()) { |
257 i.next(); |
256 i.next(); |
258 QString key(i.key()); |
257 QString key(i.key()); |
259 QString value(i.value()); |
258 QString value(i.value()); |
260 if (key.contains(widgetParam())) { |
259 if (key.contains(Hs::widgetParam)) { |
261 preferences.insert(key.remove(widgetParam()),value); |
260 preferences.insert(key.remove(Hs::widgetParam),value); |
262 } |
261 } |
263 } |
262 } |
264 params[PREFERENCES] = preferences; |
263 params[Hs::preferences] = preferences; |
265 params[HOMESCREENDATA] = mToken; |
264 params[Hs::homescreenData] = mToken; |
266 |
265 |
267 success = contentService.createWidget(params); |
266 success = contentService.createWidget(params); |
268 if (!success) { |
267 if (!success) { |
269 success = addShortcut(contentService); |
268 success = addShortcut(contentService); |
270 } |
269 } |
271 } else { |
270 } else { |
272 success = addShortcut(contentService); |
271 success = addShortcut(contentService); |
273 } |
272 } |
274 emit exit(); |
273 emit exit(); |
275 if (mMenuMode == AddHsMenuMode) { |
274 if (mMenuMode == Hs::AddHsMenuMode) { |
276 machine()->postEvent( |
275 machine()->postEvent( |
277 HsMenuEventFactory::createOpenHomeScreenEvent()); |
276 HsMenuEventFactory::createOpenHomeScreenEvent()); |
278 } |
277 } |
279 return success; |
278 return success; |
280 } |
279 } |