phoneplugins/infowidgetplugin/infowidgetprovider/infowidget/src/infowidget.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 16 Apr 2010 14:58:25 +0300
changeset 22 6bb1b21d2484
child 27 2f8f8080a020
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
 * 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 "infowidget.h"

#include <hbanchorlayout.h>
#include <hbiconitem.h>
#include <hbmarqueeitem.h>
#include <hbfontspec.h>
#include <hbdialog.h>
#include <hblabel.h>
#include <hbaction.h>
#include <hbcheckbox.h>
#include <hbpushbutton.h>
#include <hbevent.h>
#include <hbcolorscheme.h>
#include <QPainter>
#include <QPainterPath>
#include <QBrush>
#include <QGraphicsLinearLayout>
#include <QApplication>
#include <QLocale>
#include <QTranslator>
#include "infowidgetlogging.h"
#include "infowidgetengine.h"
#include "infowidgetlayoutmanager.h"
#include "infowidgetpreferences.h"

const int INFOWIDGET_LINE_WIDTH = 0; 
const int INFOWIDGET_MARGIN = 5;
const int INFOWIDGET_ROUNDING = 15;


/*!
    InfoWidget::InfoWidget() 
*/
InfoWidget::InfoWidget(QGraphicsItem* parent, Qt::WindowFlags flags)
    : HbWidget(parent, flags),
    m_engine(NULL), 
    m_preferences(NULL),
    m_layoutManager(NULL),
    m_layout(NULL),
    m_layoutChanging(false),
    m_isDragEvent(false)
{
    INSTALL_TRACE_MSG_HANDLER; 
    
    DPRINT << ": IN";
    
    // Localization file loading
    QTranslator translator; 
    QString lang = QLocale::system().name();
    QString path = "z:/resource/qt/translations/";
    DPRINT << ": loading translation: " << QString(path + "operator_widget_" + lang);
    bool translatorLoaded = translator.load(path + "operator_widget_" + lang);
    DPRINT << ": translator loaded: " << translatorLoaded; 
    if (translatorLoaded) {
        qApp->installTranslator(&translator);
        DPRINT << ": translator installed"; 
    }
    
    m_layoutManager = new InfoWidgetLayoutManager(this);
    Q_ASSERT(m_layoutManager); 
    
    // Create network engine  
    m_engine = new InfoWidgetEngine(this); 

    // Create widget preference handler 
    m_preferences = new InfoWidgetPreferences(this);

    DPRINT << ": reading preferences from meta-object properties";
    initializePreferences();

    // Create widget main layout 
    m_layout = new QGraphicsLinearLayout;    
    m_layout->setSpacing(0); 
    m_layout->setContentsMargins(0,0,0,0); 
    
    // Layout info display
    layoutInfoDisplay();

    setLayout(m_layout);

    // Read initial data from model
    updateInfoDisplay(); 
    
    QObject::connect(m_engine, SIGNAL(modelChanged()), 
            this, SLOT(readModel())); 
    
    m_backGroundColor = HbColorScheme::color("popupbackground");

    DPRINT << ": OUT";
}

/*!
    InfoWidget::~InfoWidget() 
*/
InfoWidget::~InfoWidget()
{
    DPRINT << ": IN"; 
    
    // Clean layout container, 
    // layout manager handles layout item cleanup
    for (int i=0; i < m_layout->count(); i++) {
        DPRINT << ": item(" << i << ") removed from layout";
        m_layout->removeAt(i);
        } 
    
    DPRINT << ": OUT"; 
    UNINSTALL_TRACE_MSG_HANDLER;
}

/*!
    InfoWidget::boundingRect() const
*/
QRectF InfoWidget::boundingRect() const
{
    DPRINT;
    
    QRectF rectF = rect();
    rectF.adjust(-INFOWIDGET_MARGIN, -INFOWIDGET_MARGIN, 
            INFOWIDGET_MARGIN, INFOWIDGET_MARGIN);
    
    return rectF;
}

/*!
    InfoWidget::shape() const
    Return shape
*/
QPainterPath InfoWidget::shape() const
{
    DPRINT;    
    
    QPainterPath path;
    path.addRoundRect(boundingRect(), INFOWIDGET_ROUNDING, INFOWIDGET_ROUNDING);
    return path;
}

/*!
    InfoWidget::sizeHint() 
*/
QSizeF InfoWidget::sizeHint(Qt::SizeHint which, const QSizeF & constraint) const   
{
    Q_UNUSED(which);
    Q_UNUSED(constraint); 
    
    QSizeF requiredSize(70,160);
    
    // Try to get size hint from docml content, if not found use default  
    // size preference 
    if (m_layoutManager->currentDisplayRole() == 
                InfoWidgetLayoutManager::InfoDisplay) {
        if (m_layoutManager->contentWidget()) {
            requiredSize = m_layoutManager->contentWidget()->minimumSize();
            }
    }
    else if (m_layoutManager->currentDisplayRole() == 
            InfoWidgetLayoutManager::SettingsDisplay) {
        requiredSize = QSizeF(250,250);
        if (m_layoutManager->contentWidget()) {
            requiredSize = m_layoutManager->contentWidget()->preferredSize();
            }
    } 

    DPRINT << ": returning size: " << requiredSize;
    return requiredSize; 
}

/*!
    InfoWidget::sizePolicy() 
*/
QSizePolicy InfoWidget::sizePolicy () const 
{
    DPRINT;

    // Size tells the exact size for the widget    
    return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); 
}

/*!
    InfoWidget::onInitialize() 
*/
void InfoWidget::onInitialize()
{
    DPRINT << ": IN";
    
    // Initialize preferences from meta-object data 
    // set by homescreen framework. Homescreen framework 
    // has restored the properties before calling onInitialize  
    DPRINT << ": reading preferences from meta-object properties";
    initializePreferences();
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::onUninitialize() 
*/
void InfoWidget::onUninitialize()
{
    DPRINT;
}

/*!
    InfoWidget::onShow() 
*/
void InfoWidget::onShow()
{
    DPRINT;
}

/*!
    InfoWidget::onHide() 
*/
void InfoWidget::onHide()
{
    DPRINT;
}

/*!
    InfoWidget::updateItemsVisibility() 
*/
void InfoWidget::updateItemsVisibility()
{
    DPRINT <<": IN"; 
    int layoutRows = 0; 
    QList<QGraphicsWidget *> widgetsToHide; 
    
    // Update layout according to item visibility settings
    // 1. read visible items
    if (m_preferences->preference(InfoWidgetPreferences::DisplayHomeZone).compare(
            DISPLAY_SETTING_ON) == 0) {
        layoutRows++;
    } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleHomeZoneLabel); 
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleHomeZoneIcon); 
    }
    
    if (m_preferences->preference(InfoWidgetPreferences::DisplayMcn).compare(
            DISPLAY_SETTING_ON) == 0) {
        layoutRows++;
    } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleMcnMarqueeItem); 
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleMcnIcon); 
    }

    if (m_preferences->preference(InfoWidgetPreferences::DisplayActiveLine).compare(
            DISPLAY_SETTING_ON) == 0) {
        layoutRows++;
    } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleActiveLineLabel); 
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleActiveLineIcon); 
    }
    
    if (m_preferences->preference(InfoWidgetPreferences::DisplaySatText).compare(
            DISPLAY_SETTING_ON) == 0) {
        layoutRows++;
    } else if (m_layoutManager->currentDisplayRole() != InfoWidgetLayoutManager::SettingsDisplay) {
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleSatTextLabel); 
        m_layoutManager->hideWidget(InfoWidgetLayoutManager::RoleSatTextIcon); 
    }
    
    DPRINT << ": visible layout rows count: " << layoutRows;
    m_layoutManager->setLayoutRows(layoutRows);
}

/*!
    InfoWidget::layoutInfoDisplay()
    
    Layout info display    
*/
void InfoWidget::layoutInfoDisplay()
{  
    startChanges(); 
    
    QGraphicsLayout *infoDisplayLayout = 
        m_layoutManager->layoutInfoDisplay(); 
    
    DPRINT << ": IN";
    if (infoDisplayLayout) {
        DPRINT << ": infoDisplayLayout has been returned from layout manager";

        QGraphicsWidget *contentWidget = m_layoutManager->contentWidget();
        if (contentWidget) {
            DPRINT << ": contentWidget has been returned from layout manager";
            
            // Remove old data from layout. 
            for (int i=0; i < m_layout->count(); i++) {
                DPRINT << ": item(" << i << ") removed from layout";
                m_layout->removeAt(i);
                } 
            
            // Add content widget to main layout 
            m_layout->addItem(contentWidget);
            
            resize(contentWidget->preferredSize()); 
        }       
    }
    
    m_layoutManager->showAll(); 
    updateItemsVisibility(); 

    endChanges(); 
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::layoutSettingsDisplay()
    
    Switch to settings display layout   
*/
void InfoWidget::layoutSettingsDisplay()
{  
    startChanges(); 
    
    QGraphicsLayout *settingDisplayLayout = 
        m_layoutManager->layoutSettingsDisplay(); 
    
    DPRINT << ": IN";
    if (settingDisplayLayout) {
        DPRINT << ": settingDisplayLayout has been returned from layout manager";

        QGraphicsWidget *contentWidget = m_layoutManager->contentWidget();
        if (contentWidget) {
            DPRINT << ": contentWidget has been returned from layout manager";
                
            // Remove old data from layout. 
            for (int i=0; i < m_layout->count(); i++) {
                DPRINT << ": item(" << i << ") removed from layout";
                m_layout->removeAt(i);
                } 
            
            // Add content widget to main layout 
            m_layout->addItem(contentWidget); 

            resize(contentWidget->preferredSize()); 
        }
        
        // Connect settings display widget signals 
        initializeSettingsDisplayItems(); 
    }
     
    m_layoutManager->showAll(); 

    endChanges(); 
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::initializeInfoDisplayItems()
*/
void InfoWidget::initializeInfoDisplayItems()
{  
    DPRINT;
}

/*!
    InfoWidget::initializeSettingsDisplayItems()
    
    Set up initial check box states, lock check boxes 
    if needed and connect signals to local slots  
*/
void InfoWidget::initializeSettingsDisplayItems()
{  
    DPRINT << ": IN";
    
    HbPushButton *okButton = qobject_cast<HbPushButton *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleOkButton));
    if (okButton) {
        DPRINT << ": okButton has been returned from layout manager, connecting signal";
        QObject::connect(okButton, SIGNAL(clicked()), 
                this, SLOT(settingsEditingFinished())); 
    }

    // Connect display setting check boxes
    HbCheckBox *homeZoneBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleHomeZoneCheckBox));
    if (homeZoneBox) {
        DPRINT << ": homeZoneBox has been returned from layout manager, initializing";
        // Make checkable when home zone display is supported
        homeZoneBox->setCheckable(false); 
        QObject::connect(homeZoneBox, SIGNAL(stateChanged(int)), 
                this, SLOT(homeZoneDisplaySettingChanged(int))); 
    }
    
    HbCheckBox *mcnCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleMcnCheckBox));
    if (mcnCheckBox) {
        mcnCheckBox->setChecked(true);
        
        DPRINT << ": mcnCheckBox has been returned from layout manager, connecting signal";
        QObject::connect(mcnCheckBox, SIGNAL(stateChanged(int)), 
                this, SLOT(mcnDisplaySettingChanged(int))); 
    }
    
    HbCheckBox *activeLineCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleActiveLineCheckBox));
    if (activeLineCheckBox) {
        // Make checkable when active line display is supported
        activeLineCheckBox->setCheckable(false); 

        DPRINT << ": activeLineCheckBox has been returned from layout manager, connecting signal";
        QObject::connect(activeLineCheckBox, SIGNAL(stateChanged(int)), 
                this, SLOT(activeLineDisplaySettingChanged(int))); 
    }
    
    HbCheckBox *satTextCheckBox = qobject_cast<HbCheckBox *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleSatTextCheckBox));
    if (satTextCheckBox) {
        // Make checkable when sat text display is supported
        satTextCheckBox->setCheckable(false); 

        DPRINT << ": satTextCheckBox has been returned from layout manager, connecting signal";
        QObject::connect(satTextCheckBox, SIGNAL(stateChanged(int)), 
                this, SLOT(satDisplaySettingChanged(int))); 
    }
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::updateInfoDisplay() 
*/
void InfoWidget::updateInfoDisplay()
{
    DPRINT; 
    
    QString text;
    InfoWidgetEngine::ModelData modelData = m_engine->modelData(); 

    HbLabel *homeZoneLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleHomeZoneLabel));
    if (homeZoneLabel && 
            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
        text = modelData.homeZoneTextTag(); 
        homeZoneLabel->setPlainText(text);
    }        
    
    HbMarqueeItem *mcnMarqueeItem = qobject_cast<HbMarqueeItem *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleMcnMarqueeItem));
    if (mcnMarqueeItem && 
            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
        text = modelData.mcnName(); 
        if (text.length()) {
            mcnMarqueeItem->setText(text);
                
            // Set marquee animation looping mode to infinite
            mcnMarqueeItem->setLoopCount(-1); 
            
            // Finally, start marquee animation
            DPRINT << ": mcnMarqueeItem->isAnimating()"; 
            if (!mcnMarqueeItem->isAnimating()) {
                DPRINT << ": mcnMarqueeItem->startAnimation()";   
                mcnMarqueeItem->startAnimation();
            }
        }
    }

    HbLabel *activeLineLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleActiveLineLabel));
    if (activeLineLabel && 
            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {
        text.setNum(modelData.activeLine());
        text.insert(0, hbTrId("Line: "));
    
        if (text.length()) {
            activeLineLabel->setPlainText(text);
        }
    }    

    HbLabel *satTextLabel = qobject_cast<HbLabel *>(m_layoutManager->getWidget(
            InfoWidgetLayoutManager::RoleSatTextLabel));
    if (satTextLabel && 
            m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) {

        text = modelData.satDisplayText(); 

        if (text.length()) {
            satTextLabel->setPlainText(text);
        }
    }    

}

/*!
    InfoWidget::readModel() 
    
    Read model data. Model's modelChanged - signal is connected to this slot.  
*/
void InfoWidget::readModel()
{
    DPRINT << ": IN"; 

    if (m_layoutManager->currentDisplayRole() == InfoWidgetLayoutManager::InfoDisplay) { 
        updateInfoDisplay(); 
    }
    DPRINT << ": OUT";
}

/*!
    InfoWidget::handleModelError() 
    
    Model error signal is connected to this slot 
*/
void InfoWidget::handleModelError(int operation,int errorCode)
{
    Q_UNUSED(operation); 
    Q_UNUSED(errorCode); 
    DPRINT;
}

/*!
    InfoWidget::paint() 
*/
void InfoWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(option); 
    Q_UNUSED(widget);
    DPRINT;

    if (!m_layoutChanging) {
        QBrush brush(Qt::white); 
        if (m_backGroundColor.isValid()) {
            brush.setColor(m_backGroundColor);
        }
        QRectF drawRect = boundingRect(); 
        drawRect.adjust( INFOWIDGET_LINE_WIDTH, INFOWIDGET_LINE_WIDTH, 
                         -INFOWIDGET_LINE_WIDTH, -INFOWIDGET_LINE_WIDTH );
        
        QPainterPath path;
        path.addRoundRect(drawRect, INFOWIDGET_ROUNDING, INFOWIDGET_ROUNDING);
    
        painter->save();
        painter->fillPath(path, brush);
        painter->restore();
    }
}

/*!
    InfoWidget::mousePressEvent() 
*/

void InfoWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    Q_UNUSED(event);
    DPRINT; 
    
    // Initialize flag 
    m_isDragEvent = false; 
    
    DPRINT; 
}

/*!
    InfoWidget::mouseReleaseEvent() 
*/
void InfoWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
    Q_UNUSED(event);

    // If in info display and widget wasn't dragged 
    // change to settings display
    if ((!m_isDragEvent) && 
          m_layoutManager->currentDisplayRole() == 
                  InfoWidgetLayoutManager::InfoDisplay) {
        DPRINT << ": layout settings display";
        layoutSettingsDisplay(); 
    }
    
    m_isDragEvent = false; 
}

/*!
    InfoWidget::mouseMoveEvent() 
*/
void InfoWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
    Q_UNUSED(event);
    
    // Mouse is moving after mouse press event
    m_isDragEvent = true; 
}

/*!
    InfoWidget::homeZoneDisplaySettingChanged() 
*/
void InfoWidget::homeZoneDisplaySettingChanged(int state)
{
    DPRINT << ": state: " << state;
    if (state == Qt::Checked){
        m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, DISPLAY_SETTING_ON);
    } else {
        m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, DISPLAY_SETTING_OFF);
    }
}

/*!
    InfoWidget::mcnDisplaySettingChanged() 
*/
void InfoWidget::mcnDisplaySettingChanged(int state)
{
    DPRINT << ": state: " << state; 
    if (state == Qt::Checked){
        m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, DISPLAY_SETTING_ON);
    } else {
        m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, DISPLAY_SETTING_OFF);
    }
}

/*!
    InfoWidget::activeLineDisplaySettingChanged() 
*/
void InfoWidget::activeLineDisplaySettingChanged(int state)
{
    DPRINT << ": state: " << state; 
    if (state == Qt::Checked){
        m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, DISPLAY_SETTING_ON);
    } else {
        m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, DISPLAY_SETTING_OFF);
    }
}

/*!
    InfoWidget::satDisplaySettingChanged() 
*/
void InfoWidget::satDisplaySettingChanged(int state)
{
    DPRINT << ": state: " << state; 
    if (state == Qt::Checked){
        m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, DISPLAY_SETTING_ON);
    } else {
        m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, DISPLAY_SETTING_OFF);
    }
}

/*!
    InfoWidget::mcnDisplay() 
    
    Getter function for Meta-object property "mcnDisplay"
*/
QString InfoWidget::mcnDisplay()
{
    DPRINT; 
    return m_preferences->preference(InfoWidgetPreferences::DisplayMcn); 
}

/*!
    InfoWidget::setMcnDisplay() 
    
    Setter function for Meta-object property "mcnDisplay"
*/
void InfoWidget::setMcnDisplay(QString value)
{
    DPRINT;
    m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, value);
    }

/*!
    InfoWidget::homeZoneDisplay() 
    
    Getter function for Meta-object property "homeZoneDisplay"
*/
QString InfoWidget::homeZoneDisplay()
{
    DPRINT; 
    return m_preferences->preference(InfoWidgetPreferences::DisplayHomeZone); 
}

/*!
    InfoWidget::setHomeZoneDisplay()
    
    Setter function for Meta-object property "homeZoneDisplay" 
*/
void InfoWidget::setHomeZoneDisplay(QString value)
{
    DPRINT; 
    m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, value);
}

/*!
    InfoWidget::activeLineDisplay() 
    
    Getter function for Meta-object property "activeLineDisplay"
*/
QString InfoWidget::activeLineDisplay()
{
    DPRINT; 
    return m_preferences->preference(InfoWidgetPreferences::DisplayActiveLine);
}

/*!
    InfoWidget::setActiveLineDisplay() 
    
    Setter function for Meta-object property "activeLineDisplay"
*/
void InfoWidget::setActiveLineDisplay(QString value)
{
    DPRINT; 
    m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, value);
}

/*!
    InfoWidget::satDisplay()
    
    Getter function for Meta-object property "satDisplay" 
*/
QString InfoWidget::satDisplay()
{
    DPRINT; 
    return m_preferences->preference(InfoWidgetPreferences::DisplaySatText);
}

/*!
    InfoWidget::setSatDisplay()
    
    Setter function for Meta-object property "satDisplay" 
*/
void InfoWidget::setSatDisplay(QString value)
{
    DPRINT;
    m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, value);
}

/*!
    InfoWidget::initializePreferences()
    
    Read initial Meta-object properties and store to preference handler. 
    Restores preferences from previous session.   
*/
void InfoWidget::initializePreferences()
{
    DPRINT << ": IN";
    QString propertyValue;
    
    propertyValue = QObject::property("homeZoneDisplay").toString();
    m_preferences->setPreference(InfoWidgetPreferences::DisplayHomeZone, 
            propertyValue);
    
    propertyValue = QObject::property("mcnDisplay").toString();
    m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, 
            propertyValue);
    
    propertyValue = QObject::property("activeLineDisplay").toString();
    m_preferences->setPreference(InfoWidgetPreferences::DisplayActiveLine, 
            propertyValue);
    
    propertyValue = QObject::property("satDisplay").toString();
    m_preferences->setPreference(InfoWidgetPreferences::DisplaySatText, 
            propertyValue);

    // Check that at least one item is set visible. If not 
    // set default item(s) visible. TBD which items and how selected.   
    if (m_preferences->visibleItemCount() == 0) {
        DPRINT << ": no visible items initially, setting MCN on by default"; 
        m_preferences->setPreference(InfoWidgetPreferences::DisplayMcn, 
                DISPLAY_SETTING_ON);
    }
        
    DPRINT << ": OUT"; 
}

/*!
    InfoWidget::settingsEditingFinished()
*/
void InfoWidget::settingsEditingFinished()
{
    DPRINT << ": IN";
    
    layoutInfoDisplay();
    
    updateInfoDisplay(); 
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::startChanges()
*/
void InfoWidget::startChanges()
{
    DPRINT << ": IN";
    
    m_layoutChanging = true;
    
    DPRINT << ": OUT";
}

/*!
    InfoWidget::endChanges()
*/
void InfoWidget::endChanges()
{
    DPRINT << ": IN";
    
    m_layoutChanging = false;
    
    DPRINT << ": OUT";
}

/*!
   \reimp
*/
void InfoWidget::changeEvent(QEvent *event)
{
   DPRINT << ": IN";
   
   if (event->type() == HbEvent::ThemeChanged) {
       m_backGroundColor = HbColorScheme::color("popupbackground");
   }
   HbWidget::changeEvent( event );
   
   DPRINT << ": OUT";
}

// End of File.