--- a/gssettingsuis/Gs/GSBackgroundImage/Src/BackgroundImage.cpp Fri Jun 11 16:24:54 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,542 +0,0 @@
-/*
-* Copyright (c) 2005 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 FILES
-#include "backgroundimage.h"
-#include "GsLogger.h"
-#include "settingsinternalcrkeys.h"
-#include "SettingsPrivateCRKeys.h"
-
-#include <aknappui.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AknUtils.h>
-#include <apgcli.h>
-#include <applayout.cdl.h>
-#include <DRMCommon.h>
-#include <Oma1DcfCreator.h> //DRM v2 migration
-#include <s32file.h>
-#include <startupdomaincrkeys.h>
-#include <sysutil.h>
-#include <graphics/bitmapuid.h>
-
-
-
-// CONSTANTS
-// Setting values for Background and Welcome note image
-const TInt KGSBackgroundModeImage = 1;
-// estimated image max size in bytes
-const TInt KGSMaxBackgroundImgSize = 520000;
-// estimated image max size in bytes
-const TInt KGSMaxWelcomeNoteImgSize = 100000;
-const TInt KGSVTStillImageWidth = 176;
-const TInt KGSVTStillImageHeight = 144;
-
-//Personalisation application is availble on ROM (1) or not (0)
-const TInt KGSPlsnOnRom = 1;
-const TInt KGSPlsnNotOnRom = 0;
-
-// other constants
-_LIT( KGSBackgroundImgPath, "c:\\resource\\apps\\backgroundimage.mbm");
-_LIT( KGSVTStillImgPath, "c:\\resource\\apps\\vtstillimage.mbm");
-
-
-
-
-// FORWARD DECLARATIONS
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CGSBackgroundImage::CGSBackgroundImage
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CGSBackgroundImage::CGSBackgroundImage()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CGSBackgroundImage::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CGSBackgroundImage::ConstructL()
- {
- iPersonalizationRepository =
- CRepository::NewL( KCRUidPersonalizationSettings );
- iStartupConfRepository = CRepository::NewL( KCRUidStartupConf );
- iTelephonyRepository = CRepository::NewL( KCRUidTelephonySettings );
-
- iDisplayMode = CEikonEnv::Static()->ScreenDevice()->DisplayMode();
- }
-
-
-// -----------------------------------------------------------------------------
-// CGSBackgroundImage::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CGSBackgroundImage* CGSBackgroundImage::NewL()
- {
- CGSBackgroundImage* self = new( ELeave ) CGSBackgroundImage;
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
-
- return self;
- }
-
-
-// ----------------------------------------------------------------------------
-// Destructor
-//
-//-----------------------------------------------------------------------------
-//
-CGSBackgroundImage::~CGSBackgroundImage()
- {
- delete iPersonalizationRepository;
- delete iStartupConfRepository;
- delete iTelephonyRepository;
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::BackgroundImageL
-//
-// Returns background image mode.
-// DEPRECATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CGSBackgroundImage::BackgroundImageL()
- {
- TInt image;
- User::LeaveIfError( iPersonalizationRepository->
- Get( KSettingsBackgroundImage, image ) );
- return image;
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetBackgroundImageL
-//
-// Sets background image mode.
-// DEPRECATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetBackgroundImageL(const TInt aImage)
- {
- User::LeaveIfError( iPersonalizationRepository->
- Set( KSettingsBackgroundImage, aImage ) );
- if (aImage != KGSBackgroundModeImage)
- {
- // It doesn't matter much if the image deletion fails,
- // so no need to handle the error.
- TRAP_IGNORE( DeleteImageL( KGSBackgroundImgPath ) );
- }
-
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetBackgroundImagePathL
-//
-// Sets background image.
-// DEPRECATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetBackgroundImagePathL(
- const TDesC& aImagePath )
- {
- // Check if there is enough space in disk to store background image
- if (SysUtil::FFSSpaceBelowCriticalLevelL(NULL, KGSMaxBackgroundImgSize))
- {
- // don't show any own notes here
- User::Leave(KErrDiskFull);
- }
-
- // make sure there is no memory leaks because of iBitmap and iDimmedBmp
- if (iBitmap)
- {
- delete iBitmap;
- iBitmap = NULL;
- }
-
- iBitmap = new(ELeave) CFbsBitmap;
-
- TRect appRect = iAvkonAppUi->ApplicationRect();
- TAknLayoutRect layout;
-
- layout.LayoutRect(appRect, AknLayout::wallpaper_pane());
- LoadImageL(aImagePath, layout.Rect().Width(), layout.Rect().Height(),
- ETrue, EGSWallpaperIdle);
- TBuf<1> KGSNullParam;
- SaveBitmapsL( KGSNullParam, KGSNullParam );
-
- delete iBitmap;
- iBitmap = NULL;
- User::LeaveIfError( iPersonalizationRepository->
- Set( KSettingsBackgroundImagePath, KGSBackgroundImgPath ) );
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetBackgroundImagePathL
-// Sets background image. Does not store image to SD
-// Overloaded function, takes 2 parameters
-// DEPRECATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetBackgroundImagePathL(
- const TDesC& aImagePath,
- TDes& aBmpFileName )
- {
- SetBackgroundImagePathL( aImagePath, aBmpFileName, EGSWallpaperIdle );
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetBackgroundImagePathL
-// Sets background image. Does not store image to SD
-// Overloaded function, takes 3 parameters
-// DEPRECATED
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetBackgroundImagePathL(
- const TDesC& aImagePath,
- TDes& aBmpFileName,
- TGSWallpaperType aWallpaperType )
- {
- // Check if there is enough space in disk to store background image
- if (SysUtil::FFSSpaceBelowCriticalLevelL(NULL, KGSMaxBackgroundImgSize))
- {
- // don't show any own notes here
- User::Leave(KErrDiskFull);
- }
-
- // Make sure there is no memory leaks because of iBitmap and iDimmedBmp
- if (iBitmap)
- {
- delete iBitmap;
- iBitmap = NULL;
- }
-
- iBitmap = new(ELeave) CFbsBitmap;
-
- if( aWallpaperType == EGSWallpaperIdle )
- {
- //Reading wallpaper size
- __GSLOGSTRING(
- "[CGSBackgroundImage] SetBackgroundImagePathL |->");
- TRect screenRect( CEikonEnv::Static()->ScreenDevice()->SizeInPixels() );
- TAknLayoutRect appRect;
- appRect.LayoutRect(
- screenRect,
- AknLayout::application_window( screenRect ) );
- TAknLayoutRect mainRectSmall;
- mainRectSmall.LayoutRect(
- appRect.Rect(),
- AknLayout::main_pane( appRect.Rect(), 0, 1, 1 ) );
- TAknLayoutRect layout;
- layout.LayoutRect( mainRectSmall.Rect(), AknLayout::wallpaper_pane() );
-
- __GSLOGSTRING("[CGSBackgroundImage] SetBackgroundImagePathL");
- LoadImageL(aImagePath, layout.Rect().Width(), layout.Rect().Height(),
- ETrue, EGSWallpaperIdle);
- }
- else if( aWallpaperType == EGSWallpaperPinboard )
- {
- //Reading wallpaper size
- __GSLOGSTRING("[CGSBackgroundImage] SetBackgroundImagePathL 1");
-
- TRect screenRect( CEikonEnv::Static()->ScreenDevice()->SizeInPixels() );
- TAknLayoutRect appRect;
- appRect.LayoutRect(
- screenRect,
- AknLayout::application_window( screenRect ) );
- TAknLayoutRect mainRectSmall;
- mainRectSmall.LayoutRect(
- appRect.Rect(),
- AknLayout::main_pane( appRect.Rect(), 0, 0, 1 ) );
- TAknLayoutRect layout;
-
- layout.LayoutRect(
- mainRectSmall.Rect(), AknLayoutScalable_Apps::bg_pinb_pane(0) );
-
- __GSLOGSTRING("[CGSBackgroundImage] SetBackgroundImagePathL 2");
- LoadImageL(aImagePath, layout.Rect().Width(), layout.Rect().Height(),
- ETrue, EGSWallpaperPinboard);
- __GSLOGSTRING("[CGSBackgroundImage] SetBackgroundImagePathL -|");
- }
-
- SaveBitmapsL( aBmpFileName, aImagePath );
-
- delete iBitmap;
- iBitmap = NULL;
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetWelcomeNoteImageL
-//
-// Sets welcome note image's path
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetWelcomeNoteImageL(const TDesC& aImagePath,
- CGSAsyncImageHandling& aImgHandler )
- {
- // Check if there is enough space in disk to store welcome note image
- if ( SysUtil::FFSSpaceBelowCriticalLevelL( NULL, KGSMaxWelcomeNoteImgSize ) )
- {
- // don't show any own notes here
- User::Leave( KErrDiskFull );
- }
-
-
-
- TRect screen = iAvkonAppUi->ApplicationRect();
- TInt screenWidth = screen.Width() - 2;
- TInt screenHeight = screen.Height() - 2;
-
- //rescale
- aImgHandler.ProcessImageL( aImagePath, screenWidth, screenHeight,
- EGSWelcomeNoteImage );
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::LoadImageL
-// Loads an image to bitmap and scales it if it's too large.
-// Deprecated
-// ----------------------------------------------------------------------------
-//
-void CGSBackgroundImage::LoadImageL(const TDesC& /*aImagePath*/,
- TInt /*aWidth*/, TInt /*aHeight*/,
- TBool /*aBgImage*/, TGSWallpaperType /*aWallpaperType*/)
- {
- }
-
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SaveBitmapsL
-// Stores background image and dimmed image to the same mbm file.
-// ----------------------------------------------------------------------------
-//
-void CGSBackgroundImage::SaveBitmapsL( TDes& aBmpFileName,
- const TDesC& aOriginalFullname )
- {
- RFs fs;
- User::LeaveIfError( fs.Connect() );
- CleanupClosePushL( fs );
-
- CDirectFileStore* fileStore;
- if( aBmpFileName != KNullDesC )
- {
- fileStore = CDirectFileStore::ReplaceLC(
- fs, aBmpFileName, EFileWrite );
- }
- else
- {
- fileStore = CDirectFileStore::ReplaceLC(
- fs, KGSBackgroundImgPath, EFileWrite );
- }
-
- TUidType uidType( KDirectFileStoreLayoutUid, KMultiBitmapFileImageUid );
- fileStore->SetTypeL( uidType );
-
- RStoreWriteStream bmpStream;
- TStreamId imgId = bmpStream.CreateLC( *fileStore );
- iBitmap->ExternalizeL( bmpStream );
-
- CleanupStack::PopAndDestroy(); //bmpStream
-
- RStoreWriteStream rootStream;
- // create root stream
- TStreamId rootStreamId = rootStream.CreateLC( *fileStore );
- rootStream.WriteInt32L( 1 ); // number of bitmaps
-
- rootStream << imgId; // stream id of bitmap
-
- CleanupStack::PopAndDestroy(); //rootStream
-
- fileStore->SetRootL( rootStreamId );
- CleanupStack::PopAndDestroy(); // filestore;
-
- TBool isprotected( EFalse );
-
- DRMCommon* drmclient = DRMCommon::NewL();
-
- CleanupStack::PushL( drmclient );
- TInt error = drmclient->Connect();
- if ( error != DRMCommon::EOk )
- {
- User::Leave( KErrCorrupt );
- }
-
- if ( aOriginalFullname != KNullDesC )
- {
- error = drmclient->IsProtectedFile( aOriginalFullname, isprotected );
- if ( error != DRMCommon::EOk )
- {
- User::Leave( KErrCorrupt );
- }
- }
-
-
- if ( isprotected )
- {
- HBufC8* contenturi = NULL;
- HBufC8* mimetype = NULL;
- DRMCommon::TContentProtection contentProtection;
- TUint datalen( 0 );
- CDRMRights* rights = NULL;
-
-
- error = drmclient->GetFileInfo(
- aOriginalFullname, contentProtection,
- mimetype, contenturi, datalen );
- CleanupStack::PushL( mimetype );
- CleanupStack::PushL( contenturi );
- if ( error != DRMCommon::EOk )
- {
- User::Leave( KErrCorrupt );
- }
-
- drmclient->GetActiveRights(
- *contenturi, DRMCommon::EDisplay, rights );
- CleanupStack::PushL( rights );
-
- RFile file;
- User::LeaveIfError( file.Open( fs, aBmpFileName,
- EFileWrite|EFileShareAny ) );
- CleanupClosePushL( file );
-
- TInt filesize( 0 );
- User::LeaveIfError( file.Size( filesize ) );
- HBufC8* content = HBufC8::NewL( filesize ); // use actual filesize
-
- CleanupStack::PushL( content );
-
- TPtr8 readPtr( content->Des() );
- User::LeaveIfError( file.Read( readPtr ) );
-
- CleanupStack::Pop(); // content
- COma1DcfCreator* dcfCreator = COma1DcfCreator::NewL();
- dcfCreator->EncryptContentL( content, *mimetype, rights );
- CleanupStack::PushL( content );
-
- TInt offset = 0;
- User::LeaveIfError( file.Seek( ESeekStart,offset ) );
- TPtr8 writePtr( content->Des() );
- User::LeaveIfError( file.Write( writePtr ) );
- User::LeaveIfError( file.Flush() );
- // mimetype, contenturi, rights, file, content
- CleanupStack::PopAndDestroy(5);
- delete dcfCreator;
- }
-
- drmclient->Disconnect();
- CleanupStack::PopAndDestroy(2); // fs & drmclient
- }
-
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::DeleteImageL
-// Deletes file specified in the parameter.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::DeleteImageL(const TDesC& aImagePath)
- {
- RFs fs;
- User::LeaveIfError(fs.Connect());
- CleanupClosePushL(fs);
-
- User::LeaveIfError(fs.Delete(aImagePath));
-
- CleanupStack::PopAndDestroy(); // fs
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::SetVTStillImagePathL
-//
-// Sets VT still image.
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::SetVTStillImagePathL(
- const TDesC& aImagePath,
- CGSAsyncImageHandling& aImgHandler )
- {
- // Check if there is enough space in disk to store still image
- if (SysUtil::FFSSpaceBelowCriticalLevelL(NULL, KGSMaxBackgroundImgSize))
- {
- // don't show any own notes here
- User::Leave(KErrDiskFull);
- }
- aImgHandler.ProcessImageL( aImagePath, KGSVTStillImageWidth,
- KGSVTStillImageHeight, EGSVtStillImage );
- User::LeaveIfError( iTelephonyRepository->
- Set( KSettingsVTStillImagePath, KGSVTStillImgPath ) );
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::GetPlnsStatus
-//
-// Check if Personalisation application is on the device
-// ----------------------------------------------------------------------------
-//
-EXPORT_C TInt CGSBackgroundImage::GetPlnsStatus()
- {
- TRAP_IGNORE( IsPersonalisationApplicationL() );
- return iPlnsInDevice;
- }
-
-// ----------------------------------------------------------------------------
-// CGSBackgroundImage::IsPersonalisationApplication
-//
-//
-// ----------------------------------------------------------------------------
-//
-EXPORT_C void CGSBackgroundImage::IsPersonalisationApplicationL()
- {
- RApaLsSession session;
- User::LeaveIfError( session.Connect() );
-
- const TUid KUidPsln = { 0x10005A32 };
- TApaAppInfo appInfo;
- TInt search = session.GetAppInfo( appInfo, KUidPsln );
- session.Close();
-
- if ( search == KErrNone )
- {
- TParse fileInfo;
- fileInfo.Set( appInfo.iFullName, NULL, NULL );
- TPtrC drive = fileInfo.Drive();
- _LIT( KZDrive, "Z:" );
- if ( drive == KZDrive )
- {
- iPlnsInDevice = KGSPlsnOnRom;
- }
- else
- {
- iPlnsInDevice = KGSPlsnNotOnRom;
- }
- }
- else
- {
- iPlnsInDevice = KErrNotFound;
- }
- }
-
-
-// End of File