appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUI.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 12:58:35 +0300
changeset 37 6e7b00453237
parent 0 ba25891c3a9e
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2002-2008 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:   This file contains the implementation of CSisxUI
*                class member functions.
*
*/


// INCLUDE FILES
#include <bautils.h>
#include <eikenv.h>
#include <data_caging_path_literals.hrh>
#include <SisxUIData.rsg>

#include "SisxUI.h"
#include "SisxUIOperationWatcher.h"
#include "SisxUIAppInfo.h"
#include "SWInstDebug.h"
#include "CUIUtils.h"

using namespace SwiUI;

_LIT( KSisxUIResourceFileName, "sisxuiData.rsc" );
_LIT( KSisxUIResourceDir, "\\Resource\\" );

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CSisxUI::CSisxUI
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CSisxUI::CSisxUI()
    {
    }

// -----------------------------------------------------------------------------
// CSisxUI::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CSisxUI::ConstructL()
    {
    TFileName fileName;
    fileName.Append( KSisxUIResourceDir );
    fileName.Append( KSisxUIResourceFileName );
    iResourceFileOffset = CommonUI::CUIUtils::LoadResourceFileL( fileName, CEikonEnv::Static() );
    }

// -----------------------------------------------------------------------------
// CSisxUI::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CSisxUI* CSisxUI::NewL()
    {
    CSisxUI* self = new( ELeave ) CSisxUI();
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;    
    }
    
// Destructor
CSisxUI::~CSisxUI()
    {
    delete iWatcher;    
    
    if( iResourceFileOffset )
        {
        CEikonEnv::Static()->DeleteResourceFile( iResourceFileOffset );
        } 
    }

// -----------------------------------------------------------------------------
// CSisxUI::InstallL
// Perform installation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void CSisxUI::InstallL( RFile& aFile,
                        TInstallReq& aInstallParams, 
                        TBool aIsDRM, 
                        TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
    FLOG_2( _L("SisxUI: Install request with chrSet: %d, ap: %d"),       
            aInstallParams.iCharsetId, aInstallParams.iIAP );
    iWatcher = CSisxUIOperationWatcher::NewL();       
    iWatcher->InstallL( aFile, aInstallParams.iMIME, aIsDRM, aStatus );
    }
       
// -----------------------------------------------------------------------------
// CSisxUI::SilentInstallL
// Perform silent installation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
// 
void CSisxUI::SilentInstallL( RFile& aFile,
                              TInstallReq& aInstallParams, 
                              TBool aIsDRM, 
                              TInstallOptions& aOptions,
                              TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
    FLOG_2( _L("SisxUI: SilentInstall request with chrSet: %d, ap: %d"),       
            aInstallParams.iCharsetId, aInstallParams.iIAP );

    iWatcher = CSisxUIOperationWatcher::NewL();       
    iWatcher->SilentInstallL( aFile, aInstallParams.iMIME, aIsDRM, aOptions, aStatus );
    }

// -----------------------------------------------------------------------------
// CSisxUI::UninstallL
// Perform uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void CSisxUI::UninstallL( const TUid& aUid, 
                          const TDesC8& /*aMIME*/,
                          TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
    FLOG_1( _L("SisxUI: Uninstall request with uid: %x"), aUid.iUid );    

    iWatcher = CSisxUIOperationWatcher::NewL();
    iWatcher->UninstallL( aUid, aStatus );
    }

// -----------------------------------------------------------------------------
// CSisxUI::SilentUninstallL
// Perform silent uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//    
void CSisxUI::SilentUninstallL( const TUid& aUid, 
                                const TDesC8& /*aMIME*/, 
                                TUninstallOptions& aOptions,
                                TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
    FLOG_1( _L("SisxUI: SilentUninstall request with uid: %x"), aUid.iUid );    

    iWatcher = CSisxUIOperationWatcher::NewL();
    iWatcher->SilentUninstallL( aUid, aOptions, aStatus );
    }

// -----------------------------------------------------------------------------
// CSisxUI::IsAppShellUpdate
// Indicates if the application shell must be updated.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
TBool CSisxUI::IsAppShellUpdate()
    {
    return EFalse;
    }

// -----------------------------------------------------------------------------
// CSisxUI::CompleteL
// Cancel the current operation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void CSisxUI::Cancel()
    {    
    if ( iWatcher )
        {
        iWatcher->Cancel();        
        } 
    }

// -----------------------------------------------------------------------------
// CSisxUI::CompleteL
// Informs the plugin about completed operation. Called when all tasks are 
// completed.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
void CSisxUI::CompleteL()
    {
    if ( iWatcher )
        {
        iWatcher->FinalCompleteL();        
        }    
    }
        
/**
*
*/
CErrDetails* CSisxUI::GetErrorDetails()
    {
    return NULL;    
    }

// -----------------------------------------------------------------------------
// CSisxUI::CustomUninstallL
// Perform a custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//    
void CSisxUI::CustomUninstallL( TOperation aOperation, 
                                const TDesC8& aParams, 
                                TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );

    if ( aOperation == EOperationUninstallIndex )
        {
        // The client wants to uninstall a specific augmentation

        // We need to get uid and index from the parambuffer
        TOpUninstallIndexParam params;
        TPckg<TOpUninstallIndexParam> pckg( params );
        pckg.Copy( aParams );

        // Launch the uninstall
        iWatcher = CSisxUIOperationWatcher::NewL();
        iWatcher->UninstallAugmentationL( params.iUid, params.iIndex, aStatus );        
        }
    else
        {
        User::Leave( KErrNotSupported );
        }    
    }

// -----------------------------------------------------------------------------
// CSisxUI::SilentCustomUninstallL
// Perform a silent custom uninstallation.
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//    
void CSisxUI::SilentCustomUninstallL( TOperation aOperation, 
                                      TUninstallOptions& aOptions,
                                      const TDesC8& aParams, 
                                      TRequestStatus& aStatus )
    {
    __ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );

    if ( aOperation == EOperationUninstallIndex )
        {
        // The client wants to uninstall a specific augmentation

        // We need to get uid and index from the parambuffer
        TOpUninstallIndexParam params;
        TPckg<TOpUninstallIndexParam> pckg( params );
        pckg.Copy( aParams );

        // Launch the uninstall
        iWatcher = CSisxUIOperationWatcher::NewL();
        iWatcher->SilentUninstallAugmentationL( params.iUid, aOptions, params.iIndex, aStatus );        
        }
    else
        {
        User::Leave( KErrNotSupported );
        }    
    }

//  End of File