calendarui/caleneditor/src/caleneditorrepeatfield.cpp
changeset 26 a949c2543c15
parent 23 fd30d51f876b
child 49 5de72ea7a065
equal deleted inserted replaced
23:fd30d51f876b 26:a949c2543c15
    16 *
    16 *
    17 */
    17 */
    18 
    18 
    19 
    19 
    20 // System Includes
    20 // System Includes
       
    21 #include <QDate>
    21 #include <hbdataformmodelitem.h>
    22 #include <hbdataformmodelitem.h>
    22 #include <hbdataformviewitem.h>
    23 #include <hbdataformviewitem.h>
    23 #include <hbdataformmodel.h>
    24 #include <hbdataformmodel.h>
    24 #include <hbdataform.h>
    25 #include <hbdataform.h>
    25 #include <hbcombobox.h>
    26 #include <hbcombobox.h>
   176 		// Set the Original entry value also.
   177 		// Set the Original entry value also.
   177 		mCalenEditor->originalEntry()->setRepeatRule(
   178 		mCalenEditor->originalEntry()->setRepeatRule(
   178 									  AgendaRepeatRule(
   179 									  AgendaRepeatRule(
   179 									  AgendaRepeatRule::InvalidRule));
   180 									  AgendaRepeatRule::InvalidRule));
   180 	}
   181 	}
   181 	connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
       
   182 			SLOT(handleRepeatIndexChanged(int)));
       
   183 	
   182 	
   184 	// Update the repeat choices depending upon the duration
   183 	// Update the repeat choices depending upon the duration
   185 	updateRepeatChoices();
   184 	updateRepeatChoices();
       
   185 	connect(mRepeatComboBox, SIGNAL(currentIndexChanged(int)), this,
       
   186 				SLOT(handleRepeatIndexChanged(int)));
   186 }
   187 }
   187 
   188 
   188 /*!
   189 /*!
   189 	Triggerd from tapping on reminder item.
   190 	Triggerd from tapping on reminder item.
   190 	Handles the reminder time change and updates the same in the event.
   191 	Handles the reminder time change and updates the same in the event.
   294 			}
   295 			}
   295 		}
   296 		}
   296 		break;
   297 		break;
   297 	}
   298 	}
   298 	mCalenEditor->addDiscardAction();
   299 	mCalenEditor->addDiscardAction();
       
   300 	mCalenEditor->updateReminderChoices();
   299 }
   301 }
   300 
   302 
   301 /*!
   303 /*!
   302 	 Returns model index of the repeat item
   304 	 Returns model index of the repeat item
   303 	 \return Model index of the repeat item
   305 	 \return Model index of the repeat item
   312  */
   314  */
   313 void CalenEditorRepeatField::insertRepeatUntilItem()
   315 void CalenEditorRepeatField::insertRepeatUntilItem()
   314 {
   316 {
   315 	HbDataFormModelItem::DataItemType itemType =
   317 	HbDataFormModelItem::DataItemType itemType =
   316 	        static_cast<HbDataFormModelItem::DataItemType> (RepeatUntilOffset);
   318 	        static_cast<HbDataFormModelItem::DataItemType> (RepeatUntilOffset);
   317 
   319 	
   318 	QModelIndex repeatIndex = mCalenEditorModel->indexFromItem(mRepeatItem);
   320 	int index = CalenEditorPrivate::RepeatUntilItem;
       
   321 	if (!mCalenEditor->isReminderTimeForAllDayAdded()) {
       
   322 		index -= 1;
       
   323 	}
   319 	mCustomRepeatUntilItem = mCalenEditorModel->insertDataFormItem(
   324 	mCustomRepeatUntilItem = mCalenEditorModel->insertDataFormItem(
   320 										CalenEditorPrivate::RepeatUntilItem,
   325 										index,
   321 										itemType,
   326 										itemType,
   322 										QString(
   327 										QString(
   323 										hbTrId(
   328 										hbTrId(
   324 										"txt_calendar_setlabel_repeat_until")),
   329 										"txt_calendar_setlabel_repeat_until")),
   325 										mCalenEditorModel->invisibleRootItem());
   330 										mCalenEditorModel->invisibleRootItem());
   349 /*!
   354 /*!
   350 	Launches the date picker by tapping on the repaet until pushbutton
   355 	Launches the date picker by tapping on the repaet until pushbutton
   351  */
   356  */
   352 void CalenEditorRepeatField::launchRepeatUntilDatePicker()
   357 void CalenEditorRepeatField::launchRepeatUntilDatePicker()
   353 {
   358 {
       
   359 	HbDialog *popUp = new HbDialog();
       
   360 	popUp->setDismissPolicy(HbDialog::NoDismiss);
       
   361 	popUp->setTimeout(HbDialog::NoTimeout);
       
   362 	popUp->setHeadingWidget( new HbLabel(
       
   363 									hbTrId("txt_calendar_title_repeat_until")));
       
   364 	popUp->setAttribute( Qt::WA_DeleteOnClose, true );
       
   365 	
   354 	if (mDatePicker) {
   366 	if (mDatePicker) {
   355 		mDatePicker = NULL;
   367 		mDatePicker = NULL;
   356 	}
   368 	}
   357 	if (mRepeatRuleType == AgendaRepeatRule::DailyRule) {
   369 	if (mRepeatRuleType == AgendaRepeatRule::DailyRule) {
   358 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addDays(1);
   370 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addDays(1);
   359 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate);
   371 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
   360 		mDatePicker->setMinimumDate(minDate);
   372 		mDatePicker->setMinimumDate(minDate);
   361 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   373 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   362 		mDatePicker->setDate(mRepeatUntilDate);
   374 		mDatePicker->setDate(mRepeatUntilDate);
   363 	} else if (mRepeatRuleType == AgendaRepeatRule::WeeklyRule) {
   375 	} else if (mRepeatRuleType == AgendaRepeatRule::WeeklyRule) {
   364 		QDate minDate;
   376 		QDate minDate;
   365 		if (!mIsBiWeekly || mIsWorkdays) {
   377 		if (!mIsBiWeekly || mIsWorkdays) {
   366 			minDate = mCalenEditor->editedEntry()->endTime().date().addDays(7);
   378 			minDate = mCalenEditor->editedEntry()->endTime().date().addDays(7);
   367 		} else {
   379 		} else {
   368 			minDate = mCalenEditor->editedEntry()->endTime().date().addDays(14);
   380 			minDate = mCalenEditor->editedEntry()->endTime().date().addDays(14);
   369 		}
   381 		}
   370 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate);
   382 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
   371 		mDatePicker->setMinimumDate(minDate);
   383 		mDatePicker->setMinimumDate(minDate);
   372 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   384 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   373 		mDatePicker->setDate(mRepeatUntilDate);
   385 		mDatePicker->setDate(mRepeatUntilDate);
   374 	} else if (mRepeatRuleType == AgendaRepeatRule::MonthlyRule) {
   386 	} else if (mRepeatRuleType == AgendaRepeatRule::MonthlyRule) {
   375 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addMonths(1);
   387 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addMonths(1);
   376 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate);
   388 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
   377 		mDatePicker->setMinimumDate(minDate);
   389 		mDatePicker->setMinimumDate(minDate);
   378 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   390 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   379 		mDatePicker->setDate(mRepeatUntilDate);
   391 		mDatePicker->setDate(mRepeatUntilDate);
   380 	} else if (mRepeatRuleType == AgendaRepeatRule::YearlyRule) {
   392 	} else if (mRepeatRuleType == AgendaRepeatRule::YearlyRule) {
   381 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addYears(1);
   393 		QDate minDate = mCalenEditor->editedEntry()->endTime().date().addYears(1);
   382 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate);
   394 		mDatePicker = new HbDateTimePicker(mRepeatUntilDate, popUp);
   383 		mDatePicker->setMinimumDate(minDate);
   395 		mDatePicker->setMinimumDate(minDate);
   384 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   396 		mDatePicker->setMaximumDate(QDate(31, 12, 2100));
   385 		mDatePicker->setDate(mRepeatUntilDate);
   397 		mDatePicker->setDate(mRepeatUntilDate);
   386 	}
   398 	}
   387 	HbDialog popUp;
   399 	popUp->setContentWidget(mDatePicker);
   388 	popUp.setDismissPolicy(HbDialog::NoDismiss);
   400 	
   389 	popUp.setTimeout(HbDialog::NoTimeout);
       
   390 	popUp.setContentWidget(mDatePicker);
       
   391 	popUp.setHeadingWidget( new HbLabel(
       
   392 								hbTrId("txt_calendar_title_repeat_until")));
       
   393 	HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
   401 	HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"));
   394 	popUp.setPrimaryAction(okAction);
   402 	popUp->addAction(okAction);
   395 	connect(okAction, SIGNAL(triggered()), this, SLOT(setRepeatUntilDate()));
   403 	connect(okAction, SIGNAL(triggered()), this, SLOT(setRepeatUntilDate()));
   396 	connect(okAction, SIGNAL(triggered()), &popUp, SLOT(close()));
   404 	popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popUp));
   397 	popUp.setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"),
   405 	popUp->open();
   398 								&popUp));
       
   399 	popUp.exec();
       
   400 }
   406 }
   401 
   407 
   402 /*!
   408 /*!
   403 	Sets the repeat until date on the repeat until item
   409 	Sets the repeat until date on the repeat until item
   404  */
   410  */
   409 		HbExtendedLocale locale = HbExtendedLocale::system();
   415 		HbExtendedLocale locale = HbExtendedLocale::system();
   410 		QString dateString = locale.format(mRepeatUntilDate,
   416 		QString dateString = locale.format(mRepeatUntilDate,
   411 									r_qtn_date_usual_with_zero);
   417 									r_qtn_date_usual_with_zero);
   412 		mCustomRepeatUntilItem->setContentWidgetData("text", dateString);
   418 		mCustomRepeatUntilItem->setContentWidgetData("text", dateString);
   413 	}
   419 	}
       
   420 	mCalenEditor->updateReminderChoices();
       
   421 }
       
   422 
       
   423 /*!
       
   424 	Returns the repeatuntildate displayed.
       
   425  */
       
   426 QDate CalenEditorRepeatField::repeatUntilDate()
       
   427 {
       
   428 	return mRepeatUntilDate;
   414 }
   429 }
   415 
   430 
   416 /*!
   431 /*!
   417 	Updates the repeat choices depending on the meeting duration
   432 	Updates the repeat choices depending on the meeting duration
   418 */
   433 */
   524 	if (choice >= count) {
   539 	if (choice >= count) {
   525 		choice = count - 1;
   540 		choice = count - 1;
   526 	}
   541 	}
   527 	// Set the previous user's choice
   542 	// Set the previous user's choice
   528 	mRepeatComboBox->setCurrentIndex(choice);
   543 	mRepeatComboBox->setCurrentIndex(choice);
   529 	handleRepeatIndexChanged(choice);
       
   530 }
   544 }
   531 
   545 
   532 /*!
   546 /*!
   533 	Save RepeatRule to the edited entry
   547 	Save RepeatRule to the edited entry
   534  */
   548  */