clock/clockui/clockviews/src/clockalarmlistmodel.cpp
changeset 57 bb2d3e476f29
parent 45 b6db4fd4947b
child 75 7ac58b2aae6f
equal deleted inserted replaced
55:2c54b51f39c4 57:bb2d3e476f29
    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()
   230 	if (dayInterval) {
   248 	if (dayInterval) {
   231 		alarmTimeInSec += (dayInterval*KSecondsInOneDay);
   249 		alarmTimeInSec += (dayInterval*KSecondsInOneDay);
   232 	}
   250 	}
   233 
   251 
   234 	remainingSeconds = alarmTimeInSec - currentTimeInSec;
   252 	remainingSeconds = alarmTimeInSec - currentTimeInSec;
       
   253 	OstTraceFunctionExit0( CLOCKALARMLISTMODEL_GETREMAININGSECONDS_EXIT );
   235 	return remainingSeconds;
   254 	return remainingSeconds;
   236 }
   255 }
   237 
   256 
   238 /*!
   257 /*!
   239 	Slot which Updates the source model with the given alarm `id'.
   258 	Slot which Updates the source model with the given alarm `id'.
   242 
   261 
   243 	\param id of alarm, identifies the alarm which was changed.
   262 	\param id of alarm, identifies the alarm which was changed.
   244  */
   263  */
   245 void ClockAlarmListModel::updateSourceModel(int alarmId)
   264 void ClockAlarmListModel::updateSourceModel(int alarmId)
   246 {
   265 {
       
   266 	OstTraceFunctionEntry0( CLOCKALARMLISTMODEL_UPDATESOURCEMODEL_ENTRY );
   247 	Q_UNUSED(alarmId)
   267 	Q_UNUSED(alarmId)
   248 	int alarmInfoCount;
   268 	int alarmInfoCount;
   249 	int modelCount;
   269 	int modelCount;
   250 	bool newAlarm = false;
   270 	bool newAlarm = false;
   251 	bool alarmDeleted = false;
   271 	bool alarmDeleted = false;
   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 =
   363 			}
   385 			}
   364 		}
   386 		}
   365 	}
   387 	}
   366 	// Start the Timer for 1 minute.
   388 	// Start the Timer for 1 minute.
   367 	mTickTimer->start(60000);
   389 	mTickTimer->start(60000);
       
   390 	OstTraceFunctionExit0( CLOCKALARMLISTMODEL_UPDATEREMAININGTIME_EXIT );
   368 }
   391 }
   369 
   392 
   370 /*!
   393 /*!
   371 	Returns the stringList to be set for "displayRole" for the alarm item.
   394 	Returns the stringList to be set for "displayRole" for the alarm item.
   372 
   395 
   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);
   479 		item->setData(alarmData, AlarmDetails);
   505 		item->setData(alarmData, AlarmDetails);
   480 		
   506 		
   481 		mSourceModel->appendRow(item);
   507 		mSourceModel->appendRow(item);
   482 	}
   508 	}
   483 
   509 
       
   510 	OstTraceFunctionExit0( CLOCKALARMLISTMODEL_APPENDALARMTOMODEL_EXIT );
   484 }
   511 }
   485 
   512 
   486 /*!
   513 /*!
   487 	Updates the alarm details in the source model with updated 
   514 	Updates the alarm details in the source model with updated 
   488 	details from server.
   515 	details from server.
   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.