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 */ |