diff -r 96907930389d -r 12af337248b1 clock/clockui/clockwidget/clockwidgetimpl/src/digitalclockwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock/clockui/clockwidget/clockwidgetimpl/src/digitalclockwidget.cpp Tue Aug 31 15:13:43 2010 +0300 @@ -0,0 +1,176 @@ +/* +* Copyright (c) 2010 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: DigitalClockWidget +* +*/ + +// System includes +#include +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "digitalclockwidget.h" +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "digitalclockwidgetTraces.h" +#endif + + +// Constants +const int clockUpdateInterval (60000); // msec + +/*! + \class DigitalClockWidget + + This class implements the digitalclock widget which gets displayed + in the clockmainview when the clocktype is set to digital type. +*/ + +/*! + Constructor. + \param useAmPm bool for setting 12 hour format + \param parent The parent of type QGraphicsItem. +*/ +DigitalClockWidget::DigitalClockWidget(bool useAmPm, QGraphicsItem *parent) + : HbWidget(parent), + mUseAmPm(useAmPm) +{ + OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_DIGITALCLOCKWIDGET_ENTRY ); + bool result = HbStyleLoader::registerFilePath(":/resource/digitalclockwidget.widgetml"); + result = HbStyleLoader::registerFilePath(":/resource/digitalclockwidget.css"); + result = HbStyleLoader::registerFilePath(":/resource/digitalclockwidget_color.css"); + + createPrimitives(); + + mTimer = new QTimer(this); + connect(mTimer, SIGNAL(timeout()), SLOT(tick())); + + QTime time = QTime::currentTime(); + int initialIntervalTime = (clockUpdateInterval - ( time.msec() + (time.second() * 1000))); + mTimer->start(initialIntervalTime); + +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_DIGITALCLOCKWIDGET_EXIT ); +} + +/*! + Destructor. +*/ +DigitalClockWidget::~DigitalClockWidget() +{ + OstTraceFunctionEntry0( DUP1_DIGITALCLOCKWIDGET_DIGITALCLOCKWIDGET_ENTRY ); + mTimer->stop(); + HbStyleLoader::unregisterFilePath(":/resource/digitalclockwidget.widgetml"); + HbStyleLoader::unregisterFilePath(":/resource/digitalclockwidget.css"); + HbStyleLoader::unregisterFilePath(":/resource/digitalclockwidget_color.css"); + +OstTraceFunctionExit0( DUP1_DIGITALCLOCKWIDGET_DIGITALCLOCKWIDGET_EXIT ); +} + +/*! + Updates clock visualization according to current time + */ +void DigitalClockWidget::tick() +{ + OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_TICK_ENTRY ); + mTimer->setInterval(clockUpdateInterval); + updatePrimitives(); + update(); +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_TICK_EXIT ); +} + +/*! + Toggles time format + */ +void DigitalClockWidget::setAmPm(bool useAmPm) +{ + OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_SETAMPM_ENTRY ); + + bool old = mUseAmPm; + mUseAmPm = useAmPm; + + if (mUseAmPm != old) { // change am/pm label + QTime time = QTime::currentTime(); + QString timeString; + if (mUseAmPm) { + mAmPmLabel->setText(time.toString("ap")); // set am/pm label + } else { + mAmPmLabel->setText(""); // set am/pm label as null + } + } + +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_SETAMPM_EXIT ); +} + +/*! + @copydoc HbWidget::resizeEvent() + */ +void DigitalClockWidget::resizeEvent(QGraphicsSceneResizeEvent *event) +{ + OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_RESIZEEVENT_ENTRY ); + HbWidget::resizeEvent(event); +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_RESIZEEVENT_EXIT ); +} + +/*! + Creates all widget primitives. + */ +void DigitalClockWidget::createPrimitives() +{ + OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_CREATEPRIMITIVES_ENTRY ); + mClockLabel = new HbTextItem(this); + mClockLabel->setTextWrapping( Hb::TextNoWrap ); + HbStyle::setItemName(mClockLabel, QLatin1String("clockLabel")); + + mAmPmLabel = new HbTextItem(this); + mClockLabel->setTextWrapping( Hb::TextNoWrap ); + HbStyle::setItemName(mAmPmLabel, QLatin1String("amPmLabel")); +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_CREATEPRIMITIVES_EXIT ); +} + +/*! + @copydoc HbWidget::updatePrimitives() + updates all widget primitives + */ +void DigitalClockWidget::updatePrimitives() +{ +OstTraceFunctionEntry0( DIGITALCLOCKWIDGET_UPDATEPRIMITIVES_ENTRY ); + + QTime time = QTime::currentTime(); + QString timeString; + + if (mUseAmPm) { + timeString = time.toString("hh:ap"); // covert time in 12 hours format + timeString = timeString.section(":", 0, 0); // it would remove :ap section from timeString + mAmPmLabel->setText(time.toString("ap")); // set am/pm label + } else { + mAmPmLabel->setText(""); // set am/pm label as null + timeString = time.toString("hh"); // append hour part + } + + int index(1); + HbExtendedLocale locale; + QChar timeSeparator(locale.timeSeparator(index)) ; + timeString.append(timeSeparator); // append time separator + timeString.append(time.toString("mm")); //append minute part + + mClockLabel->setText(timeString); + +OstTraceFunctionExit0( DIGITALCLOCKWIDGET_UPDATEPRIMITIVES_EXIT ); +}