diff -r 7d48bed6ce0c -r 987c9837762f cellular/psuinotes/src/psuinotes.cpp --- a/cellular/psuinotes/src/psuinotes.cpp Tue Aug 31 15:45:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,544 +0,0 @@ -/* - * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This component and the accompanying materials are made available - * under the terms of "Eclipse Public License v1.0" - * which accompanies this distribution, and is available - * at the URL "http://www.eclipse.org/legal/epl-v10.html". - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "psuinotes.h" -#include "psuiutils.h" -#include "psuilogging.h" -#include "psuilocalisation.h" - -/*! - PsUiNotes::instance. - */ -PsUiNotes* PsUiNotes::instance() -{ - DPRINT << ": IN"; - - static PsUiNotes theInstance; - - DPRINT << ", instance address: " << reinterpret_cast(&theInstance); - return &theInstance; -} - -/*! - PsUiNotes::PsUiNotes. - */ -PsUiNotes::PsUiNotes(): - QObject(NULL), - m_notesQueue(NULL), - m_isNoteShowingOngoing(false), - m_passwordDialog(NULL), - m_passwordValidator(NULL) - { - DPRINT << ": IN"; - - m_notesQueue = new QQueue(); - - m_psuiSettings = new PsUiSettingsWrapper(); - - // Localization file loading - m_localisation = new PsUiLocalisation(this); - - // Install required translations - m_localisation->installTranslator( - PsUiLocalisation:: - TranslationFileCommon); - m_localisation->installTranslator( - PsUiLocalisation:: - TranslationFileTelephoneCp); - DPRINT << ": OUT"; - } - -/*! - PsUiNotes::~PsUiNotes. - */ -PsUiNotes::~PsUiNotes() -{ - DPRINT << ": IN"; - - delete m_localisation; - - qDeleteAll(*m_notesQueue); - - delete m_psuiSettings; - - delete m_notesQueue; - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::showGlobalProgressNote. - */ -void PsUiNotes::showGlobalProgressNote( - int ¬eId, const QString& text) -{ - DPRINT << ": IN"; - - HbDeviceProgressDialog *note = - new HbDeviceProgressDialog(HbProgressDialog::WaitDialog, this); - note->setText(text); - - if(hbTrId("txt_common_info_requesting") == text){ - QAction *action = new QAction(hbTrId("txt_common_button_hide"), note); - note->setAction(action, HbDeviceProgressDialog::CancelButtonRole ); - } - - noteId = reinterpret_cast(note); - DPRINT << ", NOTEID: " << noteId; - QObject::connect( - note, SIGNAL(aboutToClose()), - this, SLOT(activeNoteAboutToClose())); - QObject::connect( - note, SIGNAL(cancelled()), - this, SLOT(handleProgressNoteCanceled())); - m_notesQueue->enqueue(note); - launchNextNoteIfReady(); - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::showGlobalNote. - */ -void PsUiNotes::showGlobalNote(int ¬eId, const QString& text, - HbMessageBox::MessageBoxType messageBoxType) -{ - DPRINT << ": IN"; - - HbDeviceMessageBox *note - = new HbDeviceMessageBox(text, messageBoxType, this); - if (messageBoxType == HbMessageBox::MessageTypeQuestion || - messageBoxType == HbMessageBox::MessageTypeInformation) { - note->setTimeout(HbPopup::ConfirmationNoteTimeout); - } - else { - note->setTimeout(0); - } - noteId = reinterpret_cast(note); - DPRINT << ", NOTEID: " << noteId; - - QObject::connect( - note, SIGNAL(aboutToClose()), - this, SLOT(activeNoteAboutToClose())); - - m_notesQueue->enqueue(note); - launchNextNoteIfReady(); - - DPRINT << ": OUT"; -} - - -/*! - PsUiNotes::cancelNote. - */ -void PsUiNotes::cancelNote(int noteId) -{ - DPRINT << ": IN"; - - if (!m_notesQueue->isEmpty()) { - QObject *note = m_notesQueue->head(); - if(note == reinterpret_cast(noteId)) { - int index = m_notesQueue->indexOf(reinterpret_cast(noteId)); - Q_ASSERT(-1 < index); - QObject *note = m_notesQueue->at(index); - DPRINT << ": NOTEID: " << noteId; - if (qobject_cast(note)) { - static_cast(note)->close(); - } else if (qobject_cast(note)) { - static_cast(note)->close(); - } else { - DPRINT << ", UNKNOWN NOTE"; - Q_ASSERT(false); - } - } - else { - DPRINT << ": remove from queue, noteId: " << noteId; - m_notesQueue->removeOne(reinterpret_cast(noteId)); - } - } - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::noteShowing. - */ -bool PsUiNotes::noteShowing() -{ - return !m_notesQueue->isEmpty(); -} - -/*! - PsUiNotes::showGlobalErrorNote. - */ -void PsUiNotes::showGlobalErrorNote(int ¬eId, int errorcode) -{ - DPRINT << ": IN"; - - QString errorText = ""; - PsUiUtils::errorCodeTextMapping(errorcode, errorText); - - HbDeviceMessageBox *note - = new HbDeviceMessageBox(errorText, HbMessageBox::MessageTypeWarning, this); - note->setTimeout(0); - noteId = reinterpret_cast(note); - DPRINT << ", NOTEID: " << noteId; - QObject::connect( - note, SIGNAL(aboutToClose()), - this, SLOT(activeNoteAboutToClose())); - m_notesQueue->enqueue(note); - launchNextNoteIfReady(); - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::showCallDivertDetails. - */ -void PsUiNotes::showCallDivertDetails( - const QList &divertingStatusList) -{ - DPRINT << ": IN"; - - DPRINT << ": Status " << divertingStatusList.first()->iStatus; - DPRINT << ": ServiceGroup " << divertingStatusList.first()->iServiceGroup; - - QString status; - QString content; - - switch( divertingStatusList.first()->iStatus ) - { - case DivertingStatusActive: - formatActiveDivertsNoteText(divertingStatusList,content); - break; - case DivertingStatusInactive: - case DivertingStatusNotRegistered: - status.append(hbTrId("txt_phone_dpopinfo_divert_not_active")); - break; - case DivertingStatusNotProvisioned: - status.append(hbTrId("txt_phone_info_not_allowed")); - break; - case DivertingStatusUnknown: - default: - status.append(hbTrId("txt_phone_info_request_not_completed")); - break; - } - if (divertingStatusList.first()->iStatus != DivertingStatusActive) { - showGlobalNotificationDialog(status); - } - else { - HbDeviceMessageBox * note = - new HbDeviceMessageBox(content, HbMessageBox::MessageTypeQuestion, this); - note->setIconVisible(EFalse); - note->setTimeout(0); - HbAction *backAction = - new HbAction(hbTrId("txt_common_button_close_singledialog") ); - note->setAction(backAction, HbDeviceMessageBox::AcceptButtonRole ); - note->setAction(NULL, HbDeviceMessageBox::RejectButtonRole); - - QObject::connect( - note, SIGNAL(aboutToClose()), - this, SLOT(activeNoteAboutToClose())); - - m_notesQueue->enqueue(note); - launchNextNoteIfReady(); - } - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::showPasswordQueryDialog. - */ -void PsUiNotes::showPasswordQueryDialog( - const QString &title, - const QValidator &validator, - int maxPasswordLength) -{ - DPRINT << ": IN"; - - QScopedPointer passwordDialog(new HbInputDialog()); - - // configure editor so that only digits can be inputted - passwordDialog->setPromptText(title); - passwordDialog->setEchoMode(HbLineEdit::Password); - passwordDialog->setInputMethodHints(Qt::ImhDigitsOnly); - passwordDialog->actions().at(0)->setEnabled(false); - - HbLineEdit *hbLineEdit = passwordDialog->lineEdit(); - hbLineEdit->setMaxLength(maxPasswordLength); - - HbEditorInterface editorInterface(hbLineEdit); - editorInterface.setMode(HbInputModeNumeric); - editorInterface.setInputConstraints(HbEditorConstraintFixedInputMode); - editorInterface.setFilter(HbDigitsOnlyFilter::instance()); - - m_passwordValidator = &validator; - - connect( - hbLineEdit, SIGNAL(contentsChanged()), - this, SLOT(passwordTextChanged())); - - passwordDialog->open(this, SLOT(finishedPasswordQueryDialog(HbAction*))); - if(m_passwordDialog) { - m_passwordDialog->deleteLater(); - m_passwordDialog = NULL; - } - m_passwordDialog = passwordDialog.take(); - m_passwordDialog->setParent(this); - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::finishedPasswordQueryDialog. - */ -void PsUiNotes::finishedPasswordQueryDialog(HbAction* action) -{ - bool ok; - QString password; - if(m_passwordDialog) { - if (action == m_passwordDialog->actions().at(1)) { - 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); - } -} - -/*! - PsUiNotes::formatPhoneNumber. - Formats phone number according to locale specific rules. - */ -QString PsUiNotes::formatPhoneNumber(QString number) const -{ - DPRINT << ": IN"; - - QString formattedNumber = number; - - if (m_psuiSettings->numberGroupingSupported() == true) { - //TODO: utilize HbNumberGrouping API when available - } - - // TODO: digit conversion e.g. into arabic-indic -// HbExtendedLocale locale = HbExtendedLocale::system(); -// HbStringUtil::convertDigitsTo(formattedNumber, ArabicIndicDigit); - - DPRINT << ": OUT"; - - return formattedNumber; -} - -/*! - PsUiNotes::launchNextNoteIfReady. - */ -void PsUiNotes::launchNextNoteIfReady() -{ - DPRINT << ": IN"; - - if (m_notesQueue->isEmpty()) { - DPRINT << ", QUEUE EMPTY"; - return; - } - if (!m_isNoteShowingOngoing) { - m_isNoteShowingOngoing = true; - // note is left in the queue so that it can be cancelled at request - QObject *note = m_notesQueue->head(); - DPRINT << ", note: " << reinterpret_cast(note); - if (qobject_cast(note)) { - DPRINT << ", show HbDeviceProgressDialog"; - static_cast(note)->show(); - } else if (qobject_cast(note)) { - DPRINT << ", show HbDeviceMessageBox"; - static_cast(note)->show(); - } else { - DPRINT << ", UNKNOWN NOTE"; - Q_ASSERT(false); - } - } else { - DPRINT << ", BUSY"; - } - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::handleActiveDiverts - */ -void PsUiNotes::formatActiveDivertsNoteText( - const QList &divertingStatusList, - QString &text) -{ - text.append(hbTrId("Active for:") + "\n\n"); //txt_phone_title_active_for - - int entries = divertingStatusList.count(); - DPRINT << ": entries " << entries; - bool dataSet = false; - bool voiceSet = false; - for (int i = 0; entries > i; i++) { - PSCallDivertingStatus *entry = divertingStatusList.at(i); - - if (((entry->iServiceGroup & ServiceGroupVoice) && !voiceSet ) || - ((entry->iServiceGroup & ServiceGroupData)) && !dataSet) { - if ((entry->iServiceGroup & ServiceGroupVoice) && !voiceSet) { - voiceSet = true; - text.append(hbTrId("Voice calls") + "\n"); //txt_phone_info_voice_calls - - } - else if ((entry->iServiceGroup & ServiceGroupData) && !dataSet) { - dataSet = true; - text.append(hbTrId("Video calls") + "\n"); //txt_phone_info_video_calls - } - - QString phoneNumber = formatPhoneNumber(divertingStatusList.at(i)->iNumber); - text.append(hbTrId("To number:\n%L1").arg(phoneNumber) +"\n"); //txt_phone_info_to_numbernl1 - if (0 < entry->iTimeout) { - text.append(hbTrId("Delay time:\n%L1 seconds"). - arg(entry->iTimeout) +"\n\n"); // txt_phone_info_delay_timenln_seconds - } - else { - text.append("\n"); - } - - } - } - // Convert plain text to html - text = Qt::convertFromPlainText(text); -} - -/*! - PsUiNotes::activeNoteAboutToClose. - */ -void PsUiNotes::activeNoteAboutToClose() -{ - DPRINT << ": IN"; - - if (m_isNoteShowingOngoing) { - m_isNoteShowingOngoing = false; - QObject* note(NULL); - if (!m_notesQueue->isEmpty()) { - note = m_notesQueue->dequeue(); - } - if(note) { - launchNextNoteIfReady(); - note->disconnect(this); - DPRINT << ", delete note: " << reinterpret_cast(note); - HbDeviceProgressDialog *pNote = - qobject_cast(note); - note->deleteLater(); - } - } - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::handleProgressNoteCanceled(). - */ -void PsUiNotes::handleProgressNoteCanceled() -{ - DPRINT << ": IN"; - - emit progressNoteCanceled(); - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::passwordTextChanged(). - */ -void PsUiNotes::passwordTextChanged() -{ - DPRINT << ": IN"; - Q_ASSERT(m_passwordDialog && m_passwordValidator); - - HbLineEdit *hbLineEdit = m_passwordDialog->lineEdit(); - int position = 0; - QString password = hbLineEdit->text(); - bool isPasswordValid = - (QValidator::Acceptable == m_passwordValidator->validate( - password, position)); - m_passwordDialog->actions().at(0)->setEnabled(isPasswordValid); - - DPRINT << ": OUT"; -} - - -/*! - PsUiNotes::showNotificationDialog. - */ -void PsUiNotes::showNotificationDialog(const QString& text) -{ - DPRINT << ": IN"; - - HbNotificationDialog *notifDialog = new HbNotificationDialog(); - - notifDialog->setDismissPolicy(HbPopup::TapAnywhere); - notifDialog->setAttribute(Qt::WA_DeleteOnClose, true); - notifDialog->setText(text); - notifDialog->show(); - - DPRINT << ": OUT"; -} - -/*! - PsUiNotes::showGlobalNotificationDialog - */ -void PsUiNotes::showGlobalNotificationDialog(const QString& text) -{ - DPRINT << ": IN"; - - HbDeviceNotificationDialog notifDialog; - - notifDialog.setText(text); - notifDialog.show(); - - DPRINT << ": OUT"; -} - -// End of File.