calendarui/views/dayview/src/calendayitem.cpp
changeset 58 ef813d54df51
parent 50 579cc610882e
child 68 a5a1242fd2e8
--- 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)