diff -r 2f8f8080a020 -r ebdbd102c78a phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp --- a/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp Mon May 03 12:31:11 2010 +0300 +++ b/phonesettings/cpphonesettingsplugins/cptelephonyutils/src/cpphonenotes.cpp Fri May 14 15:51:57 2010 +0300 @@ -57,7 +57,7 @@ m_passwordValidator(NULL) { DPRINT << ": IN"; - + m_notesQueue = new QQueue(); m_cpSettingsWrapper = new CpSettingsWrapper; @@ -77,6 +77,10 @@ delete note; } delete m_notesQueue; + if(m_passwordDialog) { + delete m_passwordDialog; + } + DPRINT << ": OUT"; } @@ -92,6 +96,9 @@ HbDeviceProgressDialog *note = new HbDeviceProgressDialog(HbProgressDialog::WaitDialog, this); note->setText(text); + QAction *action = new QAction(hbTrId("txt_common_button_hide"), this); + //Ownership of action is not transferred. Deleted when note closes. + note->setAction(action, HbDeviceProgressDialog::CancelButtonRole ); noteId = reinterpret_cast(note); DPRINT << ", NOTEID: " << noteId; QObject::connect( @@ -175,7 +182,12 @@ HbAction *backAction = new HbAction(hbTrId("txt_common_button_back"), serviceListPopup.data()); serviceListPopup->setPrimaryAction(backAction); - serviceListPopup->exec(); + + HbDialog *serviceListPopupDialog = serviceListPopup.take(); + QObject::connect( + serviceListPopupDialog, SIGNAL(finished(HbAction*)), + serviceListPopupDialog, SLOT(deleteLater())); + serviceListPopupDialog->show(); DPRINT << ": OUT"; } @@ -195,10 +207,7 @@ QObject *note = m_notesQueue->at(index); DPRINT << ": NOTEID: " << noteId; if (qobject_cast(note)) { - // QObject::disconnect( - // note, SIGNAL(cancelled()), - // this, SLOT(ProgresNoteCanceled())); - static_cast(note)->cancel(); + static_cast(note)->close(); } else if (qobject_cast(note)) { static_cast(note)->close(); } else { @@ -326,9 +335,9 @@ { DPRINT << ": IN"; - HbMessageBox *divertInfo = - new HbMessageBox(HbMessageBox::MessageTypeInformation); - divertInfo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + QScopedPointer divertInfoScopedPointer( + new HbMessageBox(HbMessageBox::MessageTypeInformation)); + divertInfoScopedPointer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); // TODO: Orbit layout support is insufficient currently and all text // is not shown. @@ -340,11 +349,17 @@ content.append(QString::number(divertStatus.iTimeout)); content.append(hbTrId(" seconds")); } - divertInfo->setText(content); - HbAction *backAction = new HbAction(hbTrId("txt_common_button_back"), divertInfo); - divertInfo->setPrimaryAction(backAction); - divertInfo->exec(); - delete divertInfo; + divertInfoScopedPointer->setText(content); + HbAction *backAction = new HbAction( + hbTrId("txt_common_button_back"), + divertInfoScopedPointer.data()); + divertInfoScopedPointer->setPrimaryAction(backAction); + + HbMessageBox *divertInfo = divertInfoScopedPointer.take(); + QObject::connect( + divertInfo, SIGNAL(finished(HbAction*)), + divertInfo, SLOT(deleteLater())); + divertInfo->show(); DPRINT << ": OUT"; } @@ -355,9 +370,7 @@ void CpPhoneNotes::showPasswordQueryDialog( const QString &title, const QValidator &validator, - int maxPasswordLength, - QString &password, - bool &ok) + int maxPasswordLength) { DPRINT << ": IN"; @@ -370,32 +383,53 @@ HbLineEdit *hbLineEdit = passwordDialog->lineEdit(); hbLineEdit->setMaxLength(maxPasswordLength); HbEditorInterface editorInterface(hbLineEdit); - editorInterface.setInputMode(HbInputModeNumeric); - editorInterface.setConstraints(HbEditorConstraintFixedInputMode); + + editorInterface.setMode(HbInputModeNumeric); + editorInterface.setInputConstraints(HbEditorConstraintFixedInputMode); + editorInterface.setFilter(HbDigitsOnlyFilter::instance()); - m_passwordDialog = passwordDialog.data(); m_passwordValidator = &validator; passwordDialog->primaryAction()->setEnabled(false); connect( hbLineEdit, SIGNAL(contentsChanged()), this, SLOT(passwordTextChanged())); - HbAction* action = passwordDialog->exec(); - if (action == passwordDialog->secondaryAction()) { - ok = false; - } else { - ok = true; - password = passwordDialog->value().toString(); + passwordDialog->open(this, SLOT(finishedPasswordQueryDialog(HbAction*))); + if(m_passwordDialog) { + m_passwordDialog->deleteLater(); + m_passwordDialog = NULL; + } + m_passwordDialog = passwordDialog.take(); + + DPRINT << ": OUT"; +} + +/*! + CpPhoneNotes::finishedPasswordQueryDialog. + */ +void CpPhoneNotes::finishedPasswordQueryDialog(HbAction* action) +{ + bool ok; + QString password; + if(m_passwordDialog) { + if (action == m_passwordDialog->secondaryAction()) { + ok = false; + } else { + ok = true; + password = m_passwordDialog->value().toString(); + } + + disconnect( + m_passwordDialog->lineEdit(), SIGNAL(contentsChanged()), + this, SLOT(passwordTextChanged())); + + m_passwordDialog->deleteLater(); + m_passwordDialog = NULL; + m_passwordValidator = NULL; + + emit passwordQueryCompleted(password, ok); } - - m_passwordDialog = NULL; - m_passwordValidator = NULL; - disconnect( - hbLineEdit, SIGNAL(contentsChanged()), - this, SLOT(passwordTextChanged())); - - DPRINT << ": OUT"; } /*! @@ -442,7 +476,7 @@ static_cast(note)->show(); } else if (qobject_cast(note)) { DPRINT << ", show HbDeviceMessageBox"; - static_cast(note)->exec(); + static_cast(note)->show(); } else { DPRINT << ", UNKNOWN NOTE"; Q_ASSERT(false); @@ -471,6 +505,11 @@ launchNextNoteIfReady(); note->disconnect(this); DPRINT << ", delete note: " << reinterpret_cast(note); + HbDeviceProgressDialog *pNote = + qobject_cast(note); + if(pNote){ + delete pNote->action(); + } note->deleteLater(); } }