diff -r 5de72ea7a065 -r 579cc610882e calendarui/views/dayview/src/calendayhourelement.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/views/dayview/src/calendayhourelement.cpp Tue Jul 06 14:14:56 2010 +0300 @@ -0,0 +1,143 @@ +/* +* 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: Day view control of calendar +* +*/ + +//System includes +#include +#include +#include +#include +#include +#include +#include + +//User includes +#include "calendayhourelement.h" +#include "calendaycontainer.h" +#include "calendayhourscrollarea.h" + +// Constants + +/*! + \brief CalenDayHourElement() + Constructor +*/ +CalenDayHourElement::CalenDayHourElement(const QTime &time, QGraphicsItem *parent) : + HbWidget(parent), mHour(time) +{ + // Necessary when widget implements own paint method + setFlag(QGraphicsItem::ItemHasNoContents, false); + + HbDeviceProfile deviceProfile; + mUnitInPixels = deviceProfile.unitValue(); + + mHourLineColor = HbColorScheme::color("qtc_cal_day_hour_lines"); + + //Create text items + HbExtendedLocale systemLocale = HbExtendedLocale::system(); + + //Get current time format and (if there's a need) separate time from am/pm text + QChar timeSeparator = ' '; + QStringList timeTextList = systemLocale.format(time, r_qtn_time_usual_with_zero).split( + timeSeparator); + + //prepend 0 if needed to achieve format - 01:00 + QString timeString = timeTextList[0]; + if (timeString.length() < 5) { + timeString.prepend('0'); + } + + QString ampmString = ""; + if (timeTextList.count() > 1) { + ampmString = timeTextList[1].toLower(); + } + + HbTextItem* timeTextItem = new HbTextItem(timeString, this); + HbTextItem* ampmTextItem = new HbTextItem(ampmString, this); + + HbStyle::setItemName(timeTextItem, QLatin1String("time")); + HbStyle::setItemName(ampmTextItem, QLatin1String("ampm")); + + mContainer = static_cast (parent); + +} + +/*! + \brief CalenDayHourElement() + Destructor +*/ +CalenDayHourElement::~CalenDayHourElement() +{ + +} + +/*! + \brief CalenDayHourElement() + paint +*/ +void CalenDayHourElement::paint( + QPainter * painter, + const QStyleOptionGraphicsItem * option, + QWidget * widget) +{ + Q_UNUSED(widget); + + QRectF drawArea = option->rect; + + const qreal hourLineThickness = 0.15; //un (according to UI spec) + const qreal timeLineThickness = 0.75; //un (according to UI spec) + + painter->save(); + + //Draw full hour line + QPen linePen = QPen(mHourLineColor, hourLineThickness * mUnitInPixels); + painter->setPen(linePen); + QLineF fullHourLine(drawArea.bottomLeft(), drawArea.bottomRight()); + + painter->drawLine(fullHourLine); + + //Draw extra line on top for midnight + if (mHour.hour() == 0) { + fullHourLine = QLineF(drawArea.topLeft(), drawArea.topRight()); + painter->drawLine(fullHourLine); + } + + QDateTime currentDateTime = QDateTime::currentDateTime(); + + //Draw the time line in theme color + if (mContainer) { + QDateTime containersDateTime = mContainer->dateTime(); + + if (currentDateTime.date() == containersDateTime.date() && currentDateTime.time().hour() + == mHour.hour()) { + + qreal currentTimeY = drawArea.height() * currentDateTime.time().minute() / 60; + + QColor color = HbColorScheme::color("qtc_cal_month_current_day"); + + painter->setPen(QPen(color, timeLineThickness * mUnitInPixels, Qt::SolidLine, + Qt::FlatCap)); + QLineF currentTimeline(drawArea.left(), drawArea.top() + currentTimeY, drawArea.right(), drawArea.top() + + currentTimeY); + painter->drawLine(currentTimeline); + + } + } + + painter->restore(); +} + +// End of File