homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp
changeset 60 30f14686fb04
parent 51 4785f57bf3d4
child 61 2b1b11a301d2
--- a/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Fri Jun 11 13:30:16 2010 +0300
+++ b/homescreenapp/serviceproviders/hsmenuserviceprovider/src/hsmenuservice.cpp	Wed Jun 23 18:03:36 2010 +0300
@@ -92,7 +92,7 @@
 HsMenuItemModel *HsMenuService::getInstalledModel(
     HsSortAttribute sortAttribute)
 {
-    //TODO get proper items 
+    //TODO get proper items
     qDebug() << "HsMenuService::getInstalledModel" << "sortAttribute:"
              << sortAttribute;
     HSMENUTEST_FUNC_ENTRY("HsMenuService::getInstalledModel");
@@ -191,8 +191,30 @@
 {
     qDebug() << "HsMenuService::executeAction entryId:" << entryId
              << "actionName:" << actionName;
+    bool ret = CaService::instance()->executeCommand(entryId, actionName);
 
-    return CaService::instance()->executeCommand(entryId, actionName);
+    // if its remove action we need to mark all items 
+    // that are being uninstalled
+    if (actionName ==  caCmdRemove && ret) {
+        QSharedPointer<CaEntry> entry(
+                CaService::instance()->getEntry(entryId));
+        if (!entry.isNull()) {
+            QString componentId = entry->attribute(
+                    componentIdAttributeName());
+            
+            CaQuery query;
+            query.setAttribute(componentIdAttributeName(), componentId);
+            QList< QSharedPointer<CaEntry> > entries 
+                    = CaService::instance()->getEntries(query);
+            
+            for (int i = 0; i < entries.count(); i++) {
+                entries[i]->setFlags(
+                        entries.first()->flags()| UninstallEntryFlag);
+                CaService::instance()->updateEntry(*entries[i]);
+            }
+        }
+    }
+    return ret;
 }
 
 /*!
@@ -397,8 +419,8 @@
     QScopedPointer<CaEntry> tsEntry(new CaEntry);
     tsEntry->setEntryTypeName(applicationTypeName());
     tsEntry->setAttribute(
-            applicationUidEntryKey(), QString::number(softwareUpdateApplicationUid)); 
-    int retval = CaService::instance()->executeCommand(*tsEntry, 
+            applicationUidEntryKey(), QString::number(softwareUpdateApplicationUid));
+    int retval = CaService::instance()->executeCommand(*tsEntry,
             openActionIdentifier());
     return retval;
 }