phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp
changeset 30 ebdbd102c78a
parent 27 2f8f8080a020
--- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp	Mon May 03 12:31:11 2010 +0300
+++ b/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp	Fri May 14 15:51:57 2010 +0300
@@ -34,10 +34,8 @@
 const char LAYOUT_PREFIX_SETTINGS_DISPLAY[] = "sd:";
 const char LAYOUT_NAME_CONTENT[] = "content";
 const char LAYOUT_NAME_MCNMARQUEEITEM[] = "mcnMarqueeItem";
-const char LAYOUT_NAME_MCNLABEL[] = "mcnLabel";
 const char LAYOUT_NAME_SPNLABEL[] = "spnLabel";
 const char LAYOUT_NAME_SATMARQUEEITEM[] = "satMarqueeItem";
-const char LAYOUT_NAME_SATTEXTLABEL[] = "satTextLabel";
 const char LAYOUT_NAME_SPNICON[] = "spnIcon";
 const char LAYOUT_NAME_MCNICON[] = "mcnIcon";
 const char LAYOUT_NAME_SATTEXTICON[] = "satTextIcon";
@@ -140,11 +138,41 @@
     if (m_documentLoader) { 
         delete m_documentLoader;
     }
-    
+
     DPRINT << ": OUT";
 }
 
 /*!
+   InfoWidgetLayoutManager::destroyObjects()
+   
+   Call on destruction for freeing  
+   loaded objects. Parent items are deleted 
+   causing deletion of corresponding object tree 
+*/
+void InfoWidgetLayoutManager::destroyObjects()
+{
+    DPRINT << ": IN";
+    
+    // Destroy parent items 
+    QGraphicsWidget *contentInfoDisplay =  
+            m_infoDisplayWidgets.value(RoleContent); 
+    if (contentInfoDisplay) {
+        delete contentInfoDisplay;
+        m_infoDisplayWidgets.clear(); 
+    }
+    
+    QGraphicsWidget *contentSettingsDisplay=  
+            m_settingsDisplayWidgets.value(RoleContent); 
+    if (contentSettingsDisplay) {
+        delete contentSettingsDisplay;
+        m_settingsDisplayWidgets.clear(); 
+    }
+
+    DPRINT << ": OUT";    
+}
+
+
+/*!
    InfoWidgetLayoutManager::currentDisplayRole()
 */
 InfoWidgetLayoutManager::DisplayRole InfoWidgetLayoutManager::currentDisplayRole() 
@@ -347,60 +375,48 @@
         QMap<LayoutItemRole, QGraphicsWidget *> &widgetMap)
 {
     DPRINT << ": IN";
-    bool loadResult(true); 
+    bool loadResult(false); 
 
     // Cleanup previously loaded content in case of any data  
     widgetMap.clear(); 
     
     if (!m_documentLoader) {
         m_documentLoader = new InfoWidgetDocumentLoader;
-    }
-    
+    }    
     Q_ASSERT(m_documentLoader); 
     
     bool loaded = false;
     m_documentLoader->load(INFOWIDGET_DOCML_FILE, &loaded);
+    
     Q_ASSERT_X(loaded, 
             "InfoWidgetLayoutManager", 
             "Invalid docml file");    
     
-    if (!loaded) {
-        qWarning() << "Unable to load .docml:  " << INFOWIDGET_DOCML_FILE;
+    DPRINT << ": document " << INFOWIDGET_DOCML_FILE << " loaded successfully"; 
+    
+    QGraphicsWidget *widget(NULL);
+    LayoutItemRole currentWidgetRole;
+    
+    foreach (currentWidgetRole, displayWidgets) {
+        DPRINT << ": iterating displayWidgets, current role: " << static_cast<int>(currentWidgetRole);
+    
+        widget = loadWidget(*m_documentLoader, displayRole, currentWidgetRole);
+        if (widget) {
+            DPRINT << ": widget found, inserting to widget map";
+            widgetMap.insert(currentWidgetRole, widget);
+            widget = NULL;
+        } else {
+            DCRITICAL << ": ERROR, widget not found!";
+        }
     }
-    else {
-        DPRINT << ": document " << INFOWIDGET_DOCML_FILE << " loaded successfully"; 
-        
-        QGraphicsWidget *widget(NULL);
-        LayoutItemRole currentWidgetRole;
-        bool allWidgetsLoaded(true); 
-        
-        foreach (currentWidgetRole, displayWidgets) {
-            DPRINT << ": iterating displayWidgets, current role: " << static_cast<int>(currentWidgetRole);
-            
-            widget = loadWidget(*m_documentLoader, displayRole, currentWidgetRole);
-               if (widget) {
-                   DPRINT << ": widget found, inserting to widget map";
-                   widgetMap.insert(currentWidgetRole, widget);
-                   widget = NULL;
-               } else {
-                   allWidgetsLoaded = false; 
-                   DPRINT << ": ERROR, widget not found!";
-               }
-        }
-        
-        DPRINT << ": allWidgetsLoaded: " << allWidgetsLoaded;
-                
-        int widgetCount = widgetMap.count(); 
-        DPRINT << ": loaded widgets count: " << widgetCount;
-        if (widgetCount == displayWidgets.count()) {
-            DPRINT << ": all widgets loaded";
-            loadResult = true;
-            } else {
-                DPRINT << ": error, all widgets were not loaded";
-                loadResult = false;
-            }        
-    }
-        
+    
+    if (widgetMap.count() == displayWidgets.count()) {
+        DPRINT << ": all widgets loaded";
+        loadResult = true;
+    } else {
+        DCRITICAL << ": error, all widgets were not loaded";
+    }        
+    
     DPRINT << ": OUT";
     return loadResult; 
 }
@@ -458,15 +474,9 @@
         case RoleSpnLabel: 
             widgetName.append(LAYOUT_NAME_SPNLABEL);
         break;
-        case RoleMcnLabel: 
-            widgetName.append(LAYOUT_NAME_MCNLABEL);
-        break;
         case RoleSatMarqueeItem: 
             widgetName.append(LAYOUT_NAME_SATMARQUEEITEM);
         break; 
-        case RoleSatTextLabel: 
-            widgetName.append(LAYOUT_NAME_SATTEXTLABEL);
-        break; 
         case RoleSpnIcon: 
             widgetName.append(LAYOUT_NAME_SPNICON);
         break; 
@@ -501,11 +511,8 @@
         }
     
     widget = qobject_cast<QGraphicsWidget *>(loader.findWidget(widgetName));
-    
-    if (widget) {
-        DPRINT << ": widget found: " << widgetName;
-    } else {
-        DPRINT << ": ERROR, widget not found!";
+    if (!widget) {
+        DCRITICAL << ": ERROR, widget " << widgetName << " not found!";
     }
            
     DPRINT << ": OUT";
@@ -524,9 +531,9 @@
     
     QList<LayoutItemRole> widgetRoles; 
     
+    // Fill supported layout item roles for specific display
     switch (displayRole) {
         case SettingsDisplay: 
-            // Fill supported layout item roles for settings display
             widgetRoles.append(RoleContent); 
             widgetRoles.append(RoleSpnCheckBox);
             widgetRoles.append(RoleMcnCheckBox);
@@ -535,7 +542,6 @@
             widgetRoles.append(RoleSettingsContainer); 
             break;
         case InfoDisplay: 
-            // Fill supported layout item roles for info display
             widgetRoles.append(RoleContent);
             widgetRoles.append(RoleSpnIcon);
             widgetRoles.append(RoleSpnLabel);