diff -r bab96b7ed1a4 -r f39ed5e045e0 phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp --- a/phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidgetlayoutmanager.cpp Tue Jun 15 14:14:38 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,564 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ - -#include "infowidgetlayoutmanager.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "infowidgetlogging.h" - - -const char INFOWIDGET_DOCML_FILE[] = ":/resource/infowidget.docml"; - -// Docml widget name mappings -const char LAYOUT_PREFIX_INFO_DISPLAY[] = "id:"; -const char LAYOUT_PREFIX_SETTINGS_DISPLAY[] = "sd:"; -const char LAYOUT_NAME_CONTENT[] = "content"; -const char LAYOUT_NAME_MCNMARQUEEITEM[] = "mcnMarqueeItem"; -const char LAYOUT_NAME_SPNLABEL[] = "spnLabel"; -const char LAYOUT_NAME_SATMARQUEEITEM[] = "satMarqueeItem"; -const char LAYOUT_NAME_SPNICON[] = "spnIcon"; -const char LAYOUT_NAME_MCNICON[] = "mcnIcon"; -const char LAYOUT_NAME_SATTEXTICON[] = "satTextIcon"; -const char LAYOUT_NAME_SPNCHECKBOX[] = "spnCheckBox"; -const char LAYOUT_NAME_MCNCHECKBOX[] = "mcnCheckBox"; -const char LAYOUT_NAME_SATTEXTCHECKBOX[] = "satTextCheckBox"; -const char LAYOUT_NAME_OKBUTTON[] = "okButton"; -const char LAYOUT_NAME_CONTAINER[] = "container"; -const char LAYOUT_NAME_SETTINGSCONTAINER[] = "settingsContainer"; - - -/*! - \class InfoWidgetDocumentLoader - \brief Custom document loader for Operator info widget - - Derived from HbDocumentLoader. - -*/ - -/*! - InfoWidgetDocumentLoader::InfoWidgetDocumentLoader() - */ -InfoWidgetDocumentLoader::InfoWidgetDocumentLoader() -{ -} - -/*! - InfoWidgetDocumentLoader::createObject() - */ -QObject *InfoWidgetDocumentLoader::createObject( - const QString &type, - const QString &name) -{ - DPRINT << ": IN"; - - DPRINT << ": type: "<< type; - DPRINT << ": name: "<< name; - - if ( type == HbMarqueeItem::staticMetaObject.className() ) { - DPRINT << ": HbMarqueeItem"; - QObject *object = new HbMarqueeItem; - object->setObjectName(name); - DPRINT << ": HbMarqueeitem found, OUT"; - return object; - } - - DPRINT << ": OUT"; - return HbDocumentLoader::createObject(type, name); -} - - -/*! - \class InfoWidgetLayoutManager - \brief Layout manager class for Operator info widget. - - Handles layout document loading and accessing the loaded - widgets. - -*/ - -/*! - InfoWidgetLayoutManager::InfoWidgetLayoutManager() -*/ -InfoWidgetLayoutManager::InfoWidgetLayoutManager(QObject *parent) -: QObject(parent), - m_documentLoader(NULL), - m_displayRole(InfoDisplay), - m_layoutRows(0) -{ - DPRINT << ": IN"; - - // Fill supported layout item roles for info display - QList displayWidgetRoles = widgetRoles(InfoDisplay); - - // Try to load all widgets in list by widget role - bool loadResult = loadWidgets(InfoDisplay, - displayWidgetRoles, - m_infoDisplayWidgets); - DPRINT << ": info display widget load result: " << loadResult; - - // Fill supported layout item roles for settings display - displayWidgetRoles = widgetRoles(SettingsDisplay); - - // Try to load all widgets in list by widget role - loadResult = loadWidgets(SettingsDisplay, - displayWidgetRoles, - m_settingsDisplayWidgets); - DPRINT << ": settings display widget load result: " << loadResult; - - DPRINT << ": OUT"; -} - -/*! - InfoWidgetLayoutManager::~InfoWidgetLayoutManager() -*/ -InfoWidgetLayoutManager::~InfoWidgetLayoutManager() -{ - DPRINT << ": IN"; - - 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() -{ - DPRINT; - return m_displayRole; -} - -/*! - InfoWidgetLayoutManager::currentWidgetRoles() -*/ -QList InfoWidgetLayoutManager::currentWidgetRoles() -{ - DPRINT; - return m_widgets.keys(); -} - -/*! - InfoWidgetLayoutManager::layoutRows() -*/ -int InfoWidgetLayoutManager::layoutRows() const -{ - DPRINT; - return m_layoutRows; -} - -/*! - InfoWidgetLayoutManager::setLayoutRows() -*/ -void InfoWidgetLayoutManager::setLayoutRows(int rows) -{ - DPRINT; - m_layoutRows = rows; -} - -/*! - InfoWidgetLayoutManager::rowHeight() -*/ -qreal InfoWidgetLayoutManager::rowHeight() const -{ - DPRINT; - HbStyle style; - qreal rowHeight; - - bool ok = style.parameter("hb-param-graphic-size-primary-small", - rowHeight); - if (!ok) { - DPRINT << ": ERROR! Paremeters reading failed!! Using default"; - rowHeight = 26.8; - } - - DPRINT << ": rowHeight: " << rowHeight; - return rowHeight; -} - -/*! - InfoWidgetLayoutManager::contentWidget() -*/ -QGraphicsWidget* InfoWidgetLayoutManager::contentWidget() -{ - DPRINT; - return getWidget(RoleContent); -} - -/*! - InfoWidgetLayoutManager::getWidget(); -*/ -QGraphicsWidget* InfoWidgetLayoutManager::getWidget(LayoutItemRole itemRole) -{ - DPRINT << ": item role: " << itemRole; - - QGraphicsWidget *widget = m_widgets.value(itemRole); - if (widget) { - DPRINT << ": widget: " << widget; - } - - return widget; -} - -/*! - InfoWidgetLayoutManager::removeWidget(); -*/ -void InfoWidgetLayoutManager::removeWidget(LayoutItemRole itemRole) -{ - DPRINT << ": item role: " << itemRole; - - QGraphicsWidget *widget = m_widgets.value(itemRole); - if (widget) { - DPRINT << ": removing widget: " << widget; - m_widgets.remove(itemRole); - delete widget; - } -} - -/*! - InfoWidgetLayoutManager::hideWidget(); -*/ -void InfoWidgetLayoutManager::hideWidget(LayoutItemRole itemRole) -{ - DPRINT << ": item role: " << itemRole; - - QGraphicsWidget *widget = m_widgets.value(itemRole); - if (widget) { - DPRINT << ": hiding widget: " << widget; - widget->hide(); - } -} - -/*! - InfoWidgetLayoutManager::hideAll(); -*/ -void InfoWidgetLayoutManager::hideAll() -{ - DPRINT << ": IN"; - - QMapIterator iterator(m_widgets); - while (iterator.hasNext()) { - iterator.next(); - QGraphicsWidget *widget = iterator.value(); - if (widget) { - widget->hide(); - } - } - - DPRINT << ": OUT"; -} - -/*! - InfoWidgetLayoutManager::showAll(); -*/ -void InfoWidgetLayoutManager::showAll() -{ - DPRINT << ": IN"; - - QMapIterator iterator(m_widgets); - while (iterator.hasNext()) { - iterator.next(); - QGraphicsWidget *widget = iterator.value(); - if (widget) { - widget->show(); - } - } - - DPRINT << ": OUT"; -} - -/*! - InfoWidgetLayoutManager::layoutInfoDisplay() -*/ -QGraphicsLayout* InfoWidgetLayoutManager::layoutInfoDisplay() -{ - DPRINT << ": IN"; - - hideAll(); - - m_displayRole = InfoDisplay; - m_widgets = m_infoDisplayWidgets; - - QGraphicsLayout *activeLayout(NULL); - DPRINT << ": getting content item and using its layout for activeLayout"; - QGraphicsWidget *content = getWidget(RoleContent); - if (content) { - DPRINT << ": content found, getting layout"; - activeLayout = content->layout(); - } - - DPRINT << ": OUT"; - return activeLayout; -} - -/*! - InfoWidgetLayoutManager::layoutSettingsDisplay() -*/ -QGraphicsLayout* InfoWidgetLayoutManager::layoutSettingsDisplay() -{ - DPRINT << ": IN"; - - hideAll(); - - m_displayRole = SettingsDisplay; - m_widgets = m_settingsDisplayWidgets; - - QGraphicsLayout *activeLayout(NULL); - DPRINT << ": getting content item and using its layout for activeLayout"; - QGraphicsWidget *content = getWidget(RoleContent); - if (content) { - DPRINT << ": content found, getting layout"; - activeLayout = content->layout(); - } - - DPRINT << ": OUT"; - return activeLayout; -} - -/*! - InfoWidgetLayoutManager::loadWidgets() -*/ -bool InfoWidgetLayoutManager::loadWidgets(const DisplayRole displayRole, - const QList &displayWidgets, - QMap &widgetMap) -{ - DPRINT << ": IN"; - 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"); - - DPRINT << ": document " << INFOWIDGET_DOCML_FILE << " loaded successfully"; - - QGraphicsWidget *widget(NULL); - LayoutItemRole currentWidgetRole; - - foreach (currentWidgetRole, displayWidgets) { - DPRINT << ": iterating displayWidgets, current role: " << static_cast(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!"; - } - } - - if (widgetMap.count() == displayWidgets.count()) { - DPRINT << ": all widgets loaded"; - loadResult = true; - } else { - DCRITICAL << ": error, all widgets were not loaded"; - } - - DPRINT << ": OUT"; - return loadResult; -} - -/*! - InfoWidgetLayoutManager::reloadWidgets() -*/ -bool InfoWidgetLayoutManager::reloadWidgets(const DisplayRole displayRole) -{ - QList displayWidgetRoles = widgetRoles(displayRole); - bool loadResult(false); - - switch (displayRole) { - case InfoDisplay: - loadResult = loadWidgets(displayRole, - displayWidgetRoles, - m_infoDisplayWidgets); - break; - case SettingsDisplay: // Fall through - default: - break; - } - return loadResult; -} - -/*! - InfoWidgetLayoutManager::loadWidget() - - Initialize loader with corresponding document file before calling this single widget loader utility -*/ -QGraphicsWidget* InfoWidgetLayoutManager::loadWidget(InfoWidgetDocumentLoader &loader, - DisplayRole displayRole, - LayoutItemRole widgetRole) -{ - DPRINT << ": IN"; - - QString widgetPrefix; - if (displayRole == InfoDisplay) { - widgetPrefix = LAYOUT_PREFIX_INFO_DISPLAY; - } else if (displayRole == SettingsDisplay) { - widgetPrefix = LAYOUT_PREFIX_SETTINGS_DISPLAY; - } - - QGraphicsWidget *widget(NULL); - QString widgetName = widgetPrefix; - - switch (widgetRole) - { - case RoleContent: - widgetName.append(LAYOUT_NAME_CONTENT); - break; - case RoleMcnMarqueeItem: - widgetName.append(LAYOUT_NAME_MCNMARQUEEITEM); - break; - case RoleSpnLabel: - widgetName.append(LAYOUT_NAME_SPNLABEL); - break; - case RoleSatMarqueeItem: - widgetName.append(LAYOUT_NAME_SATMARQUEEITEM); - break; - case RoleSpnIcon: - widgetName.append(LAYOUT_NAME_SPNICON); - break; - case RoleMcnIcon: - widgetName.append(LAYOUT_NAME_MCNICON); - break; - case RoleSatTextIcon: - widgetName.append(LAYOUT_NAME_SATTEXTICON); - break; - case RoleSpnCheckBox: - widgetName.append(LAYOUT_NAME_SPNCHECKBOX); - break; - case RoleMcnCheckBox: - widgetName.append(LAYOUT_NAME_MCNCHECKBOX); - break; - case RoleSatTextCheckBox: - widgetName.append(LAYOUT_NAME_SATTEXTCHECKBOX); - break; - case RoleOkButton: - widgetName.append(LAYOUT_NAME_OKBUTTON); - break; - case RoleContainer: - widgetName.append(LAYOUT_NAME_CONTAINER); - break; - case RoleSettingsContainer: - widgetName.append(LAYOUT_NAME_SETTINGSCONTAINER); - break; - - case RoleUndefined: // Fall through - default: - break; - } - - widget = qobject_cast(loader.findWidget(widgetName)); - if (!widget) { - DCRITICAL << ": ERROR, widget " << widgetName << " not found!"; - } - - DPRINT << ": OUT"; - return widget; -} - -/*! - InfoWidgetLayoutManager::widgetRoles() - - Returns supported widget roles for specific display -*/ -const QList InfoWidgetLayoutManager::widgetRoles( - DisplayRole displayRole) const -{ - DPRINT << ": IN"; - - QList widgetRoles; - - // Fill supported layout item roles for specific display - switch (displayRole) { - case SettingsDisplay: - widgetRoles.append(RoleContent); - widgetRoles.append(RoleSpnCheckBox); - widgetRoles.append(RoleMcnCheckBox); - widgetRoles.append(RoleSatTextCheckBox); - widgetRoles.append(RoleOkButton); - widgetRoles.append(RoleSettingsContainer); - break; - case InfoDisplay: - widgetRoles.append(RoleContent); - widgetRoles.append(RoleSpnIcon); - widgetRoles.append(RoleSpnLabel); - widgetRoles.append(RoleMcnIcon); - widgetRoles.append(RoleMcnMarqueeItem); - widgetRoles.append(RoleSatTextIcon); - widgetRoles.append(RoleSatMarqueeItem); - break; - default: - break; - } - - DPRINT << ": widgetRoles.count() : " << widgetRoles.count(); - DPRINT << ": OUT"; - return widgetRoles; -} - -// End of File. - -