homescreenapp/stateplugins/hsmenuworkerstateplugin/src/hsaddtohomescreenstate.cpp
changeset 85 35368b604b28
parent 77 4b195f3bea29
child 96 458d8c8d9580
equal deleted inserted replaced
77:4b195f3bea29 85:35368b604b28
    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 }