diff -r fd30d51f876b -r b6db4fd4947b calendarui/caleneditor/src/caleneditorcustomitem.cpp --- a/calendarui/caleneditor/src/caleneditorcustomitem.cpp Mon May 03 12:30:32 2010 +0300 +++ b/calendarui/caleneditor/src/caleneditorcustomitem.cpp Mon Jun 28 15:22:02 2010 +0530 @@ -55,7 +55,13 @@ \param parent The parent object. */ CalenEditorCustomItem::CalenEditorCustomItem(QGraphicsItem *parent) -:HbDataFormViewItem(parent) +:HbDataFormViewItem(parent), + mPushButtonTime(NULL), + mPushButtonDate(NULL), + mRepeatUntilWidget(NULL), + mReminderTimeWidget(NULL), + mDatePicker(NULL), + mTimePicker(NULL) { mMinDate = CalenDateUtils::minTime().date(); mMaxDate = CalenDateUtils::maxTime().date(); @@ -113,7 +119,8 @@ case CustomWidgetTo: { HbWidget *widgetBottom = new HbWidget(); - QGraphicsLinearLayout *layoutBottom = new QGraphicsLinearLayout(Qt::Horizontal); + QGraphicsLinearLayout *layoutBottom = + new QGraphicsLinearLayout(Qt::Horizontal); widgetBottom->setLayout(layoutBottom); mPushButtonTime = new HbPushButton(this); @@ -133,20 +140,31 @@ CalenEditorDocLoader editorLocationDocLoader; bool loadSuccess = false; - editorLocationDocLoader.load(CALEN_EDITOR_LOCATION_XML_FILE, &loadSuccess); + editorLocationDocLoader.load(CALEN_EDITOR_LOCATION_XML_FILE, + &loadSuccess); Q_ASSERT_X(loadSuccess, "caleneditor.cpp", - "Unable to load caleneditor location view XML"); - HbWidget* widgetLocation = qobject_cast (editorLocationDocLoader.findWidget(CALEN_EDITOR_LOCATION)); - - mLocationLineEdit = qobject_cast( editorLocationDocLoader.findWidget(CALEN_EDITOR_LOCATION_LINEEDIT)); + "Unable to load caleneditor location view XML"); + HbWidget* widgetLocation = qobject_cast ( + editorLocationDocLoader.findWidget(CALEN_EDITOR_LOCATION)); + + mLocationLineEdit = qobject_cast( + editorLocationDocLoader.findWidget( + CALEN_EDITOR_LOCATION_LINEEDIT)); mLocationLineEdit->setMinRows(1); mLocationLineEdit->setMaxRows(4); - mLocationPushButton = qobject_cast(editorLocationDocLoader.findWidget(CALEN_EDITOR_LOCATION_PUSHBUTTON)); + mLocationPushButton = qobject_cast( + editorLocationDocLoader.findWidget( + CALEN_EDITOR_LOCATION_PUSHBUTTON)); mLocationPushButton->setIcon( HbIcon("qtg_mono_location")); - connect(mLocationPushButton, SIGNAL(clicked()), this, SLOT(launchLocationPicker())); + connect(mLocationPushButton, SIGNAL(clicked()), this, + SLOT(launchLocationPicker())); connect(mLocationLineEdit, SIGNAL(textChanged(const QString)), - this, SLOT(handleLocationTextChange(const QString))); + this, SLOT(handleLocationTextChange(const QString))); + + connect(mLocationLineEdit, SIGNAL(editingFinished()), + this, SLOT(handleEditingFinished())); + return widgetLocation; } @@ -156,7 +174,12 @@ return mRepeatUntilWidget; } - + case ReminderTimeOffset: + { + mReminderTimeWidget = new HbPushButton(this); + return mReminderTimeWidget; + } + default: return 0; } @@ -200,10 +223,14 @@ locationString.append(','); } locationString.append(selectedLocation.mCountry); - emit locationTextChanged(locationString); + emit locationTextChanged(locationString, selectedLocation.mLatitude, selectedLocation.mLongitude); mLocationLineEdit->setText(locationString ); } } + +/*! + Populates the date and time in proper formats on the buttons + */ void CalenEditorCustomItem::populateDateTime(QDateTime defaultDateTime, bool isFromItem) { // Store the date and time to be shown @@ -213,17 +240,22 @@ mIsFromItem = isFromItem; mPushButtonDate->setText(mLocale.format(defaultDateTime.date(), - r_qtn_date_usual_with_zero)); + r_qtn_date_usual_with_zero)); mPushButtonTime->setText(mLocale.format(defaultDateTime.time(), - r_qtn_time_usual_with_zero)); + r_qtn_time_usual_with_zero)); } +/*! + Sets the location on the button + */ void CalenEditorCustomItem::populateLocation(QString location ) { mLocationLineEdit->setText( location ); - } +/*! + Sets the date range + */ void CalenEditorCustomItem::setDateRange(QDate start, QDate end) { mMaxDate = end; @@ -236,82 +268,112 @@ } } +/*! + Sets the time range + */ void CalenEditorCustomItem::setTimeRange(QTime start, QTime end) { mMaxTime = start; mMinTime = end; } +/*! + Enables the date button + */ void CalenEditorCustomItem::enableDateButton(bool value) { mPushButtonDate->setEnabled(value); } - +/*! + Handles the location change + */ void CalenEditorCustomItem::handleLocationTextChange(QString location) { emit locationTextChanged(location); } +/*! + Handles the location editing finished + */ +void CalenEditorCustomItem::handleEditingFinished() +{ + emit locationEditingFinished(); +} - +/*! + Launches the date picker + */ void CalenEditorCustomItem::handleDate() { - // Create a date picker - mDatePicker = new HbDateTimePicker(mDate, this); - mDatePicker->setMinimumDate(mMinDate); - mDatePicker->setMaximumDate(mMaxDate); - // Create a popup with datepicker for the user to select date. - HbDialog popUp; - popUp.setDismissPolicy(HbDialog::NoDismiss); - popUp.setTimeout(HbDialog::NoTimeout); + HbDialog *popUp = new HbDialog(); + popUp->setDismissPolicy(HbDialog::NoDismiss); + popUp->setTimeout(HbDialog::NoTimeout); + popUp->setAttribute( Qt::WA_DeleteOnClose, true ); // Set the proper heading if (mIsFromItem) { - popUp.setHeadingWidget(new HbLabel(hbTrId("txt_calendar_title_start_date"))); - }else { - popUp.setHeadingWidget(new HbLabel(hbTrId("txt_calendar_title_end_date"))); - } - - popUp.setContentWidget(mDatePicker); - HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok")); - popUp.setPrimaryAction(okAction); + popUp->setHeadingWidget( + new HbLabel(hbTrId("txt_calendar_title_start_date"))); + }else { + popUp->setHeadingWidget( + new HbLabel(hbTrId("txt_calendar_title_end_date"))); + } + // Create a date picker + if(mDatePicker) { + mDatePicker = NULL; + } + mDatePicker = new HbDateTimePicker(mDate, popUp); + mDatePicker->setMinimumDate(mMinDate); + mDatePicker->setMaximumDate(mMaxDate); + mDatePicker->setDate(mDate); + popUp->setContentWidget(mDatePicker); + HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"), popUp); + popUp->addAction(okAction); connect(okAction, SIGNAL(triggered()), this, SLOT(saveDate())); - connect(okAction, SIGNAL(triggered()), &popUp, SLOT(close())); - popUp.setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"))); - popUp.exec(); + popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popUp)); + popUp->open(); } +/*! + Launches the time picker + */ void CalenEditorCustomItem::handleTime() { + // Create a popup with time picker for the user to select time. + HbDialog *popUp = new HbDialog(); + popUp->setDismissPolicy(HbDialog::NoDismiss); + popUp->setTimeout(HbDialog::NoTimeout); + popUp->setAttribute( Qt::WA_DeleteOnClose, true ); + + // Set the proper heading + if (mIsFromItem) { + popUp->setHeadingWidget( + new HbLabel(hbTrId("txt_calendar_title_start_time"))); + }else { + popUp->setHeadingWidget( + new HbLabel(hbTrId("txt_calendar_title_end_time"))); + } // Create a time picker. - mTimePicker = new HbDateTimePicker(mTime, this); + if(mTimePicker) { + mTimePicker = NULL; + } + mTimePicker = new HbDateTimePicker(mTime, popUp); + if(mLocale.timeStyle() == HbExtendedLocale::Time12) { mTimePicker->setDisplayFormat("hh:mm ap"); }else { mTimePicker->setDisplayFormat("hh:mm"); } mTimePicker->setTime(mTime); - // Create a popup with time picker for the user to select time. - HbDialog popUp; - popUp.setDismissPolicy(HbDialog::NoDismiss); - popUp.setTimeout(HbDialog::NoTimeout); - - // Set the proper heading - if (mIsFromItem) { - popUp.setHeadingWidget(new HbLabel(hbTrId("txt_calendar_title_start_time"))); - }else { - popUp.setHeadingWidget(new HbLabel(hbTrId("txt_calendar_title_end_time"))); - } - - popUp.setContentWidget(mTimePicker); - HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok")); - popUp.setPrimaryAction(okAction); + popUp->setContentWidget(mTimePicker); + + HbAction *okAction = new HbAction(hbTrId("txt_common_button_ok"), popUp); + popUp->addAction(okAction); connect(okAction, SIGNAL(triggered()), this, SLOT(saveTime())); - connect(okAction, SIGNAL(triggered()), &popUp, SLOT(close())); - popUp.setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"), &popUp)); - popUp.exec(); + popUp->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popUp)); + popUp->open(); } /*! @@ -353,6 +415,18 @@ // Set FromTime in Editor mPushButtonTime->setText(mLocale.format(fromDateTime.time(),r_qtn_time_usual_with_zero)); + + // Store the time + mTime = fromDateTime.time(); +} + +/*! + Disable Date field. + */ +void CalenEditorCustomItem::disableFromToDateField() +{ + // disable the date field. + mPushButtonDate->setEnabled(false); } /*! @@ -364,7 +438,11 @@ mPushButtonTime->setEnabled(enableTimeFiles); // Set ToTime in Editor - mPushButtonTime->setText(mLocale.format(toDateTime.time(),r_qtn_time_usual_with_zero)); + mPushButtonTime->setText(mLocale.format( + toDateTime.time(),r_qtn_time_usual_with_zero)); + + // Store the time + mTime = toDateTime.time(); } /*! @@ -377,7 +455,7 @@ index.data(HbDataFormModelItem::ItemTypeRole).toInt()); if(itemType == CustomWidgetFrom || itemType == CustomWidgetTo || itemType == RepeatUntilOffset - || itemType == CustomWidgetLocation ) { + || itemType == CustomWidgetLocation || itemType == ReminderTimeOffset ) { return true; } else { return false; @@ -400,9 +478,20 @@ mRepeatUntilWidget->setText(modelItem->contentWidgetData("text").toString()); } break; + + case ReminderTimeOffset: + { + mReminderTimeWidget->setText(modelItem->contentWidgetData("text").toString()); + } + break; } } +QDateTime CalenEditorCustomItem::getDateTime() +{ + return QDateTime(mDate, mTime); +} + Q_IMPLEMENT_USER_METATYPE(QLocationPickerItem) // End of file --Don't remove this.