applicationmanagement/server/src/amwaitprogdialog.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 04 Oct 2010 00:06:35 +0300
changeset 66 f8de2c99bcde
parent 42 aa33c2cb9a50
permissions -rw-r--r--
Revision: 201037 Kit: 201039

/*
 * Copyright (c) 2000 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: Implementation of applicationmanagement components
 *
 */


#include <apgtask.h>
#include <hbaction.h>
#include <eikenv.h>
#include <hblabel.h>
#include <dmindicatorconsts.h>
#include "amwaitprogdialog.h"
#include "ApplicationManagementServer.h"

using namespace NApplicationManagement;

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::AMWaitProgDialog()
// ------------------------------------------------------------------------------------------------
AMWaitProgDialog::AMWaitProgDialog(QString aAppName, MInstallerCallBack& aCallback)
:mDlg(0),m_callback(aCallback)
    {
    mIndi = 0;
    m_appname = aAppName;
    }
// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::~AMWaitProgDialog
// ------------------------------------------------------------------------------------------------
AMWaitProgDialog::~AMWaitProgDialog()
    {
    if(mDlg)
        {
        delete mDlg;
        mDlg=NULL;
        }
    if(mIndi)
        {
        delete mIndi;
        mIndi = NULL;
        }
    }
// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::createWaitDialog
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::createWaitDialog(TInt aType)
    {
    mType = aType;
    if(mDlg==NULL)
        {
        mDlg = new HbProgressDialog(HbProgressDialog::WaitDialog);
        CApplicationManagementUtility::mCurrDlg=mDlg;
        }
    if (aType == EInstallWaitDlg)
        {
        //installing wait dialog
        mDlg->setHeadingWidget(new HbLabel(hbTrId(
                "txt_device_update_title_installing")));
        mDlg->setText(hbTrId("txt_deviceupdate_info_file_1_2").arg(m_appname));
        QString val = hbTrId("txt_common_button_hide");
        HbAction* hide = new HbAction(mDlg);
        hide->setText(val);
        mDlg->clearActions();
        mDlg->addAction(hide);
        val = hbTrId("txt_common_button_cancel");
        HbAction* cancel = new HbAction(mDlg);
        cancel->setText(val);
        mDlg->addAction(cancel);
        QObject::connect(hide, SIGNAL(triggered()), this,
                SLOT(hideAMWaitDialog()));
        QObject::connect(cancel, SIGNAL(triggered()), this,
                SLOT(cancelWaitDialog()));
        
        mDlg->show();
        }
    else
        {
        //uninstalling wait dialog
    mDlg->setHeadingWidget(new HbLabel(hbTrId(
                "txt_device_update_title_removing")));
    mDlg->setText(hbTrId("txt_deviceupdate_info_application_1").arg(m_appname));
        QString val = hbTrId("txt_common_button_hide");
        HbAction* hide = new HbAction();
        hide->setText(val);
        mDlg->clearActions();
        mDlg->addAction(hide);
        val = hbTrId("txt_common_button_cancel");
        QObject::connect(hide, SIGNAL(triggered()), this,
                SLOT(hideAMWaitDialog()));
        mDlg->setAttribute(Qt::WA_DeleteOnClose, true);
        mDlg->show();
        }
    }

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::startIndicator()
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::startIndicator()
        {
    CApplicationManagementUtility::mHidden = 1;
    mIndi = new HbIndicator();
    if (mType == EInstallWaitDlg)
        {
        QString str(hbTrId("txt_device_update_title_installing"));
        mIndi->activate(KScomoProgressIndicatorType, str);
        }
    else
        {
        QString str(hbTrId("txt_device_update_title_removing"));
        mIndi->activate(KScomoProgressIndicatorType, str);
        }
    }

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::closeAMWaitDialog()
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::closeAMWaitDialog()
    {
    CApplicationManagementUtility::mCurrDlg=0;
    if(mDlg)
        {
    mDlg->close();       
        }
    if(mIndi)
        {
        mIndi->deactivate(KScomoProgressIndicatorType);
        }
    }

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::hideAMWaitDialog()
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::hideAMWaitDialog()
    {
    CCoeEnv* coe = CCoeEnv::Static();
    TApaTaskList taskList(coe->WsSession());
        TApaTask task=taskList.FindApp(TUid::Uid(KAppMgmtServerUid));
        if(task.Exists())
            {
            task.SendToBackground();
            }
        startIndicator();
    }

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::cancelDialog()
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::cancelWaitDialog()
    {
    //mInstaller.CancelOperation();
    m_callback.InstallationCancelled();
    closeAMWaitDialog();
    CCoeEnv* coe = CCoeEnv::Static();
    TApaTaskList taskList(coe->WsSession());
    TApaTask task=taskList.FindApp(TUid::Uid(KAppMgmtServerUid));  
    if(task.Exists())
        {
        task.SendToBackground();
        }
    CApplicationManagementUtility::mCurrDlg=0;
    }

// ------------------------------------------------------------------------------------------------
// AMWaitProgDialog::registerInstallRequest
// ------------------------------------------------------------------------------------------------
void AMWaitProgDialog::registerInstallRequest(TRequestStatus &stat)
    {
    //mInstaller = aInstaller;
    m_Stat = &stat;
    }