76 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::onEntry"); |
76 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::onEntry"); |
77 HsMenuBaseState::onEntry(event); |
77 HsMenuBaseState::onEntry(event); |
78 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
78 HsMenuEvent *menuEvent = static_cast<HsMenuEvent *>(event); |
79 QVariantMap data = menuEvent->data(); |
79 QVariantMap data = menuEvent->data(); |
80 |
80 |
81 const QString entryTypeName = data.value(entryTypeNameKey()).toString(); |
|
82 |
|
83 const int entryId = data.value(itemIdKey()).toInt(); |
81 const int entryId = data.value(itemIdKey()).toInt(); |
|
82 QSharedPointer<CaEntry> entry = CaService::instance()->getEntry(entryId); |
|
83 const QString entryTypeName = entry->entryTypeName(); |
84 |
84 |
85 if (entryTypeName == widgetTypeName()) { |
85 if (entryTypeName == widgetTypeName()) { |
86 const QString uri = data.value(widgetUriAttributeName()).toString(); |
86 const QString uri = entry->attribute(widgetUriAttributeName()); |
87 addWidget(*contentService(), uri, entryId); |
87 addWidget(*contentService(), uri, entryId); |
88 HsMenuService::touch(entryId); |
88 HsMenuService::touch(entryId); |
89 } else if (entryTypeName==templatedApplicationTypeName()) { |
|
90 addTApplication(*contentService(), entryId, data); |
|
91 HsMenuService::touch(entryId); |
|
92 } else { |
89 } else { |
93 addShortcut(*contentService(), entryId); |
90 addApplication(*contentService(), *entry); |
94 } |
91 } |
95 |
92 |
96 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::onEntry"); |
93 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::onEntry"); |
97 } |
94 } |
98 |
95 |
149 \retval void |
146 \retval void |
150 */ |
147 */ |
151 void HsAddToHomeScreenState::addShortcut(HsContentService &contentService, |
148 void HsAddToHomeScreenState::addShortcut(HsContentService &contentService, |
152 int entryId) |
149 int entryId) |
153 { |
150 { |
154 //ShortcutData item_id; |
|
155 //item_id.mShortcutId = entryId; |
|
156 |
|
157 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addShortcut"); |
151 HSMENUTEST_FUNC_ENTRY("HsAddToHomeScreenState::addShortcut"); |
158 CaQuery query; |
152 QVariantHash params; |
159 query.setEntryTypeNames(QStringList(widgetTypeName())); |
153 params[URI] = SHORTCUT_WIDGET_URI; |
160 QList<CaEntry *> entries = CaService::instance()->getEntries(query); |
154 QVariantHash preferences; |
161 |
155 preferences[SHORTCUT_ID] = QString::number(entryId); |
162 if (mLibraryPath.isEmpty()) { |
156 params[PREFERENCES] = preferences; |
163 foreach(CaEntry *entry,entries) { |
157 const bool result = contentService.createWidget(params); |
164 QString uri = entry->attribute(widgetUriAttributeName()); |
158 logActionResult("Adding shortcut", entryId, result); |
165 if (uri == SHORTCUT_WIDGET_URI) { |
|
166 mLibraryPath = entry->attribute( |
|
167 widgetLibraryAttributeName()); |
|
168 break; |
|
169 } |
|
170 } |
|
171 } |
|
172 if (!mLibraryPath.isEmpty()) { |
|
173 QVariantHash params; |
|
174 params[LIBRARY] = mLibraryPath; |
|
175 params[URI] = SHORTCUT_WIDGET_URI; |
|
176 QVariantHash preferences; |
|
177 preferences[SHORTCUT_ID] = QString::number(entryId); |
|
178 params[PREFERENCES] = preferences; |
|
179 const bool result = contentService.createWidget(params); |
|
180 logActionResult("Adding shortcut", entryId, result); |
|
181 } |
|
182 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addShortcut"); |
159 HSMENUTEST_FUNC_EXIT("HsAddToHomeScreenState::addShortcut"); |
183 } |
160 } |
184 |
161 |
185 /*! |
162 /*! |
186 Adds a tapplication to active page of home screen |
163 Adds a tapplication to active page of home screen |
187 \param shortcutService: service for adding shortcuts |
164 \param shortcutService: service for adding shortcuts |
188 \param entryId: menu entry id |
165 \param entryId: menu entry id |
189 \param data: data from event |
166 \param data: data from event |
190 \retval void |
167 \retval void |
191 */ |
168 */ |
192 void HsAddToHomeScreenState::addTApplication(HsContentService &contentService, |
169 void HsAddToHomeScreenState::addApplication(HsContentService &contentService, |
193 int entryId, QVariantMap &data) |
170 CaEntry& entry) |
194 { |
171 { |
195 CaEntry* entry = CaService::instance()->getEntry(entryId); |
172 if (entry.attributes().contains(widgetUriAttributeName())) { |
196 |
|
197 |
|
198 if (entry->attributes().contains(widgetUriAttributeName())) { |
|
199 QVariantHash params; |
173 QVariantHash params; |
200 const QString uri = entry->attribute(widgetUriAttributeName()); |
174 const QString uri = entry.attribute(widgetUriAttributeName()); |
201 params[URI] = uri; |
175 params[URI] = uri; |
202 |
176 |
203 QVariantHash preferences; |
177 QVariantHash preferences; |
204 QVariantMap widgetParams = data.value(widgetParam()).toMap(); |
178 QMap<QString, QString> attributes = entry.attributes(); |
205 QMapIterator<QString, QVariant> i(widgetParams); |
179 QMapIterator<QString, QString> i(attributes); |
206 while (i.hasNext()) { |
180 while (i.hasNext()) { |
207 i.next(); |
181 i.next(); |
208 QString key(i.key()); |
182 QString key(i.key()); |
209 QString value = i.value().toString(); |
183 QString value(i.value()); |
210 preferences.insert(key.remove(widgetParam()), value); |
184 if (key.contains(widgetParam())) { |
|
185 preferences.insert(key.remove(widgetParam()),value); |
|
186 } |
211 } |
187 } |
212 params[PREFERENCES] = preferences; |
188 params[PREFERENCES] = preferences; |
213 |
189 |
214 bool ok = contentService.createWidget(params); |
190 bool ok = contentService.createWidget(params); |
215 if (!ok) { |
191 if (!ok) { |
216 addShortcut(contentService, entryId); |
192 addShortcut(contentService, entry.id()); |
217 } |
193 } |
218 } else { |
194 } else { |
219 addShortcut(contentService, entryId); |
195 addShortcut(contentService, entry.id()); |
220 } |
196 } |
221 } |
197 } |
222 |
198 |
223 /*! |
199 /*! |
224 Provides debug logging of add widget/shortcut action |
200 Provides debug logging of add widget/shortcut action |