26 |
26 |
27 //User inlcudes |
27 //User inlcudes |
28 #include "calendayitem.h" |
28 #include "calendayitem.h" |
29 #include "calendaystatusstrip.h" |
29 #include "calendaystatusstrip.h" |
30 #include "calendaymodel.h" |
30 #include "calendaymodel.h" |
31 |
31 #include "calendayutils.h" |
32 // ----------------------------------------------------------------------------- |
32 #include "calenagendautils.h" |
33 // CalenDayItem() |
33 #include "calendaycontainer.h" |
34 // Constructor. |
34 |
35 // ----------------------------------------------------------------------------- |
35 /*! |
36 // |
36 \brief Constructor. |
37 CalenDayItem::CalenDayItem(): |
37 */ |
38 mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0), |
38 CalenDayItem::CalenDayItem(const CalenDayContainer *container): |
|
39 mContainer(container), mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0), |
39 mEventDescMinWidth(0.0), mFrameMinWidth(0.0) |
40 mEventDescMinWidth(0.0), mFrameMinWidth(0.0) |
40 { |
41 { |
41 } |
42 } |
42 |
43 |
43 // ----------------------------------------------------------------------------- |
44 /*! |
44 // CalenBCDayView() |
45 \brief Constructor. |
45 // Copy constructor. |
46 */ |
46 // ----------------------------------------------------------------------------- |
|
47 // |
|
48 CalenDayItem::CalenDayItem(const CalenDayItem & source) : |
47 CalenDayItem::CalenDayItem(const CalenDayItem & source) : |
49 HbAbstractViewItem(source), mUpdated(false), mBg(0), mEventDesc(0), |
48 HbAbstractViewItem(source), mContainer(source.container()), mUpdated(false), mBg(0), mEventDesc(0), |
50 mColorStripe(0), mEventDescMinWidth(0.0), mFrameMinWidth(0.0) |
49 mColorStripe(0), mEventDescMinWidth(0.0), mFrameMinWidth(0.0) |
51 { |
50 { |
52 // TODO: "qtg_fr_btn_pressed" need to replaced with qtg_fr_cal_meeting_bg |
51 // TODO: "qtg_fr_btn_pressed" need to replaced with qtg_fr_cal_meeting_bg |
53 // when available |
52 // when available |
54 mBg = new HbFrameItem("qtg_fr_btn_pressed", HbFrameDrawer::NinePieces, this); |
53 mBg = new HbFrameItem("qtg_fr_btn_pressed", HbFrameDrawer::NinePieces, this); |
55 mEventDesc = new HbTextItem(this); |
54 mEventDesc = new HbTextItem(this); |
56 // TODO: probably ElideLeft needed for mirrored layout |
55 // TODO: probably ElideLeft needed for mirrored layout |
80 mEventDescMinWidth = mFrameMinWidth + rightMargin;//smallest width for which text can be displayed |
79 mEventDescMinWidth = mFrameMinWidth + rightMargin;//smallest width for which text can be displayed |
81 |
80 |
82 //Minimum width is assured by widgetml and css |
81 //Minimum width is assured by widgetml and css |
83 //additionally called here to prevent minimum size hint caching inside effectiveSizeHint |
82 //additionally called here to prevent minimum size hint caching inside effectiveSizeHint |
84 setMinimumWidth(stripeWidth); |
83 setMinimumWidth(stripeWidth); |
85 } |
84 |
86 |
85 } |
87 // ----------------------------------------------------------------------------- |
86 |
88 // ~CalenDayItem() |
87 /*! |
89 // Destructor. |
88 \brief Destructor. |
90 // ----------------------------------------------------------------------------- |
89 */ |
91 // |
|
92 CalenDayItem::~CalenDayItem() |
90 CalenDayItem::~CalenDayItem() |
93 { |
91 { |
94 } |
92 } |
95 |
93 |
96 // ----------------------------------------------------------------------------- |
94 /*! |
97 // |
95 \brief Creates new instance of day item. |
98 // ----------------------------------------------------------------------------- |
96 |
99 // |
97 \return New instance of day item. |
|
98 */ |
100 HbAbstractViewItem * CalenDayItem::createItem() |
99 HbAbstractViewItem * CalenDayItem::createItem() |
101 { |
100 { |
102 CalenDayItem* newItem = new CalenDayItem(*this); |
101 CalenDayItem* newItem = new CalenDayItem(*this); |
103 return newItem; |
102 return newItem; |
104 } |
103 } |
105 |
104 |
106 |
105 |
107 // ----------------------------------------------------------------------------- |
106 /*! |
108 // ----------------------------------------------------------------------------- |
107 \brief Sets data to be displayed on item. |
109 // |
108 */ |
110 void CalenDayItem::updateChildItems() |
109 void CalenDayItem::updateChildItems() |
111 { |
110 { |
112 // there is no need to update items after creation |
111 // there is no need to update items after creation |
113 if (!mUpdated) |
112 if (!mUpdated) { |
114 { |
113 AgendaEntry entry; |
115 AgendaEntry entry; |
114 entry = modelIndex().data(CalenDayEntry).value<AgendaEntry>(); |
116 entry = modelIndex().data( CalenDayEntry ).value<AgendaEntry>(); |
115 |
117 |
116 bool isAllDayEvent = CalenAgendaUtils::isAlldayEvent(entry); |
118 bool isAllDayEvent = (entry.type() == AgendaEntry::TypeEvent) |
117 |
119 && !entry.isTimedEntry(); |
118 setDescription(entry, isAllDayEvent); |
120 |
119 setStatusStrip(entry, isAllDayEvent); |
121 setDescription(entry, isAllDayEvent); |
120 |
122 setStatusStrip(entry, isAllDayEvent); |
121 mUpdated = true; |
123 |
122 } |
124 mUpdated = true; |
123 |
125 } |
124 //TODO: check if needed |
126 |
125 //repolish(); |
127 //TODO: check if needed |
126 //HbAbstractViewItem::updateChildItems(); |
128 //repolish(); |
127 } |
129 //HbAbstractViewItem::updateChildItems(); |
128 |
130 } |
129 |
131 |
130 /*! |
132 |
131 \brief Adds event description for the item. |
133 // ----------------------------------------------------------------------------- |
132 |
134 // setDescription() |
133 \param entry An for which description needs to be displayed. |
135 // ----------------------------------------------------------------------------- |
134 \param allDayEvent Flag that indicates whether an item is all day event |
136 // |
135 */ |
137 void CalenDayItem::setDescription(const AgendaEntry &entry, bool allDayEvent) |
136 void CalenDayItem::setDescription(const AgendaEntry &entry, bool allDayEvent) |
138 { |
137 { |
139 QString description(entry.summary()); |
138 QString description(entry.summary()); |
140 QString location(entry.location()); |
139 QString location(entry.location()); |
141 |
140 |
177 |
176 |
178 /*! |
177 /*! |
179 \brief It set all needed things for status strip from Agenda Entry. |
178 \brief It set all needed things for status strip from Agenda Entry. |
180 |
179 |
181 \param entry Status Strip is created from Agenda Entry |
180 \param entry Status Strip is created from Agenda Entry |
182 */ |
181 */ |
183 void CalenDayItem::setStatusStrip(const AgendaEntry &entry, bool allDayEvent) |
182 void CalenDayItem::setStatusStrip(const AgendaEntry &entry, bool allDayEvent) |
184 { |
183 { |
185 QColor color = HbColorScheme::color("qtc_cal_month_current_day"); |
184 QColor color = HbColorScheme::color("qtc_cal_month_current_day"); |
186 mColorStripe->setColor(color); |
185 mColorStripe->setColor(color); |
187 |
186 |
188 if (!allDayEvent) { |
187 if (!allDayEvent) { |
189 mColorStripe->setStartEndTime(entry.startTime().time(), |
188 |
190 entry.endTime().time()); |
189 QDateTime startTime; |
191 } else { |
190 QDateTime endTime; |
192 // This is workaround for displaying all-day events. |
191 QDateTime currentDateTime; |
193 // Now for MS Outlook compability all-day events' start and end time is |
192 currentDateTime.setDate(container()->date()); |
194 // 00:00:00 and 00:00:00 next day respectively. |
193 |
195 // To draw it correctly we need times like those visible for user in |
194 CalenDayUtils::instance()->getEventValidStartEndTime(startTime, endTime, entry, |
196 // editor: 00:00:00 to 23:59:59 (the same day) |
195 currentDateTime); |
197 mColorStripe->setStartEndTime(entry.startTime().time(), |
196 |
198 entry.endTime().time().addSecs(-1)); |
197 mColorStripe->setStartEndTime(startTime.time(), endTime.time()); |
|
198 } |
|
199 else { |
|
200 // This is workaround for displaying all-day events. |
|
201 // Now for MS Outlook compability all-day events' start and end time is |
|
202 // 00:00:00 and 00:00:00 next day respectively. |
|
203 // To draw it correctly we need times like those visible for user in |
|
204 // editor: 00:00:00 to 23:59:59 (the same day) |
|
205 mColorStripe->setStartEndTime(entry.startTime().time(), entry.endTime().time().addSecs(-1)); |
199 } |
206 } |
200 |
207 |
201 switch (entry.status()) { |
208 switch (entry.status()) { |
202 case AgendaEntry::Confirmed: |
209 case AgendaEntry::Confirmed: |
203 mColorStripe->setDrawingStyle(CalenDayStatusStrip::Filled); |
210 mColorStripe->setDrawingStyle(CalenDayStatusStrip::Filled); |