homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
changeset 39 4e8ebe173323
parent 36 cdae8c6c3876
child 46 23b5d6a29cce
equal deleted inserted replaced
36:cdae8c6c3876 39:4e8ebe173323
    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