/*
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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 header file of the CWidgetInstallerUI class.
*
* This class implements the ECom SWInstUIPluginAPI interface
* for widget installation.
*
*/
#include <WidgetUI.rsg>
#include <eikenv.h>
#include <data_caging_path_literals.hrh>
#include "CUIUtils.h"
#include "WidgetInstallerUI.h"
#include "WidgetUIOperationsWatcher.h"
#include "BAUTILS.H"
using namespace SwiUI;
_LIT( KResourceFileName, "\\resource\\WidgetInstallerUI.rsc" );
_LIT( KResourceDir, "Z:WidgetInstallerUI.rsc" );
// ============================ MEMBER FUNCTIONS ===============================
// ============================================================================
// CWidgetInstallerUI::CWidgetInstallerUI
// C++ default constructor can NOT contain any code, that
// might leave.
//
// @since 3.1
// ============================================================================
//
CWidgetInstallerUI::CWidgetInstallerUI()
{
}
// ============================================================================
// CWidgetInstallerUI::ConstructL
// Symbian 2nd phase constructor can leave.
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::ConstructL()
{
CCoeEnv::Static()->DisableExitChecks( ETrue );
TFileName resourceFileName;
TParse parse;
Dll::FileName (resourceFileName);
parse.Set(KResourceFileName, &resourceFileName, NULL);
resourceFileName = parse.FullName();
CCoeEnv* coeEnv=CCoeEnv::Static();
BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceFileName);
if ( !BaflUtils::FileExists( coeEnv->FsSession(), resourceFileName ) )
{
// Use resource file on the Z drive instead
parse.Set( KResourceDir, &KDC_RESOURCE_FILES_DIR, NULL );
resourceFileName = parse.FullName();
BaflUtils::NearestLanguageFile( coeEnv->FsSession(),resourceFileName );
}
iResourceFileOffset = coeEnv->AddResourceFileL(resourceFileName);
}
// ============================================================================
// CWidgetInstallerUI::NewL
// Two-phased constructor.
//
// @since 3.1
// ============================================================================
//
CWidgetInstallerUI* CWidgetInstallerUI::NewL()
{
CWidgetInstallerUI* self = new( ELeave ) CWidgetInstallerUI();
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
return self;
}
// ============================================================================
// CWidgetInstallerUI::~CWidgetInstallerUI
// Destructor.
//
// @since 3.1
// ============================================================================
//
CWidgetInstallerUI::~CWidgetInstallerUI()
{
delete iWatcher;
if( iResourceFileOffset )
{
CEikonEnv::Static()->DeleteResourceFile( iResourceFileOffset );
}
}
// ============================================================================
// CWidgetInstallerUI::InstallL
// Perform installation.
// (other items were commented in a header).
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::InstallL( RFile& aFile,
TInstallReq& aInstallParams,
TBool /*aIsDRM*/,
TRequestStatus& aStatus )
{
__ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
TRAPD( err ,
iWatcher = CWidgetUIOperationsWatcher::NewL();
iWatcher->InstallL( aFile, aInstallParams.iMIME, aStatus );
);
if ( KErrNone != err )
{
delete iWatcher;
iWatcher = NULL;
User::Leave( KErrGeneral );
}
}
// ============================================================================
// CWidgetInstallerUI::SilentInstallL
// Perform silent installation.
// (other items were commented in a header).
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::SilentInstallL( RFile& aFile,
TInstallReq& aInstallParams,
TBool /*aIsDRM*/,
TInstallOptions& /*aOptions*/,
TRequestStatus& aStatus )
{
__ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
TRAPD( err ,
iWatcher = CWidgetUIOperationsWatcher::NewL();
iWatcher->SilentInstallL( aFile, aInstallParams.iMIME, aStatus );
);
if ( KErrNone != err )
{
delete iWatcher;
iWatcher = NULL;
User::Leave( KErrGeneral );
}
}
// ============================================================================
// CWidgetInstallerUI::UninstallL
// Perform uninstallation.
// (other items were commented in a header).
//
// @since 3.1
// ============================================================================
//
//
void CWidgetInstallerUI::UninstallL( const TUid& aUid,
const TDesC8& /*aMIME*/,
TRequestStatus& aStatus )
{
__ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
TRAPD(err,
iWatcher = CWidgetUIOperationsWatcher::NewL();
iWatcher->UninstallL( aUid, aStatus );
);
if ( KErrNone != err )
{
delete iWatcher;
iWatcher = NULL;
User::Leave( KErrGeneral );
}
}
// ============================================================================
// CWidgetInstallerUI::SilentUninstallL
// Perform silent uninstallation.
// (other items were commented in a header).
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::SilentUninstallL( const TUid& aUid,
const TDesC8& /*aMIME*/,
TUninstallOptions& /*aOptions*/,
TRequestStatus& aStatus )
{
__ASSERT_ALWAYS( !iWatcher, User::Leave( KErrInUse ) );
TRAPD( err ,
iWatcher = CWidgetUIOperationsWatcher::NewL();
iWatcher->SilentUninstallL( aUid, aStatus );
);
if ( KErrNone != err )
{
delete iWatcher;
iWatcher = NULL;
User::Leave( KErrGeneral );
}
}
// ============================================================================
// CWidgetInstallerUI::IsAppShellUpdate
// Indicates if the application shell must be updated.
// (other items were commented in a header).
//
// @since 3.1
// ============================================================================
//
TBool CWidgetInstallerUI::IsAppShellUpdate()
{
return ETrue;
}
// ============================================================================
// CWidgetInstallerUI::Cancel()
// Cancel the current operation.
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::Cancel()
{
delete iWatcher;
iWatcher = NULL;
}
// ============================================================================
// CWidgetInstallerUI::CompleteL
// Informs the plugin about completed operation. Called when all tasks are
// completed.
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::CompleteL()
{
delete iWatcher;
iWatcher = NULL;
}
// ============================================================================
// CWidgetInstallerUI::GetErrorDetails
//
// @since 3.1
// ============================================================================
//
CErrDetails* CWidgetInstallerUI::GetErrorDetails()
{
return NULL;
}
// ============================================================================
// CWidgetInstallerUI::CustomUninstallL
// Perform a custom uninstallation.
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::CustomUninstallL( TOperation /*aOperation*/,
const TDesC8& /*aParams*/,
TRequestStatus& /*aStatus*/ )
{
User::Leave( KErrNotSupported );
}
// ============================================================================
// CWidgetInstallerUI::SilentCustomUninstallL
// Perform a custom uninstallation.
//
// @since 3.1
// ============================================================================
//
void CWidgetInstallerUI::SilentCustomUninstallL( TOperation /*aOperation*/,
TUninstallOptions& /*aOptions*/,
const TDesC8& /*aParams*/,
TRequestStatus& /*aStatus*/ )
{
User::Leave( KErrNotSupported );
}
// End of File