--- a/calendarui/views/dayview/src/calendayitem.cpp Tue Jul 06 14:14:56 2010 +0300
+++ b/calendarui/views/dayview/src/calendayitem.cpp Wed Aug 18 09:47:38 2010 +0300
@@ -28,27 +28,26 @@
#include "calendayitem.h"
#include "calendaystatusstrip.h"
#include "calendaymodel.h"
+#include "calendayutils.h"
+#include "calenagendautils.h"
+#include "calendaycontainer.h"
-// -----------------------------------------------------------------------------
-// CalenDayItem()
-// Constructor.
-// -----------------------------------------------------------------------------
-//
-CalenDayItem::CalenDayItem():
- mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0),
+/*!
+ \brief Constructor.
+*/
+CalenDayItem::CalenDayItem(const CalenDayContainer *container):
+ mContainer(container), mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0),
mEventDescMinWidth(0.0), mFrameMinWidth(0.0)
{
}
-// -----------------------------------------------------------------------------
-// CalenBCDayView()
-// Copy constructor.
-// -----------------------------------------------------------------------------
-//
+/*!
+ \brief Constructor.
+*/
CalenDayItem::CalenDayItem(const CalenDayItem & source) :
- HbAbstractViewItem(source), mUpdated(false), mBg(0), mEventDesc(0),
+ HbAbstractViewItem(source), mContainer(source.container()), mUpdated(false), mBg(0), mEventDesc(0),
mColorStripe(0), mEventDescMinWidth(0.0), mFrameMinWidth(0.0)
-{
+{
// TODO: "qtg_fr_btn_pressed" need to replaced with qtg_fr_cal_meeting_bg
// when available
mBg = new HbFrameItem("qtg_fr_btn_pressed", HbFrameDrawer::NinePieces, this);
@@ -82,21 +81,21 @@
//Minimum width is assured by widgetml and css
//additionally called here to prevent minimum size hint caching inside effectiveSizeHint
setMinimumWidth(stripeWidth);
+
}
-// -----------------------------------------------------------------------------
-// ~CalenDayItem()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
+/*!
+ \brief Destructor.
+*/
CalenDayItem::~CalenDayItem()
{
}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
+/*!
+ \brief Creates new instance of day item.
+
+ \return New instance of day item.
+*/
HbAbstractViewItem * CalenDayItem::createItem()
{
CalenDayItem* newItem = new CalenDayItem(*this);
@@ -104,36 +103,36 @@
}
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-//
+/*!
+ \brief Sets data to be displayed on item.
+*/
void CalenDayItem::updateChildItems()
{
- // there is no need to update items after creation
- if (!mUpdated)
- {
- AgendaEntry entry;
- entry = modelIndex().data( CalenDayEntry ).value<AgendaEntry>();
-
- bool isAllDayEvent = (entry.type() == AgendaEntry::TypeEvent)
- && !entry.isTimedEntry();
-
- setDescription(entry, isAllDayEvent);
- setStatusStrip(entry, isAllDayEvent);
-
- mUpdated = true;
- }
-
- //TODO: check if needed
- //repolish();
- //HbAbstractViewItem::updateChildItems();
+ // there is no need to update items after creation
+ if (!mUpdated) {
+ AgendaEntry entry;
+ entry = modelIndex().data(CalenDayEntry).value<AgendaEntry>();
+
+ bool isAllDayEvent = CalenAgendaUtils::isAlldayEvent(entry);
+
+ setDescription(entry, isAllDayEvent);
+ setStatusStrip(entry, isAllDayEvent);
+
+ mUpdated = true;
+ }
+
+ //TODO: check if needed
+ //repolish();
+ //HbAbstractViewItem::updateChildItems();
}
-// -----------------------------------------------------------------------------
-// setDescription()
-// -----------------------------------------------------------------------------
-//
+/*!
+ \brief Adds event description for the item.
+
+ \param entry An for which description needs to be displayed.
+ \param allDayEvent Flag that indicates whether an item is all day event
+*/
void CalenDayItem::setDescription(const AgendaEntry &entry, bool allDayEvent)
{
QString description(entry.summary());
@@ -179,23 +178,31 @@
\brief It set all needed things for status strip from Agenda Entry.
\param entry Status Strip is created from Agenda Entry
- */
+*/
void CalenDayItem::setStatusStrip(const AgendaEntry &entry, bool allDayEvent)
{
QColor color = HbColorScheme::color("qtc_cal_month_current_day");
mColorStripe->setColor(color);
if (!allDayEvent) {
- mColorStripe->setStartEndTime(entry.startTime().time(),
- entry.endTime().time());
- } else {
- // This is workaround for displaying all-day events.
- // Now for MS Outlook compability all-day events' start and end time is
- // 00:00:00 and 00:00:00 next day respectively.
- // To draw it correctly we need times like those visible for user in
- // editor: 00:00:00 to 23:59:59 (the same day)
- mColorStripe->setStartEndTime(entry.startTime().time(),
- entry.endTime().time().addSecs(-1));
+
+ QDateTime startTime;
+ QDateTime endTime;
+ QDateTime currentDateTime;
+ currentDateTime.setDate(container()->date());
+
+ CalenDayUtils::instance()->getEventValidStartEndTime(startTime, endTime, entry,
+ currentDateTime);
+
+ mColorStripe->setStartEndTime(startTime.time(), endTime.time());
+ }
+ else {
+ // This is workaround for displaying all-day events.
+ // Now for MS Outlook compability all-day events' start and end time is
+ // 00:00:00 and 00:00:00 next day respectively.
+ // To draw it correctly we need times like those visible for user in
+ // editor: 00:00:00 to 23:59:59 (the same day)
+ mColorStripe->setStartEndTime(entry.startTime().time(), entry.endTime().time().addSecs(-1));
}
switch (entry.status()) {
@@ -214,6 +221,11 @@
}
}
+/*!
+ \brief Reimplemented from HbWidget. Handles resize event.
+
+ \param event Instance of an event to be handled.
+*/
void CalenDayItem::resizeEvent(QGraphicsSceneResizeEvent *event)
{
Q_UNUSED(event)