clock/ftudatetimewizard/src/ftudatetimeview.cpp
changeset 26 a949c2543c15
parent 18 c198609911f9
--- a/clock/ftudatetimewizard/src/ftudatetimeview.cpp	Mon May 03 12:30:32 2010 +0300
+++ b/clock/ftudatetimewizard/src/ftudatetimeview.cpp	Fri May 14 15:51:09 2010 +0300
@@ -60,8 +60,7 @@
 FtuDateTimeView::FtuDateTimeView() :
 HbView(),
 mDatePicker(NULL),
-mTimePicker(NULL),
-mDatetimepopup(NULL)
+mTimePicker(NULL)
 {
 	//TODO: Localisation has to be done
 	// set title for wizard
@@ -73,10 +72,10 @@
 			new FtuDateTimeCustomItem(mDateTimePlaceForm);
 	prototypes.append(customItem);
 	mDateTimePlaceForm->setItemPrototypes(prototypes);
-	
+
 	// Construct the settings utility.
 	mSettingsUtility = new SettingsUtility();
-	mTimeZoneClient = new TimezoneClient();
+	mTimeZoneClient = TimezoneClient::getInstance();
 	mTimeAutoUpdate = mTimeZoneClient->timeUpdateOn();
 }
 
@@ -88,6 +87,10 @@
 	delete mDateTimePlaceForm;
 	delete mDateTimePlaceModel;
 	delete mSettingsUtility;
+
+	if (!mTimeZoneClient->isNull()) {
+		mTimeZoneClient->deleteInstance();
+	}
 }
 /*!
     Creates the main view.
@@ -123,7 +126,7 @@
  */
 void FtuDateTimeView::populateDateTimeGroup()
 {
-	HbDataFormModelItem *dateTimeGroup = 
+	HbDataFormModelItem *dateTimeGroup =
 			mDateTimePlaceModel->appendDataFormGroup
 			(QString(tr("Date and Time")),
 			 mDateTimePlaceModel->invisibleRootItem());
@@ -146,7 +149,7 @@
 								SLOT(populateDatePicker()));
 	mDateTimePlaceForm->addConnection(mTimeItem, SIGNAL(clicked()), this,
 								SLOT(populateTimePicker()));
-	mDateTimePlaceForm->addConnection(mAutoTimeUpdateItem, SIGNAL(clicked()), 
+	mDateTimePlaceForm->addConnection(mAutoTimeUpdateItem, SIGNAL(clicked()),
 								this, SLOT(setAutoTimeupDate()));
 }
 
@@ -165,14 +168,14 @@
 	mCityItem = mDateTimePlaceModel->appendDataFormItem(
 									HbDataFormModelItem::CustomItemBase,
 									QString(tr("City")), mPlaceGroup);
-	
+
 	// Connect the items to the proper slots
 	mDateTimePlaceForm->addConnection(mCountryItem, SIGNAL(clicked()), this,
 									SLOT(populateCitySelectionList()));
 	mDateTimePlaceForm->addConnection(mCityItem, SIGNAL(clicked()), this,
 									SLOT(populateCitySelectionList()));
-	
-	
+
+
 }
 
 /*!
@@ -189,12 +192,12 @@
 	} else {
 		mAutoTimeUpdateItem->setContentWidgetData("text", tr("OFF"));
 	}
-	mCountryItem->setContentWidgetData("text", 
+	mCountryItem->setContentWidgetData("text",
 							mTimeZoneClient->getCurrentZoneInfoL().countryName);
-	mCityItem->setContentWidgetData("text", 
+	mCityItem->setContentWidgetData("text",
 							mTimeZoneClient->getCurrentZoneInfoL().cityName);
 
-	// Set the date,time,country and city fields disable 
+	// Set the date,time,country and city fields disable
 	// if auto time update is ON
 	if (mTimeAutoUpdate) {
 		mDateItem->setEnabled(false);
@@ -209,14 +212,13 @@
  */
 void FtuDateTimeView::populateDatePicker()
 {
-	if (mDatetimepopup) {
-		delete mDatetimepopup;
-		mDatetimepopup = NULL;
+	if (mDatePickerDialog) {
+		delete mDatePickerDialog;
 	}
-	mDatetimepopup = new HbDialog();
+	mDatePickerDialog = new HbDialog();
 
-	mDatetimepopup->setDismissPolicy(HbDialog::NoDismiss);
-	mDatetimepopup->setTimeout(HbDialog::NoDismiss);
+	mDatePickerDialog->setDismissPolicy(HbDialog::NoDismiss);
+	mDatePickerDialog->setTimeout(HbDialog::NoDismiss);
 
 	if(mDatePicker) {
 		mDatePicker = NULL;
@@ -225,54 +227,53 @@
 	                                   this);
 	mDatePicker->setMinimumDate(QDate::fromString("01/01/1900", "dd/MM/yyyy"));
 	mDatePicker->setMaximumDate(QDate::fromString("31/12/2100", "dd/MM/yyyy"));
-	mDatePicker->setDisplayFormat(mSettingsUtility->dateFormatString());
 
-	// Sets the primary action and secondary action
-	HbAction *primaryAction = new HbAction(tr("OK"), mDatetimepopup);
-	HbAction *secondaryAction = new HbAction(tr("Cancel"), mDatetimepopup);
+	mDatePickerDialog->setContentWidget(mDatePicker);
 
-	mDatetimepopup->setPrimaryAction(primaryAction);
-	mDatetimepopup->setSecondaryAction(secondaryAction);
-	mDatetimepopup->setContentWidget(mDatePicker);
+	// Add ok and cancel actions.
+	mOkAction = new HbAction(
+			hbTrId("txt_common_button_ok"), mDatePickerDialog);
+	mCancelAction =  new HbAction(
+			hbTrId("txt_common_button_cancel"), mDatePickerDialog);
 
-	connect(primaryAction, SIGNAL(triggered()), this, SLOT(updateDate()));
-	connect(secondaryAction, SIGNAL(triggered()), mDatetimepopup, SLOT(close()));
-	mDatetimepopup->exec();
+	mDatePickerDialog->addAction(mOkAction);
+	mDatePickerDialog->addAction(mCancelAction);
+
+	mDatePickerDialog->open(this, SLOT(selectedAction(HbAction *)));
 }
 
 /*!
     Populates the Time Picker.
  */
 void FtuDateTimeView::populateTimePicker()
-{   
-	if (mDatetimepopup) {
-		delete mDatetimepopup;
-		mDatetimepopup = NULL;
+{
+	if (mTimePickerDialog) {
+		delete mTimePickerDialog;
 	}
-	mDatetimepopup = new HbDialog();
-	mDatetimepopup->setDismissPolicy(HbDialog::NoDismiss);
-	mDatetimepopup->setTimeout(HbDialog::NoDismiss);
+	mTimePickerDialog = new HbDialog();
+	mTimePickerDialog->setDismissPolicy(HbDialog::NoDismiss);
+	mTimePickerDialog->setTimeout(HbDialog::NoDismiss);
 
 	if(mTimePicker) {
 		mTimePicker = NULL;
 	}
-	mTimePicker = new HbDateTimePicker(QTime().currentTime(),
-	                                   this);
+	mTimePicker = new HbDateTimePicker(
+			QTime().currentTime(), this);
 	mTimePicker->setDisplayFormat(mSettingsUtility->timeFormatString());
 
-	// Sets the primary action and secondary action
-	HbAction *primaryAction = new HbAction(tr("OK"), mDatetimepopup);
-	HbAction *secondaryAction = new HbAction(tr("Cancel"), mDatetimepopup);
+	mTimePickerDialog->setContentWidget(mTimePicker);
 
-	mDatetimepopup->setPrimaryAction(primaryAction);
-	mDatetimepopup->setSecondaryAction(secondaryAction);
+	// Add ok and cancel actions.
+	mOkAction = new HbAction(
+			hbTrId("txt_common_button_ok"), mTimePickerDialog);
 
-	mDatetimepopup->setContentWidget(mTimePicker);
+	mCancelAction = new HbAction(
+			hbTrId("txt_common_button_cancel"), mTimePickerDialog);
 
-	connect(primaryAction, SIGNAL(triggered()), this, SLOT(updateTime()));
-	connect(secondaryAction, SIGNAL(triggered()), mDatetimepopup, SLOT(close()));
+	mTimePickerDialog->addAction(mOkAction);
+	mTimePickerDialog->addAction(mCancelAction);
 
-	mDatetimepopup->exec();
+	mTimePickerDialog->open(this, SLOT(selectedAction(HbAction*)));
 }
 
 /*!
@@ -334,6 +335,27 @@
 }
 
 /*!
+	Slot to handle the selected action.
+ */
+void FtuDateTimeView::selectedAction(HbAction *action)
+{
+	// Update time/date based on the picker selected.
+	if (action == mOkAction) {
+		if (mTimePickerDialog) {
+			updateTime();
+		} else if(mDatePickerDialog) {
+			updateDate();
+		}
+	}else {
+		if(mTimePickerDialog) {
+			mTimePickerDialog->deleteLater();
+		} else if(mDatePickerDialog) {
+			mDatePickerDialog->deleteLater();
+		}
+	}
+}
+
+/*!
     Sets the device date.
  */
 void FtuDateTimeView::updateDate()
@@ -341,7 +363,7 @@
 	QDate date = mDatePicker->date();
 	// Set device Date
 	if (date.isValid()) {
-		mDateItem->setContentWidgetData("text", 
+		mDateItem->setContentWidgetData("text",
 						date.toString(mSettingsUtility->dateFormatString()));
 		mTimeZoneClient->setDateTime(QDateTime(date, QTime::currentTime()));
 		wizardEditedDate(date);
@@ -356,7 +378,7 @@
 	QTime time = mTimePicker->time();
 	// Set device Time
 	if (time.isValid()) {
-		mTimeItem->setContentWidgetData("text", 
+		mTimeItem->setContentWidgetData("text",
 						time.toString(mSettingsUtility->timeFormatString()));
 		mTimeZoneClient->setDateTime(QDateTime(QDate::currentDate(), time));
 		wizardEditedDate(QDate::currentDate());
@@ -370,7 +392,7 @@
 QDate FtuDateTimeView::getWizardCompletedDate()
 {
 	XQSettingsManager *settingsManager = new XQSettingsManager();
-	XQSettingsKey *ftuPluginDateCenrepKey = 
+	XQSettingsKey *ftuPluginDateCenrepKey =
 			new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
 			                  KCRUidClockApp, KFtuPluginDate);
 	// Read the initial values from the cenrep
@@ -392,10 +414,10 @@
 void FtuDateTimeView::wizardEditedDate(const QDate &date)
 {
 	XQSettingsManager *settingsManager = new XQSettingsManager();
-	XQSettingsKey *ftuPluginDateCenrepKey = 
+	XQSettingsKey *ftuPluginDateCenrepKey =
 			new XQSettingsKey(XQSettingsKey::TargetCentralRepository,
 			                  KCRUidClockApp, KFtuPluginDate);
-	QString dateString = date.toString(mSettingsUtility->dateFormatString());  
+	QString dateString = date.toString(mSettingsUtility->dateFormatString());
 	settingsManager->writeItemValue(*ftuPluginDateCenrepKey,dateString);
 
 	// Cleanup.