diff -r f979ecb2b13e -r c198609911f9 clock/clockui/clockwidget/src/digitalclock.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clock/clockui/clockwidget/src/digitalclock.cpp Fri Apr 16 14:57:40 2010 +0300 @@ -0,0 +1,273 @@ +/* +* 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: +* +*/ + +// digitalclock.cpp + +#include +#include +#include +#include + +#include +#include +#include + +#include "digitalclock.h" + +DigitalClock::DigitalClock(QGraphicsWidget *parent) +:HbWidget(parent), +m24HourFormat(false) +{ + constructImages(); +} + +DigitalClock::~DigitalClock() +{ + // No implementation yet. +} + +void DigitalClock::updateDisplay() +{ + QTime currentTime = QTime::currentTime(); + int currentHour, currentMin; + if (!m24HourFormat && currentTime.hour() > 12) { + currentHour = currentTime.hour() % 12; + } else { + currentHour = currentTime.hour(); + } + currentMin = currentTime.minute(); + + int numAt1, numAt2, numAt3, numAt4; + numAt1 = currentHour / 10; + numAt2 = currentHour % 10; + numAt3 = currentMin / 10; + numAt4 = currentMin % 10; + + // The first digit. + if (m24HourFormat) { + switch (numAt1) { + case 0: + mPositionOne->setIconName(":/clock/digit_zero"); + break; + case 1: + mPositionOne->setIconName(":/clock/digit_one"); + break; + case 2: + mPositionOne->setIconName(":/clock/digit_two"); + break; + default: + break; + } + } else { + switch (numAt1) { + case 0: + mPositionOne->setIconName(":/clock/digit_zero"); + break; + case 1: + mPositionOne->setIconName(":/clock/digit_one"); + break; + default: + break; + } + } + + // The second digit. + switch(numAt2) { + case 0: + mPositionTwo->setIconName(":/clock/digit_zero"); + break; + case 1: + mPositionTwo->setIconName(":/clock/digit_one"); + break; + case 2: + mPositionTwo->setIconName(":/clock/digit_two"); + break; + case 3: + mPositionTwo->setIconName(":/clock/digit_three"); + break; + case 4: + mPositionTwo->setIconName(":/clock/digit_four"); + break; + case 5: + mPositionTwo->setIconName(":/clock/digit_five"); + break; + case 6: + mPositionTwo->setIconName(":/clock/digit_six"); + break; + case 7: + mPositionTwo->setIconName(":/clock/digit_seven"); + break; + case 8: + mPositionTwo->setIconName(":/clock/digit_eight"); + break; + case 9: + mPositionTwo->setIconName(":/clock/digit_nine"); + break; + default: + break; + } + + // The separator. + mSeperator->setIconName(":/clock/sep_colon"); + // Start the blinking effect. + HbEffect::start(mSeperator, "fade_out", this, "fadeBackIn"); + + // The third digit. + switch (numAt3) { + case 0: + mPositionThree->setIconName(":/clock/digit_zero"); + break; + case 1: + mPositionThree->setIconName(":/clock/digit_one"); + break; + case 2: + mPositionThree->setIconName(":/clock/digit_two"); + break; + case 3: + mPositionThree->setIconName(":/clock/digit_three"); + break; + case 4: + mPositionThree->setIconName(":/clock/digit_four"); + break; + case 5: + mPositionThree->setIconName(":/clock/digit_five"); + break; + case 6: + mPositionThree->setIconName(":/clock/digit_six"); + break; + case 7: + mPositionThree->setIconName(":/clock/digit_seven"); + break; + case 8: + mPositionThree->setIconName(":/clock/digit_eight"); + break; + case 9: + mPositionThree->setIconName(":/clock/digit_nine"); + break; + default: + break; + } + + // The fourth digit. + switch (numAt4) { + case 0: + mPositionFour->setIconName(":/clock/digit_zero"); + break; + case 1: + mPositionFour->setIconName(":/clock/digit_one"); + break; + case 2: + mPositionFour->setIconName(":/clock/digit_two"); + break; + case 3: + mPositionFour->setIconName(":/clock/digit_three"); + break; + case 4: + mPositionFour->setIconName(":/clock/digit_four"); + break; + case 5: + mPositionFour->setIconName(":/clock/digit_five"); + break; + case 6: + mPositionFour->setIconName(":/clock/digit_six"); + break; + case 7: + mPositionFour->setIconName(":/clock/digit_seven"); + break; + case 8: + mPositionFour->setIconName(":/clock/digit_eight"); + break; + case 9: + mPositionFour->setIconName(":/clock/digit_nine"); + break; + default: + break; + } + + if (!m24HourFormat) { + mAmPmLabel->setPlainText(currentTime.toString("ap")); + } else { + mAmPmLabel->setPlainText(("")); + } +} + +void DigitalClock::fadeBackIn(const HbEffect::EffectStatus &status) +{ + Q_UNUSED(status) + + HbEffect::start(mSeperator, "fade_in"); +} + +void DigitalClock::constructImages() +{ + mDummyWidget = new QGraphicsWidget(this); + mWidgetLayout = new QGraphicsLinearLayout(Qt::Vertical); + mDigitalClockLayout = + new QGraphicsLinearLayout(Qt::Horizontal, mDummyWidget); + + // The icon at the first position. + mPositionOne = new HbIconItem(QString(), mDummyWidget); + mPositionOne->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + mDigitalClockLayout->addItem(mPositionOne); + + // The icon at the second position. + mPositionTwo = new HbIconItem(QString(), mDummyWidget); + mPositionTwo->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + mDigitalClockLayout->addItem(mPositionTwo); + + // The icon for separator. + mSeperator = new HbIconItem(QString(), mDummyWidget); + mSeperator->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + mDigitalClockLayout->addItem(mSeperator); + + // The icon at the third position. + mPositionThree = new HbIconItem(QString(), mDummyWidget); + mPositionThree->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + mDigitalClockLayout->addItem(mPositionThree); + + // The icon at the fourth position. + mPositionFour = new HbIconItem(QString(), mDummyWidget); + mPositionFour->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); + mDigitalClockLayout->addItem(mPositionFour); + + mDummyWidget->setLayout(mDigitalClockLayout); + + mAmPmLabel = new HbLabel((""), this); + //mAmPmLabel->setLogicalFont(Hb::FontPrimarySmall); + mAmPmLabel->setAlignment(Qt::AlignRight); + + mWidgetLayout->addItem(mDummyWidget); + mWidgetLayout->addItem(mAmPmLabel); + + QGraphicsLinearLayout *layout = + new QGraphicsLinearLayout(Qt::Horizontal, this); + layout->addStretch(100); + layout->addItem(mWidgetLayout); + layout->addStretch(100); + + setLayout(layout); + + // Add the blinking effect to the separator. + HbEffect::add(mSeperator, + QString(":/clock/fade_out.fxml"), + "fade_out"); + HbEffect::add(mSeperator, + QString(":/clock/fade_in.fxml"), + "fade_in"); +} + +// End of file