28 #include "alarmclient.h" |
28 #include "alarmclient.h" |
29 #include "timezoneclient.h" |
29 #include "timezoneclient.h" |
30 #include "clockalarmlistitemprototype.h" |
30 #include "clockalarmlistitemprototype.h" |
31 #include "clockappcontrollerif.h" |
31 #include "clockappcontrollerif.h" |
32 #include "settingsutility.h" |
32 #include "settingsutility.h" |
|
33 #include "OstTraceDefinitions.h" |
|
34 #ifdef OST_TRACE_COMPILER_IN_USE |
|
35 #include "clockalarmlistmodelTraces.h" |
|
36 #endif |
|
37 |
33 |
38 |
34 // Constants |
39 // Constants |
35 const int KOneHourInMinute(60); |
40 const int KOneHourInMinute(60); |
36 const int KOneMinuteInSecons(60); |
41 const int KOneMinuteInSecons(60); |
37 const int KSecondsInOneDay(24 * 60 * 60); |
42 const int KSecondsInOneDay(24 * 60 * 60); |
52 ClockAppControllerIf &controllerIf, QObject *parent) |
57 ClockAppControllerIf &controllerIf, QObject *parent) |
53 :QObject(parent), |
58 :QObject(parent), |
54 mSourceModel(0), |
59 mSourceModel(0), |
55 mAppControllerIf(controllerIf) |
60 mAppControllerIf(controllerIf) |
56 { |
61 { |
|
62 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_CLOCKALARMLISTMODEL_ENTRY ); |
57 // Construct the source model. |
63 // Construct the source model. |
58 mSourceModel = new QStandardItemModel(0, 1, this); |
64 mSourceModel = new QStandardItemModel(0, 1, this); |
59 |
65 |
60 // Register to listen to the alarm state changes. |
66 // Register to listen to the alarm state changes. |
61 mAppControllerIf.alarmClient()->startListener(); |
67 mAppControllerIf.alarmClient()->startListener(); |
69 // Start a timer. For updating the remaining alarm time. |
75 // Start a timer. For updating the remaining alarm time. |
70 mTickTimer = new QTimer(this); |
76 mTickTimer = new QTimer(this); |
71 connect( |
77 connect( |
72 mTickTimer, SIGNAL(timeout()), |
78 mTickTimer, SIGNAL(timeout()), |
73 this, SLOT(updateRemainingTime())); |
79 this, SLOT(updateRemainingTime())); |
|
80 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_CLOCKALARMLISTMODEL_EXIT ); |
74 } |
81 } |
75 |
82 |
76 /*! |
83 /*! |
77 Destructor. |
84 Destructor. |
78 */ |
85 */ |
79 ClockAlarmListModel::~ClockAlarmListModel() |
86 ClockAlarmListModel::~ClockAlarmListModel() |
80 { |
87 { |
|
88 OstTraceFunctionEntry0( DUP1_CLOCKALARMLISTMODEL_CLOCKALARMLISTMODEL_ENTRY ); |
81 if (mSourceModel) { |
89 if (mSourceModel) { |
82 delete mSourceModel; |
90 delete mSourceModel; |
83 mSourceModel = 0; |
91 mSourceModel = 0; |
84 } |
92 } |
|
93 OstTraceFunctionExit0( DUP1_CLOCKALARMLISTMODEL_CLOCKALARMLISTMODEL_EXIT ); |
85 } |
94 } |
86 |
95 |
87 /*! |
96 /*! |
88 Populates the source model & starts the timer for 1 minute. |
97 Populates the source model & starts the timer for 1 minute. |
89 */ |
98 */ |
90 void ClockAlarmListModel::populateModel() |
99 void ClockAlarmListModel::populateModel() |
91 { |
100 { |
|
101 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_POPULATEMODEL_ENTRY ); |
92 // Populate the model in a different thread. |
102 // Populate the model in a different thread. |
93 QTimer::singleShot(1, this, SLOT(populateSourceModel())); |
103 QTimer::singleShot(1, this, SLOT(populateSourceModel())); |
|
104 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_POPULATEMODEL_EXIT ); |
94 } |
105 } |
95 /*! |
106 /*! |
96 Returns the source model to be used with clock main view. |
107 Returns the source model to be used with clock main view. |
97 |
108 |
98 \return QAbstractItemModel |
109 \return QAbstractItemModel |
99 \sa QAbstractItemModel, HbListView. |
110 \sa QAbstractItemModel, HbListView. |
100 */ |
111 */ |
101 QAbstractItemModel *ClockAlarmListModel::sourceModel() |
112 QAbstractItemModel *ClockAlarmListModel::sourceModel() |
102 { |
113 { |
|
114 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_SOURCEMODEL_ENTRY ); |
|
115 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_SOURCEMODEL_EXIT ); |
103 return mSourceModel; |
116 return mSourceModel; |
104 } |
117 } |
105 |
118 |
106 /*! |
119 /*! |
107 Populates the source model. |
120 Populates the source model. |
108 */ |
121 */ |
109 void ClockAlarmListModel::populateSourceModel() |
122 void ClockAlarmListModel::populateSourceModel() |
110 { |
123 { |
|
124 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_POPULATESOURCEMODEL_ENTRY ); |
111 // Clear the model if it has any data already. |
125 // Clear the model if it has any data already. |
112 mSourceModel->clear(); |
126 mSourceModel->clear(); |
113 mSourceModel->setColumnCount(1); |
127 mSourceModel->setColumnCount(1); |
114 |
128 |
115 QList<AlarmInfo> alarmInfoList; |
129 QList<AlarmInfo> alarmInfoList; |
136 |
150 |
137 if (0 < getActiveAlarmCount() && !mTickTimer->isActive()) { |
151 if (0 < getActiveAlarmCount() && !mTickTimer->isActive()) { |
138 // Start the Timer for 1 minute. |
152 // Start the Timer for 1 minute. |
139 mTickTimer->start(60000 - 1000 * QTime::currentTime().second()); |
153 mTickTimer->start(60000 - 1000 * QTime::currentTime().second()); |
140 } |
154 } |
|
155 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_POPULATESOURCEMODEL_EXIT ); |
141 } |
156 } |
142 |
157 |
143 /*! |
158 /*! |
144 Calculates the remaining time for the given alarm. |
159 Calculates the remaining time for the given alarm. |
145 |
160 |
146 \param alarmInfo AlarmInfo containing the active alarm. |
161 \param alarmInfo AlarmInfo containing the active alarm. |
147 */ |
162 */ |
148 QString ClockAlarmListModel::calculateRemainingTime(AlarmInfo alarmInfo) |
163 QString ClockAlarmListModel::calculateRemainingTime(AlarmInfo alarmInfo) |
149 { |
164 { |
|
165 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_CALCULATEREMAININGTIME_ENTRY ); |
150 QDateTime currentDateTime = QDateTime::currentDateTime(); |
166 QDateTime currentDateTime = QDateTime::currentDateTime(); |
151 QDateTime alarmTime = QDateTime( |
167 QDateTime alarmTime = QDateTime( |
152 alarmInfo.alarmDateTime, alarmInfo.nextDueTime); |
168 alarmInfo.alarmDateTime, alarmInfo.nextDueTime); |
153 QString timeNote; |
169 QString timeNote; |
154 |
170 |
197 QString::number(hourleft), QString::number(minleft)); |
213 QString::number(hourleft), QString::number(minleft)); |
198 } else { |
214 } else { |
199 formatTimeNote = hbTrId("txt_clock_main_view_setlabel_in_1days"); |
215 formatTimeNote = hbTrId("txt_clock_main_view_setlabel_in_1days"); |
200 timeNote = formatTimeNote.arg(QString::number(dayleft)); |
216 timeNote = formatTimeNote.arg(QString::number(dayleft)); |
201 } |
217 } |
|
218 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_CALCULATEREMAININGTIME_EXIT ); |
202 return timeNote; |
219 return timeNote; |
203 } |
220 } |
204 |
221 |
205 /*! |
222 /*! |
206 Gets remaining seconds to the alarm time from current date time. |
223 Gets remaining seconds to the alarm time from current date time. |
208 \param alarmDateTime reference to the alarm date time. |
225 \param alarmDateTime reference to the alarm date time. |
209 \return int returns the remaining seconds calculated. |
226 \return int returns the remaining seconds calculated. |
210 */ |
227 */ |
211 int ClockAlarmListModel::getRemainingSeconds(QDateTime &alarmDateTime) |
228 int ClockAlarmListModel::getRemainingSeconds(QDateTime &alarmDateTime) |
212 { |
229 { |
|
230 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_GETREMAININGSECONDS_ENTRY ); |
213 int remainingSeconds; |
231 int remainingSeconds; |
214 QDateTime currentDateTime = QDateTime::currentDateTime(); |
232 QDateTime currentDateTime = QDateTime::currentDateTime(); |
215 |
233 |
216 int currentTimeInSec = |
234 int currentTimeInSec = |
217 (currentDateTime.time().hour() |
235 (currentDateTime.time().hour() |
329 if (mTickTimer->isActive()) { |
349 if (mTickTimer->isActive()) { |
330 // Stop the timer if no more active alarms are present. |
350 // Stop the timer if no more active alarms are present. |
331 mTickTimer->stop(); |
351 mTickTimer->stop(); |
332 } |
352 } |
333 } |
353 } |
|
354 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_UPDATESOURCEMODEL_EXIT ); |
334 } |
355 } |
335 |
356 |
336 /*! |
357 /*! |
337 Slot which Updates the remaining time field in the alarms list for all the |
358 Slot which Updates the remaining time field in the alarms list for all the |
338 alarms. |
359 alarms. |
339 |
360 |
340 */ |
361 */ |
341 void ClockAlarmListModel::updateRemainingTime() |
362 void ClockAlarmListModel::updateRemainingTime() |
342 { |
363 { |
|
364 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_UPDATEREMAININGTIME_ENTRY ); |
343 // Get the list of pending clock alarms from server. |
365 // Get the list of pending clock alarms from server. |
344 AlarmInfo alarmInfo; |
366 AlarmInfo alarmInfo; |
345 for (int row = 0; row < mSourceModel->rowCount(); row++) { |
367 for (int row = 0; row < mSourceModel->rowCount(); row++) { |
346 // Get the data for the alarm. |
368 // Get the data for the alarm. |
347 QList<QVariant> alarmData = |
369 QList<QVariant> alarmData = |
375 \return QStringList contains the stringList to be set. |
398 \return QStringList contains the stringList to be set. |
376 */ |
399 */ |
377 QStringList ClockAlarmListModel::getDisplayStringListforAlarmItem( |
400 QStringList ClockAlarmListModel::getDisplayStringListforAlarmItem( |
378 AlarmInfo alarmInfo) |
401 AlarmInfo alarmInfo) |
379 { |
402 { |
|
403 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_GETDISPLAYSTRINGLISTFORALARMITEM_ENTRY ); |
380 QStringList displayStringList; |
404 QStringList displayStringList; |
381 QString timeString; |
405 QString timeString; |
382 if (Snoozed == alarmInfo.alarmState) { |
406 if (Snoozed == alarmInfo.alarmState) { |
383 timeString = alarmInfo.nextDueTime.toString( |
407 timeString = alarmInfo.nextDueTime.toString( |
384 mAppControllerIf.settingsUtility()->timeFormatString()); |
408 mAppControllerIf.settingsUtility()->timeFormatString()); |
398 |
422 |
399 if (Enabled == alarmInfo.alarmStatus) { |
423 if (Enabled == alarmInfo.alarmStatus) { |
400 QString remainingTime = calculateRemainingTime(alarmInfo); |
424 QString remainingTime = calculateRemainingTime(alarmInfo); |
401 displayStringList.append(remainingTime); |
425 displayStringList.append(remainingTime); |
402 } else { |
426 } else { |
403 // TODO: localization |
427 displayStringList.append( |
404 displayStringList.append(QString("In-active")); |
428 hbTrId("txt_clock_main_view_setlabel_inactive")); |
405 } |
429 } |
406 |
430 |
407 QString alarmDescription = alarmInfo.alarmDesc; |
431 QString alarmDescription = alarmInfo.alarmDesc; |
408 displayStringList.append(alarmDescription); |
432 displayStringList.append(alarmDescription); |
409 |
433 |
426 repeatTypeString.append( |
450 repeatTypeString.append( |
427 alarmInfo.alarmDateTime.toString("dddd")); |
451 alarmInfo.alarmDateTime.toString("dddd")); |
428 } |
452 } |
429 } |
453 } |
430 displayStringList.append(repeatTypeString); |
454 displayStringList.append(repeatTypeString); |
|
455 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_GETDISPLAYSTRINGLISTFORALARMITEM_EXIT ); |
431 return displayStringList; |
456 return displayStringList; |
432 } |
457 } |
433 |
458 |
434 /*! |
459 /*! |
435 Appends an alarm to the source model. |
460 Appends an alarm to the source model. |
436 |
461 |
437 \param alarmInfo AlarmInfo containing the alarm. |
462 \param alarmInfo AlarmInfo containing the alarm. |
438 */ |
463 */ |
439 void ClockAlarmListModel::appendAlarmToModel(AlarmInfo alarmInfo) |
464 void ClockAlarmListModel::appendAlarmToModel(AlarmInfo alarmInfo) |
440 { |
465 { |
|
466 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_APPENDALARMTOMODEL_ENTRY ); |
441 // Append only pending alarms to the model. |
467 // Append only pending alarms to the model. |
442 if (Notified != alarmInfo.alarmState) { |
468 if (Notified != alarmInfo.alarmState) { |
443 QStandardItem *item = new QStandardItem(); |
469 QStandardItem *item = new QStandardItem(); |
444 QStringList displayStringList = |
470 QStringList displayStringList = |
445 getDisplayStringListforAlarmItem(alarmInfo); |
471 getDisplayStringListforAlarmItem(alarmInfo); |
491 \param alarmInfo AlarmInfo containing the alarm. |
518 \param alarmInfo AlarmInfo containing the alarm. |
492 */ |
519 */ |
493 void ClockAlarmListModel::updateAlarmDetails( |
520 void ClockAlarmListModel::updateAlarmDetails( |
494 QModelIndex modelIndex, AlarmInfo alarmInfo) |
521 QModelIndex modelIndex, AlarmInfo alarmInfo) |
495 { |
522 { |
|
523 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_UPDATEALARMDETAILS_ENTRY ); |
496 if (Notified != alarmInfo.alarmState) { |
524 if (Notified != alarmInfo.alarmState) { |
497 QStringList displayStringList = |
525 QStringList displayStringList = |
498 getDisplayStringListforAlarmItem(alarmInfo); |
526 getDisplayStringListforAlarmItem(alarmInfo); |
499 |
527 |
500 mSourceModel->setData( |
528 mSourceModel->setData( |
532 alarmData.append(alarmInfo.alarmId); |
560 alarmData.append(alarmInfo.alarmId); |
533 alarmData.append(alarmInfo.repeatType); |
561 alarmData.append(alarmInfo.repeatType); |
534 alarmData.append(alarmInfo.alarmStatus); |
562 alarmData.append(alarmInfo.alarmStatus); |
535 mSourceModel->setData(modelIndex, alarmData, AlarmDetails); |
563 mSourceModel->setData(modelIndex, alarmData, AlarmDetails); |
536 } |
564 } |
|
565 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_UPDATEALARMDETAILS_EXIT ); |
537 } |
566 } |
538 |
567 |
539 /*! |
568 /*! |
540 Returns the number of active alarms present in the model. |
569 Returns the number of active alarms present in the model. |
541 |
570 |
542 \return int number of active alarms present in the model. |
571 \return int number of active alarms present in the model. |
543 */ |
572 */ |
544 int ClockAlarmListModel::getActiveAlarmCount() |
573 int ClockAlarmListModel::getActiveAlarmCount() |
545 { |
574 { |
|
575 OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_GETACTIVEALARMCOUNT_ENTRY ); |
546 int activeAlarmCount = 0; |
576 int activeAlarmCount = 0; |
547 for (int index = 0; index < mSourceModel->rowCount(); index++) { |
577 for (int index = 0; index < mSourceModel->rowCount(); index++) { |
548 // Get the data for the alarm. |
578 // Get the data for the alarm. |
549 QList<QVariant> alarmData = mSourceModel-> |
579 QList<QVariant> alarmData = mSourceModel-> |
550 index(index, 0).data(AlarmDetails).toList(); |
580 index(index, 0).data(AlarmDetails).toList(); |
551 if (Enabled == alarmData.at(2).value<int>()) { |
581 if (Enabled == alarmData.at(2).value<int>()) { |
552 activeAlarmCount++; |
582 activeAlarmCount++; |
553 } |
583 } |
554 } |
584 } |
|
585 OstTraceFunctionExit0( CLOCKALARMLISTMODEL_GETACTIVEALARMCOUNT_EXIT ); |
555 return activeAlarmCount; |
586 return activeAlarmCount; |
556 } |
587 } |
557 // End of file --Don't remove this. |
588 // End of file --Don't remove this. |