diff -r f979ecb2b13e -r c198609911f9 calendarui/views/src/calengriditemprototype.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/views/src/calengriditemprototype.cpp Fri Apr 16 14:57:40 2010 +0300 @@ -0,0 +1,174 @@ +/* + * 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: Definition file for class CalenGridItemPrototype. + * + */ + +// System includes +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "calengriditemprototype.h" +#include "calengriditem.h" +#include "calencommon.h" + +#define GRIDLINE_WIDTH 0.075 //units +/*! + \class CalenGridItemPrototype + + Prototype class for HbGridView. + */ + +/*! + Constructor. + */ +CalenGridItemPrototype::CalenGridItemPrototype(QGraphicsWidget *parent) : + HbAbstractViewItem(parent), + mLayout(0), + mCurrentDateColor(Qt::black), + mGridBorderColor(Qt::gray), + mIsSeventhColumn(false) + { + // Nothing yet. + } + +/*! + From HbAbstractViewItem. + + \return CalenGridItemPrototype* Pointer to the constructed object. + \sa HbAbstractViewItem, HbGridViewItem + */ +HbAbstractViewItem *CalenGridItemPrototype::createItem() +{ + CalenGridItemPrototype *item = new CalenGridItemPrototype(); + item->createItemLayout(); + return item; +} + +/*! + From HbAbstractViewItem. + + \sa HbAbstractViewItem, HbGridViewItem + */ +void CalenGridItemPrototype::updateChildItems() +{ + // Here update content of each item. + + QVariant monthDayRole = + modelIndex().data(CalendarNamespace::CalendarMonthDayRole); + if (monthDayRole.isValid()) { + if (monthDayRole.canConvert()) { + mWidget->updateMonthDayInfo(monthDayRole.toString()); + } + } + + QVariant monthEventRole = + modelIndex().data(CalendarNamespace::CalendarMonthEventRole); + if (monthEventRole.isValid()) { + if (monthEventRole.canConvert()) { + mWidget->updateEventIndicator(monthEventRole.toString()); + } + } + + QVariant monthFocusRole = + modelIndex().data(CalendarNamespace::CalendarMonthFocusRole); + if (monthFocusRole.isValid()) { + if (monthFocusRole.canConvert()) { + mWidget->updateFocusIndicator(monthFocusRole.toString()); + } + } + + QVariant monthTextColorRole = + modelIndex().data(CalendarNamespace::CalendarMonthTextColorRole); + if (monthTextColorRole.isValid()) { + if (monthTextColorRole.canConvert()) { + mWidget->updateMonthDayInfoColor(monthTextColorRole.value()); + } + } + + QVariant seventhColumnRole = + modelIndex().data(CalendarNamespace::CalendarMonthSeventhColumn); + if (seventhColumnRole.isValid()) { + if (seventhColumnRole.canConvert()) { + mIsSeventhColumn = seventhColumnRole.value(); + } + } + bool underlineEnabled = modelIndex().data( + CalendarNamespace::CalendarMonthUnderlineRole).value(); + mWidget->drawUnderline(underlineEnabled); + +} + +/*! + Creates the item layout. + */ +void CalenGridItemPrototype::createItemLayout() +{ + mLayout = new QGraphicsLinearLayout(Qt::Vertical, this); + + mWidget = new CalenGridItem(this); + mLayout->addItem(mWidget); + + mLayout->setSpacing(0); + mLayout->setContentsMargins(0, 0, 0, 0); + + setLayout(mLayout); +} + +/*! + To paint grid item border + */ +void CalenGridItemPrototype::paint(QPainter* painter, + const QStyleOptionGraphicsItem* option, + QWidget* widget) +{ + Q_UNUSED(option); + Q_UNUSED(widget); + + QPen pen;// + pen.setStyle(Qt::SolidLine); + pen.setWidth(GRIDLINE_WIDTH); + QColor gridLineColor = HbColorScheme::color("qtc_cal_grid_line"); + if (gridLineColor.isValid()) { + pen.setBrush(gridLineColor); + } else { + pen.setBrush(mGridBorderColor); + } + painter->setPen(pen); + QRectF controlRect = boundingRect(); + // Check if this is seventh column item + if ( !mIsSeventhColumn ) { + // Then draw right and bottom borders + QPointF startPoint = controlRect.bottomLeft(); + QPointF endPoint = controlRect.bottomRight(); + // Draw the bottom border + painter->drawLine(startPoint, endPoint); + startPoint = controlRect.topRight(); + // Draw right border + painter->drawLine(startPoint, endPoint); + } else { + // Then draw only bottom border + QPointF startPoint = controlRect.bottomLeft(); + QPointF endPoint = controlRect.bottomRight(); + // Draw the bottom border + painter->drawLine(startPoint, endPoint); + } +} +// End of file --Don't remove this.