calendarui/caleneditor/src/caleneditor_p.cpp
changeset 64 1881ad52dc45
parent 57 bb2d3e476f29
child 70 a5ed90760192
equal deleted inserted replaced
63:a3cb48f6c889 64:1881ad52dc45
  1094  */
  1094  */
  1095 void CalenEditorPrivate::saveFromDateTime(QDateTime& fromDateTime)
  1095 void CalenEditorPrivate::saveFromDateTime(QDateTime& fromDateTime)
  1096 {
  1096 {
  1097 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_SAVEFROMDATETIME_ENTRY );
  1097 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_SAVEFROMDATETIME_ENTRY );
  1098 	QDateTime endTime = mEditedEntry->endTime();
  1098 	QDateTime endTime = mEditedEntry->endTime();
       
  1099 	// Get the previous start date of the entry
       
  1100 	QDate previousDate = mEditedEntry->startTime().date();
  1099 	// Update the end time accordingly on UI - duration will be 60 mins
  1101 	// Update the end time accordingly on UI - duration will be 60 mins
  1100 	// bydefault only while creating new entry and if it crossed the endtime
  1102 	// bydefault only while creating new entry and if it crossed the endtime
  1101 	if (mNewEntry && fromDateTime > endTime) {
  1103 	if (mNewEntry && fromDateTime > endTime) {
  1102 		endTime = fromDateTime.addSecs(SecsInOneHour);
  1104 		endTime = fromDateTime.addSecs(SecsInOneHour);
  1103 	} else { // for existing entry
  1105 	} else { // for existing entry
  1120 		// update the repeat choices depending on the meeting duration
  1122 		// update the repeat choices depending on the meeting duration
  1121 		mRepeatField->updateRepeatChoices();
  1123 		mRepeatField->updateRepeatChoices();
  1122 	}
  1124 	}
  1123 
  1125 
  1124 	updateReminderChoices();
  1126 	updateReminderChoices();
       
  1127 	// If the entry start date is been changed from past date to a future date
       
  1128 	// And if the alarm set set is off change the reminder option to 
       
  1129 	// 'one day before' if the option is valid
       
  1130 	if (isAllDayEvent() && previousDate <= QDate::currentDate()) {
       
  1131 		if(fromDateTime.date() > QDate::currentDate() && 
       
  1132 			(mReminderField->currentReminderIndex() == 
       
  1133 									CalenEditorReminderField::ReminderOff) && 
       
  1134 			mReminderField->reminderItemsCount() >= 3) {
       
  1135 			mReminderField->setCurrentIndex(
       
  1136 							CalenEditorReminderField::ReminderOneDayBefore);
       
  1137 		}
       
  1138 	}
  1125 	OstTraceFunctionExit0( CALENEDITORPRIVATE_SAVEFROMDATETIME_EXIT );
  1139 	OstTraceFunctionExit0( CALENEDITORPRIVATE_SAVEFROMDATETIME_EXIT );
  1126 }
  1140 }
  1127 
  1141 
  1128 void CalenEditorPrivate::updateReminderChoices()
  1142 void CalenEditorPrivate::updateReminderChoices()
  1129 {
  1143 {
  1148 						|| (referenceDate == QDate::currentDate()
  1162 						|| (referenceDate == QDate::currentDate()
  1149 				&& (mEditedEntry->startTime().time() < QTime::currentTime())))
  1163 				&& (mEditedEntry->startTime().time() < QTime::currentTime())))
  1150 				 {
  1164 				 {
  1151 					mReminderField->setReminderOff();
  1165 					mReminderField->setReminderOff();
  1152 		} else {
  1166 		} else {
  1153 			// Enabled implies future. If changing from future to future do not 
  1167 			if (referenceDate == QDate::currentDate()) {
  1154 			// do anything.
  1168 				mReminderField->UpdateReminderChoicesForSameDay(mEditedEntry->startTime().time());
  1155 			if (!mReminderField->isReminderFieldEnabled()) {
  1169 			}
       
  1170 			else {
  1156 				mReminderField->setReminderChoices();
  1171 				mReminderField->setReminderChoices();
  1157 				// Set the default alarm time 15 minutes before
       
  1158 				mReminderField->setCurrentIndex(2);
       
  1159 			}
  1172 			}
       
  1173 			//Set the reminder field to the previous value which was saved.
       
  1174 			mReminderField->setSavedMeetingReminderIndex();
  1160 		}
  1175 		}
  1161 	}
  1176 	}
  1162 	OstTraceFunctionExit0( CALENEDITORPRIVATE_UPDATEREMINDERCHOICES_EXIT );
  1177 	OstTraceFunctionExit0( CALENEDITORPRIVATE_UPDATEREMINDERCHOICES_EXIT );
  1163 }
  1178 }
  1164 
  1179 
  1353 		}
  1368 		}
  1354 		// For the transition from normal entry to all day - set reminder off
  1369 		// For the transition from normal entry to all day - set reminder off
  1355 		// This is  to avoid conflict in the reminder time as 
  1370 		// This is  to avoid conflict in the reminder time as 
  1356 		// the index set for the normal meeting may not be valid for an allday 
  1371 		// the index set for the normal meeting may not be valid for an allday 
  1357 		// Set it off before doing the reminder updation for all day
  1372 		// Set it off before doing the reminder updation for all day
  1358 		mReminderField->setCurrentIndex(0);
  1373 		mReminderField->setCurrentIndex(CalenEditorReminderField::ReminderOff);
  1359 		mReminderField->updateReminderChoicesForAllDay(referenceDate);
  1374 		mReminderField->updateReminderChoicesForAllDay(referenceDate);
  1360 		// If the reminder field is enabled and it is not off 
  1375 		// Now the reminder combox box is updated with the valid reminder options
  1361 		// it implies default alarm day and time is being displayed.
  1376 		// If the reminder field is enabled and it is off 
       
  1377 		// it implies default alarm day and time should be displayed.
  1362 		if (mReminderField->isReminderFieldEnabled() && 
  1378 		if (mReminderField->isReminderFieldEnabled() && 
  1363 					mReminderField->currentReminderIndex() != 0) {
  1379 					mReminderField->currentReminderIndex() == 
       
  1380 										CalenEditorReminderField::ReminderOff) {
       
  1381 			mReminderField->insertReminderTimeField();
  1364 			// Set the default alarm for all day.
  1382 			// Set the default alarm for all day.
  1365 			mReminderField->setDefaultAlarmForAllDay();
  1383 			if(mReminderField->reminderItemsCount() > 2) {
       
  1384 				// Set reminder as "One day before"
       
  1385 				mReminderField->setCurrentIndex(
       
  1386 								CalenEditorReminderField::ReminderOneDayBefore);
       
  1387 			}else {
       
  1388 				// Since the "One day before" is not valid
       
  1389 				// Set the reminder "On event day"
       
  1390 				mReminderField->setCurrentIndex(
       
  1391 								CalenEditorReminderField::ReminderOnEventDay);
       
  1392 			}
  1366 		} else {
  1393 		} else {
  1367 			// Remove reminder time field.
  1394 			// Remove reminder time field.
  1368 			mReminderField->removeReminderTimeField();
  1395 			mReminderField->removeReminderTimeField();
  1369 		}
  1396 		}
  1370 	} else {
  1397 	} else {
  1376 		enableFromTotimeFileds(true, mEditedEntry->startTime(),
  1403 		enableFromTotimeFileds(true, mEditedEntry->startTime(),
  1377 		                       mEditedEntry->endTime());
  1404 		                       mEditedEntry->endTime());
  1378 		mReminderField->removeReminderTimeField();
  1405 		mReminderField->removeReminderTimeField();
  1379 		mReminderField->setReminderChoices();
  1406 		mReminderField->setReminderChoices();
  1380 		// Set the default alarm time 15 minutes before
  1407 		// Set the default alarm time 15 minutes before
  1381 		mReminderField->setCurrentIndex(2);
  1408 		mReminderField->setCurrentIndex(CalenEditorReminderField::Reminder15MinsBefore);
  1382 		updateReminderChoices();
  1409 		updateReminderChoices();
  1383 	}
  1410 	}
  1384 
  1411 
  1385 	if(!mNewEntry){
  1412 	if(!mNewEntry){
  1386 		addDiscardAction();
  1413 		addDiscardAction();
  1693 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_SAVEENTRY_ENTRY );
  1720 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_SAVEENTRY_ENTRY );
  1694 
  1721 
  1695 	if (!handleAllDayToSave()) {
  1722 	if (!handleAllDayToSave()) {
  1696 		// creating an exceptional entry
  1723 		// creating an exceptional entry
  1697 		if (!mIsChild && (mEditRange == ThisOnly)) {
  1724 		if (!mIsChild && (mEditRange == ThisOnly)) {
  1698 			mAgendaUtil->store(*mEditedEntry, AgendaUtil::ThisOnly);
  1725 			mAgendaUtil->store(
       
  1726 					*mEditedEntry, AgendaUtil::ThisOnly,
       
  1727 					mOriginalEntry->startTime());
  1699 		} else {
  1728 		} else {
  1700 			mAgendaUtil->store(*mEditedEntry);
  1729 			mAgendaUtil->store(*mEditedEntry);
  1701 		}
  1730 		}
  1702 	}
  1731 	}
  1703 	if (mNewEntry) {
  1732 	if (mNewEntry) {
  1911 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_ISREMINDERTIMEFORALLDAYADDED_ENTRY );
  1940 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_ISREMINDERTIMEFORALLDAYADDED_ENTRY );
  1912 	return mReminderField->isReminderTimeForAllDayAdded();
  1941 	return mReminderField->isReminderTimeForAllDayAdded();
  1913 }
  1942 }
  1914 
  1943 
  1915 /*!
  1944 /*!
       
  1945 	Returns true if repeatuntil item is been added
       
  1946 	Used to know if the entry is repeating. For new entries this
       
  1947 	is the only way to find whether its repeating or not
       
  1948  */
       
  1949 bool CalenEditorPrivate::isRepeatUntilItemAdded()
       
  1950 {
       
  1951 	// For exceptional entries the repeatfield will not be present
       
  1952 	// So need to check if the repeat field is there or not
       
  1953 	if( mRepeatField ) {
       
  1954 		return mRepeatField->isRepeatUntilItemAdded();
       
  1955 	}else {
       
  1956 		return false;
       
  1957 	}
       
  1958 }
       
  1959 
       
  1960 /*!
  1916 	Checks if it is an all day event or not.
  1961 	Checks if it is an all day event or not.
  1917  */
  1962  */
  1918 bool CalenEditorPrivate::isAllDayEvent()
  1963 bool CalenEditorPrivate::isAllDayEvent()
  1919 {
  1964 {
  1920 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_ISALLDAYEVENT_ENTRY );
  1965 	OstTraceFunctionEntry0( CALENEDITORPRIVATE_ISALLDAYEVENT_ENTRY );
  1954 	mReminderField->setCurrentIndex(index);
  1999 	mReminderField->setCurrentIndex(index);
  1955 	OstTraceFunctionExit0( CALENEDITORPRIVATE_SETCURRENTINDEXOFREMINDERFIELD_EXIT );
  2000 	OstTraceFunctionExit0( CALENEDITORPRIVATE_SETCURRENTINDEXOFREMINDERFIELD_EXIT );
  1956 }
  2001 }
  1957 
  2002 
  1958 /*!
  2003 /*!
  1959 	Sets the reminder choices for a non all day event.
  2004 	Gets the reminder options count
  1960  */
  2005  */
  1961 void CalenEditorPrivate::setReminderChoices()
  2006 int CalenEditorPrivate::getReminderCount()
  1962 {
  2007 {
  1963     OstTraceFunctionEntry0( CALENEDITORPRIVATE_SETREMINDERCHOICES_ENTRY );
  2008 	return mReminderField->reminderItemsCount();
  1964     mReminderField->setReminderChoices();
       
  1965     OstTraceFunctionExit0( CALENEDITORPRIVATE_SETREMINDERCHOICES_EXIT );
       
  1966 }
  2009 }
  1967 
  2010 
  1968 /*!
  2011 /*!
  1969 	Checks if editing all occurences or a single occurence.
  2012 	Checks if editing all occurences or a single occurence.
  1970  */
  2013  */