diff -r ac7f88fb2797 -r b3a7d8e28262 fotaapplication/fotaserver/src/fotafullscreendialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fotaapplication/fotaserver/src/fotafullscreendialog.cpp Thu Jul 22 16:43:13 2010 +0100 @@ -0,0 +1,455 @@ +/* + * Copyright (c) 2010 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 "fotafullscreendialog.h" + +#include +#include +#include +#include +#include +#include +#include + + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::FotaFullscreenDialog +// Constructor of the full screen dialogs, it takes all the widgets from the docml +// initializes it and sets the progress bar to zero. +// --------------------------------------------------------------------------- +// + + +FotaFullscreenDialog::FotaFullscreenDialog(CFotaServer* aObserver) + { + FLOG(_L("FotaFullscreenDialog::FotaFullscreenDialog >>")); + bool ok = false; + iServer = aObserver; + iloader.load(":/xml/data/fullscreendialog.docml", &ok); + if (!ok) + { + return; + } + iClicked = EFalse; + idialog = qobject_cast (iloader.findWidget("dialog")); + + idialog->setTimeout(HbPopup::NoTimeout); + + iPrimaryAction = qobject_cast (iloader.findWidget( + "btnHide")); + + iSecondaryAction = qobject_cast (iloader.findWidget( + "btnResumeLater")); + + + + iprogressBar = qobject_cast (iloader.findWidget( + "horizontalProgressBar")); + iprogressBar->setProgressValue(0); + + /*iInstallNote = qobject_cast (iloader.findWidget( + "lblinstallnote"));*/ + iDownloadState = qobject_cast (iloader.findWidget( + "lblDownloadState")); + //iEmergencyIcon = qobject_cast (iloader.findWidget( + // "icnEmergency")); + iChargerIcon = qobject_cast (iloader.findWidget("icnCharger")); + HbIcon iconCharger; + //iconCharger.setIconName(:/icons/qgn_prop_sml_http.svg); + //iChargerIcon->setIcon(iconCharger); + HbIcon iconEmergency; + //iconEmergency.setIconName(:/icons/qgn_prop_sml_http.svg); + //iEmergencyIcon->setIcon(iconEmergency); + //iEmergencyNote = qobject_cast (iloader.findWidget( + // "lblEmergency")); + //iRestartIcon = qobject_cast (iloader.findWidget("icnInstall")); + //HbIcon iconRestart; + //iconRestart.setIconName(:/icons/qgn_prop_sml_http.svg); + //iRestartIcon->setIcon(iconRestart); + //iRestartNote = qobject_cast (iloader.findWidget( + // "lblRestartNote")); + //installEventFilter(this); + iPrimaryAction->setText(hbTrId("txt_common_button_hide")); + iSecondaryAction->setText(hbTrId("txt_device_update_button_resume_later")); + iTitle = qobject_cast (iloader.findWidget("lblTitle")); + iTitle->setPlainText(hbTrId("txt_device_update_title_updating_phone")); + iDownloadState->setPlainText(hbTrId("txt_device_update_info_downloading")); + //iInstallNote->setPlainText(hbTrId( + // "txt_device_update_info_installation_will_proceed_n")); + iChargerNote = qobject_cast (iloader.findWidget("lblcharger")); + iChargerNote->setPlainText(hbTrId( + "txt_device_update_info_FS_its_recommended_to_connec")); + //iRestartNote->setPlainText(hbTrId( + // "txt_device_update_info_FS_after_the_installation_the")); + //iEmergencyNote->setPlainText(hbTrId( + // "txt_device_update_info_FS_during_the_installation_the")); + + QObject::connect(iPrimaryAction, SIGNAL(clicked()), this, + SLOT(LSKSelected())); + QObject::connect(iSecondaryAction, SIGNAL(clicked()), this, + SLOT(RSKSelected())); + QObject::connect(idialog, SIGNAL(aboutToClose()), this, + SLOT(aboutToClose())); + + RefreshDialog(); + FLOG(_L("FotaFullscreenDialog::FotaFullscreenDialog <<")); + } + + + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::refreshDialog +// This function is used to refresh the contents of the full screen dialog +// once it is changed. +// --------------------------------------------------------------------------- +// + + +void FotaFullscreenDialog::RefreshDialog() + { + FLOG(_L("FotaFullscreenDialog::RefreshDialog >>")); + if (idialog) + { + FLOG(_L("FotaFullscreenDialog::idialog >>")); + iClicked = EFalse; + idialog->show(); + } + FLOG(_L("FotaFullscreenDialog::RefreshDialog <<")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::setsoftwaredetails +// This function is called to set the details of the software,which is downloaded. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::SetSoftwareDetails(int size, + const QString version, const QString aName) + { + //set Sw Details + FLOG(_L("FotaFullscreenDialog::RefreshDialog >>")); + iSwDetails = qobject_cast (iloader.findWidget("lblSwVersion")); + QString content; + + TReal sizeKB = size / 1024; + TReal sizeRounded = 0; + QString pkgsize; + + if (sizeKB > 1024) + { + TReal sizeMB = sizeKB / 1024; + Math::Round(sizeRounded,sizeMB,2); + content = hbTrId("txt_device_update_info_new_device_software_availab_Mb") .arg(aName) .arg(version).arg(sizeRounded); + } + else + { + Math::Round(sizeRounded,sizeKB,2); + content = hbTrId("txt_device_update_info_new_device_software_availab_Kb") .arg(aName) .arg(version).arg(sizeRounded); + } + + iSwDetails->setPlainText(content); + FLOG(_L("FotaFullscreenDialog::RefreshDialog <<")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::close +// This slot is called to manually close the dialog. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::Close() + { + FLOG(_L("FotaFullscreenDialog::Close <<")); + iClicked = ETrue; + if (idialog) + idialog->close(); + FLOG(_L("FotaFullscreenDialog::Close >>")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::setwarningdetails +// This function is to set the warnings details of the full screen dialog +// according to the state of the firmware update. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::SetWarningDetails(TFotaWarningType aType) + { + FLOG(_L("FotaFullscreenDialog::SetWarningDetails <<")); + //set heading content + if (aType == EHbFotaDownload) + { + FLOG(_L("FotaFullscreenDialog::EHbFotaDownload")); + idialog->setTimeout(HbPopup::NoTimeout); + iInstallNote = qobject_cast (iloader.findWidget( + "lblinstallnote")); + iInstallNote->setPlainText(hbTrId( + "txt_device_update_info_installation_will_proceed_n")); + //User::After(1000); + iInstallNote->setVisible(false); + + iRestartNote = qobject_cast (iloader.findWidget( + "lblRestartNote")); + iRestartNote->setPlainText(hbTrId( + "txt_device_update_info_FS_after_the_installation_the")); + //User::After(1000); + iRestartNote->setVisible(false); + + iRestartIcon = qobject_cast (iloader.findWidget("icnInstall")); + HbIcon iconRestart; + //iconRestart.setIconName(:/icons/qgn_prop_sml_http.svg); + //iRestartIcon->setIcon(iconRestart); + //User::After(1000); + iRestartIcon->setVisible(false); + + iEmergencyNote = qobject_cast (iloader.findWidget( + "lblEmergency")); + iEmergencyNote->setPlainText(hbTrId( + "txt_device_update_info_FS_during_the_installation_the")); + //User::After(1000); + iEmergencyNote->setVisible(false); + + iEmergencyIcon = qobject_cast (iloader.findWidget( + "icnEmergency")); + HbIcon iconEmergency; + //iconEmergency.setIconName(:/icons/qgn_prop_sml_http.svg); + //iEmergencyIcon->setIcon(iconEmergency); + //User::After(1000); + iEmergencyIcon->setVisible(false); + + } + else if (aType == EHbFotaUpdate) + { + FLOG(_L("FotaFullscreenDialog::EHbFotaUpdate")); + idialog->setTimeout(HbPopup::ContextMenuTimeout); + HbIcon iconCharger; + //iconCharger.setIconName(:/icons/qgn_prop_sml_http.svg); + //iChargerIcon->setIcon(iconCharger); + HbIcon iconRestart; + //iconRestart.setIconName(:/icons/qgn_prop_sml_http.svg); + //iRestartIcon->setIcon(iconRestart); + iInstallNote->setPlainText(hbTrId( + "txt_device_update_info_installation_will_proceed_n")); + iChargerNote->setPlainText(hbTrId( + "txt_device_update_info_FS_its_recommended_to_connec")); + iRestartNote->setPlainText(hbTrId( + "txt_device_update_info_FS_after_the_installation_the")); + iInstallNote->setVisible(true); + iRestartNote->setVisible(true); + iRestartIcon->setVisible(true); + iEmergencyNote->setVisible(true); + iEmergencyIcon->setVisible(true); + iDownloadState->setPlainText(hbTrId( + "txt_device_update_info_download_complete")); + iDownloadState->setVisible(true); + iPrimaryAction->setEnabled(ETrue); + } + else if (aType == EHbFotaLowBattery) + { + FLOG(_L("FotaFullscreenDialog::EHbFotaLowBattery")); + idialog->setTimeout(HbPopup::NoTimeout); + HbIcon iconCharger; + //iconCharger.setIconName(:/icons/qgn_prop_sml_http.svg); + //iChargerIcon->setIcon(iconCharger); + HbIcon iconRestart; + //iconRestart.setIconName(:/icons/qgn_prop_sml_http.svg); + //iRestartIcon->setIcon(iconRestart); + iInstallNote->setPlainText(hbTrId( + "txt_device_update_info_to_proceed_with_installatio")); + iChargerNote->setPlainText(hbTrId( + "txt_device_update_info_FS_after_the_installation_the")); + iRestartNote->setPlainText(hbTrId( + "txt_device_update_info_FS_during_the_installation_the")); + //iEmergencyNote->setPlainText(hbTrId("txt_device_update_info_FS_during_the_installation_the")); + iInstallNote->setVisible(true); + iRestartNote->setVisible(true); + iRestartIcon->setVisible(true); + iEmergencyNote->setVisible(false); + iEmergencyIcon->setVisible(false); + iDownloadState->setPlainText(hbTrId( + "txt_device_update_info_download_complete")); + iDownloadState->setVisible(true); + iPrimaryAction->setText(hbTrId("txt_device_update_button_continue")); + iSecondaryAction->setText(hbTrId( + "txt_device_update_button_install_later")); + iPrimaryAction->setEnabled(EFalse); + } + RefreshDialog(); + FLOG(_L("FotaFullscreenDialog::SetWarningDetails >>")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::updateprogressbar +// This function is called to update the progress bar with the download progress details/. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::UpdateProgressBar(TInt aProgress) + { + FLOG(_L("FotaFullscreenDialog::UpdateProgressBar <<")); + iprogressBar->setProgressValue(aProgress); + FLOG(_L("FotaFullscreenDialog::UpdateProgressBar >>")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::DisableRSK +// This function is called disable the RSK of the dialog when the postpone limeit expires +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::DisableRSK(TBool aVal) + { + FLOG(_L("FotaFullscreenDialog::DisableRSK <<")); + iSecondaryAction->setEnabled(!aVal); + FLOG(_L("FotaFullscreenDialog::DisableRSK >>")); + } + +bool FotaFullscreenDialog::IsLSKEnabled() + { + FLOG(_L("FotaFullscreenDialog::IsLSKEnabled <<")); + return (iPrimaryAction->isEnabled()); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::cancelSelected +// This slot is called when user presses the left softkey of fullscreen dialog. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::LSKSelected() + { + FLOG(_L("FotaFullscreenDialog::LSKSelected <<")); + iClicked = ETrue; + idialog->hide(); + iServer->HandleFullScreenDialogResponse(EHbLSK); + FLOG(_L("FotaFullscreenDialog::LSKSelected >>")); + } + + + // --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::cancelSelected +// This slot is called when user presses the right softkey of fullscreen dialog. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::RSKSelected() + { + FLOG(_L("FotaFullscreenDialog::RSKSelected >>")); + iClicked = ETrue; + idialog->hide(); + iServer->HandleFullScreenDialogResponse(EHbRSK); + FLOG(_L("FotaFullscreenDialog::RSKSelected <<")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::~FotaFullscreenDialog +// Destructor which destroys all the widgets +// --------------------------------------------------------------------------- +// + +FotaFullscreenDialog::~FotaFullscreenDialog() + { + FLOG(_L("~ FotaFullscreenDialog <<")); + + QObject::disconnect(iPrimaryAction, SIGNAL(clicked()), this, + SLOT(LSKSelected())); + QObject::disconnect(iSecondaryAction, SIGNAL(clicked()), this, + SLOT(RSKSelected())); + QObject::disconnect(idialog, SIGNAL(aboutToClose()), this, + SLOT(aboutToClose())); + + if (iprogressBar) + iprogressBar->deleteLater(); + + if (iPrimaryAction) + delete iPrimaryAction; + + if (iSecondaryAction) + delete iSecondaryAction; + + if (iTitle) + delete iTitle; + + if (iSwDetails) + delete iSwDetails; + + if (iInstallNote) + delete iInstallNote; + + if (iRestartNote) + delete iRestartNote; + + if (iRestartIcon) + delete iRestartIcon; + + if (iEmergencyNote) + delete iEmergencyNote; + + if (iEmergencyIcon) + delete iEmergencyIcon; + + if (iDownloadState) + delete iDownloadState; + + if (idialog) + delete idialog; + + FLOG(_L("~ FotaFullscreenDialog >>")); + } + +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::showUpdateDialog +// This function is called when download is complete and update dialog has to be shown. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::ShowUpdateDialog() + { + FLOG(_L("FotaFullscreenDialog::ShowUpdateDialog <<")); + iPrimaryAction->setText(hbTrId("txt_common_button_continue_dialog")); + iSecondaryAction->setText( + hbTrId("txt_device_update_button_install_later")); + SetWarningDetails(EHbFotaUpdate); + FLOG(_L("FotaFullscreenDialog::ShowUpdateDialog >>")); + } + + +void FotaFullscreenDialog::SetVisible(TBool aVisible) +{ + FLOG(_L("RefreshDialog::SetVisible >>")); + RefreshDialog(); + FLOG(_L("RefreshDialog::SetVisible <<")); +} +// --------------------------------------------------------------------------- +// CFotaDownloadNotifHandler::aboutToClose +// This slot is called when full screen dialogs is cloased during a timeout. +// --------------------------------------------------------------------------- +// + +void FotaFullscreenDialog::aboutToClose() + { + FLOG(_L("FotaFullscreenDialog::aboutToClose <<")); + if (!iClicked) + { + FLOG(_L("Calling fotaserver as timedout...")); + iServer->HandleFullScreenDialogResponse(EHbLSK); + } + iClicked = EFalse; + FLOG(_L("FotaFullscreenDialog::aboutToClose >>")); + } + +