phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp
changeset 30 ebdbd102c78a
parent 27 2f8f8080a020
equal deleted inserted replaced
27:2f8f8080a020 30:ebdbd102c78a
    32 // Docml widget name mappings 
    32 // Docml widget name mappings 
    33 const char LAYOUT_PREFIX_INFO_DISPLAY[] = "id:";
    33 const char LAYOUT_PREFIX_INFO_DISPLAY[] = "id:";
    34 const char LAYOUT_PREFIX_SETTINGS_DISPLAY[] = "sd:";
    34 const char LAYOUT_PREFIX_SETTINGS_DISPLAY[] = "sd:";
    35 const char LAYOUT_NAME_CONTENT[] = "content";
    35 const char LAYOUT_NAME_CONTENT[] = "content";
    36 const char LAYOUT_NAME_MCNMARQUEEITEM[] = "mcnMarqueeItem";
    36 const char LAYOUT_NAME_MCNMARQUEEITEM[] = "mcnMarqueeItem";
    37 const char LAYOUT_NAME_MCNLABEL[] = "mcnLabel";
       
    38 const char LAYOUT_NAME_SPNLABEL[] = "spnLabel";
    37 const char LAYOUT_NAME_SPNLABEL[] = "spnLabel";
    39 const char LAYOUT_NAME_SATMARQUEEITEM[] = "satMarqueeItem";
    38 const char LAYOUT_NAME_SATMARQUEEITEM[] = "satMarqueeItem";
    40 const char LAYOUT_NAME_SATTEXTLABEL[] = "satTextLabel";
       
    41 const char LAYOUT_NAME_SPNICON[] = "spnIcon";
    39 const char LAYOUT_NAME_SPNICON[] = "spnIcon";
    42 const char LAYOUT_NAME_MCNICON[] = "mcnIcon";
    40 const char LAYOUT_NAME_MCNICON[] = "mcnIcon";
    43 const char LAYOUT_NAME_SATTEXTICON[] = "satTextIcon";
    41 const char LAYOUT_NAME_SATTEXTICON[] = "satTextIcon";
    44 const char LAYOUT_NAME_SPNCHECKBOX[] = "spnCheckBox";
    42 const char LAYOUT_NAME_SPNCHECKBOX[] = "spnCheckBox";
    45 const char LAYOUT_NAME_MCNCHECKBOX[] = "mcnCheckBox";
    43 const char LAYOUT_NAME_MCNCHECKBOX[] = "mcnCheckBox";
   138     DPRINT << ": IN";
   136     DPRINT << ": IN";
   139     
   137     
   140     if (m_documentLoader) { 
   138     if (m_documentLoader) { 
   141         delete m_documentLoader;
   139         delete m_documentLoader;
   142     }
   140     }
   143     
   141 
   144     DPRINT << ": OUT";
   142     DPRINT << ": OUT";
   145 }
   143 }
       
   144 
       
   145 /*!
       
   146    InfoWidgetLayoutManager::destroyObjects()
       
   147    
       
   148    Call on destruction for freeing  
       
   149    loaded objects. Parent items are deleted 
       
   150    causing deletion of corresponding object tree 
       
   151 */
       
   152 void InfoWidgetLayoutManager::destroyObjects()
       
   153 {
       
   154     DPRINT << ": IN";
       
   155     
       
   156     // Destroy parent items 
       
   157     QGraphicsWidget *contentInfoDisplay =  
       
   158             m_infoDisplayWidgets.value(RoleContent); 
       
   159     if (contentInfoDisplay) {
       
   160         delete contentInfoDisplay;
       
   161         m_infoDisplayWidgets.clear(); 
       
   162     }
       
   163     
       
   164     QGraphicsWidget *contentSettingsDisplay=  
       
   165             m_settingsDisplayWidgets.value(RoleContent); 
       
   166     if (contentSettingsDisplay) {
       
   167         delete contentSettingsDisplay;
       
   168         m_settingsDisplayWidgets.clear(); 
       
   169     }
       
   170 
       
   171     DPRINT << ": OUT";    
       
   172 }
       
   173 
   146 
   174 
   147 /*!
   175 /*!
   148    InfoWidgetLayoutManager::currentDisplayRole()
   176    InfoWidgetLayoutManager::currentDisplayRole()
   149 */
   177 */
   150 InfoWidgetLayoutManager::DisplayRole InfoWidgetLayoutManager::currentDisplayRole() 
   178 InfoWidgetLayoutManager::DisplayRole InfoWidgetLayoutManager::currentDisplayRole() 
   345 bool InfoWidgetLayoutManager::loadWidgets(const DisplayRole displayRole, 
   373 bool InfoWidgetLayoutManager::loadWidgets(const DisplayRole displayRole, 
   346         const QList<LayoutItemRole> &displayWidgets,
   374         const QList<LayoutItemRole> &displayWidgets,
   347         QMap<LayoutItemRole, QGraphicsWidget *> &widgetMap)
   375         QMap<LayoutItemRole, QGraphicsWidget *> &widgetMap)
   348 {
   376 {
   349     DPRINT << ": IN";
   377     DPRINT << ": IN";
   350     bool loadResult(true); 
   378     bool loadResult(false); 
   351 
   379 
   352     // Cleanup previously loaded content in case of any data  
   380     // Cleanup previously loaded content in case of any data  
   353     widgetMap.clear(); 
   381     widgetMap.clear(); 
   354     
   382     
   355     if (!m_documentLoader) {
   383     if (!m_documentLoader) {
   356         m_documentLoader = new InfoWidgetDocumentLoader;
   384         m_documentLoader = new InfoWidgetDocumentLoader;
   357     }
   385     }    
   358     
       
   359     Q_ASSERT(m_documentLoader); 
   386     Q_ASSERT(m_documentLoader); 
   360     
   387     
   361     bool loaded = false;
   388     bool loaded = false;
   362     m_documentLoader->load(INFOWIDGET_DOCML_FILE, &loaded);
   389     m_documentLoader->load(INFOWIDGET_DOCML_FILE, &loaded);
       
   390     
   363     Q_ASSERT_X(loaded, 
   391     Q_ASSERT_X(loaded, 
   364             "InfoWidgetLayoutManager", 
   392             "InfoWidgetLayoutManager", 
   365             "Invalid docml file");    
   393             "Invalid docml file");    
   366     
   394     
   367     if (!loaded) {
   395     DPRINT << ": document " << INFOWIDGET_DOCML_FILE << " loaded successfully"; 
   368         qWarning() << "Unable to load .docml:  " << INFOWIDGET_DOCML_FILE;
   396     
   369     }
   397     QGraphicsWidget *widget(NULL);
   370     else {
   398     LayoutItemRole currentWidgetRole;
   371         DPRINT << ": document " << INFOWIDGET_DOCML_FILE << " loaded successfully"; 
   399     
   372         
   400     foreach (currentWidgetRole, displayWidgets) {
   373         QGraphicsWidget *widget(NULL);
   401         DPRINT << ": iterating displayWidgets, current role: " << static_cast<int>(currentWidgetRole);
   374         LayoutItemRole currentWidgetRole;
   402     
   375         bool allWidgetsLoaded(true); 
   403         widget = loadWidget(*m_documentLoader, displayRole, currentWidgetRole);
   376         
   404         if (widget) {
   377         foreach (currentWidgetRole, displayWidgets) {
   405             DPRINT << ": widget found, inserting to widget map";
   378             DPRINT << ": iterating displayWidgets, current role: " << static_cast<int>(currentWidgetRole);
   406             widgetMap.insert(currentWidgetRole, widget);
   379             
   407             widget = NULL;
   380             widget = loadWidget(*m_documentLoader, displayRole, currentWidgetRole);
   408         } else {
   381                if (widget) {
   409             DCRITICAL << ": ERROR, widget not found!";
   382                    DPRINT << ": widget found, inserting to widget map";
       
   383                    widgetMap.insert(currentWidgetRole, widget);
       
   384                    widget = NULL;
       
   385                } else {
       
   386                    allWidgetsLoaded = false; 
       
   387                    DPRINT << ": ERROR, widget not found!";
       
   388                }
       
   389         }
   410         }
   390         
   411     }
   391         DPRINT << ": allWidgetsLoaded: " << allWidgetsLoaded;
   412     
   392                 
   413     if (widgetMap.count() == displayWidgets.count()) {
   393         int widgetCount = widgetMap.count(); 
   414         DPRINT << ": all widgets loaded";
   394         DPRINT << ": loaded widgets count: " << widgetCount;
   415         loadResult = true;
   395         if (widgetCount == displayWidgets.count()) {
   416     } else {
   396             DPRINT << ": all widgets loaded";
   417         DCRITICAL << ": error, all widgets were not loaded";
   397             loadResult = true;
   418     }        
   398             } else {
   419     
   399                 DPRINT << ": error, all widgets were not loaded";
       
   400                 loadResult = false;
       
   401             }        
       
   402     }
       
   403         
       
   404     DPRINT << ": OUT";
   420     DPRINT << ": OUT";
   405     return loadResult; 
   421     return loadResult; 
   406 }
   422 }
   407 
   423 
   408 /*!
   424 /*!
   456             widgetName.append(LAYOUT_NAME_MCNMARQUEEITEM);
   472             widgetName.append(LAYOUT_NAME_MCNMARQUEEITEM);
   457         break; 
   473         break; 
   458         case RoleSpnLabel: 
   474         case RoleSpnLabel: 
   459             widgetName.append(LAYOUT_NAME_SPNLABEL);
   475             widgetName.append(LAYOUT_NAME_SPNLABEL);
   460         break;
   476         break;
   461         case RoleMcnLabel: 
       
   462             widgetName.append(LAYOUT_NAME_MCNLABEL);
       
   463         break;
       
   464         case RoleSatMarqueeItem: 
   477         case RoleSatMarqueeItem: 
   465             widgetName.append(LAYOUT_NAME_SATMARQUEEITEM);
   478             widgetName.append(LAYOUT_NAME_SATMARQUEEITEM);
   466         break; 
       
   467         case RoleSatTextLabel: 
       
   468             widgetName.append(LAYOUT_NAME_SATTEXTLABEL);
       
   469         break; 
   479         break; 
   470         case RoleSpnIcon: 
   480         case RoleSpnIcon: 
   471             widgetName.append(LAYOUT_NAME_SPNICON);
   481             widgetName.append(LAYOUT_NAME_SPNICON);
   472         break; 
   482         break; 
   473         case RoleMcnIcon: 
   483         case RoleMcnIcon: 
   499         default: 
   509         default: 
   500             break; 
   510             break; 
   501         }
   511         }
   502     
   512     
   503     widget = qobject_cast<QGraphicsWidget *>(loader.findWidget(widgetName));
   513     widget = qobject_cast<QGraphicsWidget *>(loader.findWidget(widgetName));
   504     
   514     if (!widget) {
   505     if (widget) {
   515         DCRITICAL << ": ERROR, widget " << widgetName << " not found!";
   506         DPRINT << ": widget found: " << widgetName;
       
   507     } else {
       
   508         DPRINT << ": ERROR, widget not found!";
       
   509     }
   516     }
   510            
   517            
   511     DPRINT << ": OUT";
   518     DPRINT << ": OUT";
   512     return widget; 
   519     return widget; 
   513 }
   520 }
   522 {
   529 {
   523     DPRINT << ": IN";
   530     DPRINT << ": IN";
   524     
   531     
   525     QList<LayoutItemRole> widgetRoles; 
   532     QList<LayoutItemRole> widgetRoles; 
   526     
   533     
       
   534     // Fill supported layout item roles for specific display
   527     switch (displayRole) {
   535     switch (displayRole) {
   528         case SettingsDisplay: 
   536         case SettingsDisplay: 
   529             // Fill supported layout item roles for settings display
       
   530             widgetRoles.append(RoleContent); 
   537             widgetRoles.append(RoleContent); 
   531             widgetRoles.append(RoleSpnCheckBox);
   538             widgetRoles.append(RoleSpnCheckBox);
   532             widgetRoles.append(RoleMcnCheckBox);
   539             widgetRoles.append(RoleMcnCheckBox);
   533             widgetRoles.append(RoleSatTextCheckBox);
   540             widgetRoles.append(RoleSatTextCheckBox);
   534             widgetRoles.append(RoleOkButton);
   541             widgetRoles.append(RoleOkButton);
   535             widgetRoles.append(RoleSettingsContainer); 
   542             widgetRoles.append(RoleSettingsContainer); 
   536             break;
   543             break;
   537         case InfoDisplay: 
   544         case InfoDisplay: 
   538             // Fill supported layout item roles for info display
       
   539             widgetRoles.append(RoleContent);
   545             widgetRoles.append(RoleContent);
   540             widgetRoles.append(RoleSpnIcon);
   546             widgetRoles.append(RoleSpnIcon);
   541             widgetRoles.append(RoleSpnLabel);
   547             widgetRoles.append(RoleSpnLabel);
   542             widgetRoles.append(RoleMcnIcon);
   548             widgetRoles.append(RoleMcnIcon);
   543             widgetRoles.append(RoleMcnMarqueeItem);
   549             widgetRoles.append(RoleMcnMarqueeItem);