--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/model/src/UniSmilParams.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,246 @@
+/*
+* 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:
+* Reads default parameters for composing SMIL from resource file
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32math.h>
+
+#include <barsread.h>
+#include <bautils.h>
+#include <data_caging_path_literals.hrh>
+
+#include <UniDataModel.rsg>
+
+#include "UniSmil.hrh"
+#include "UniSmilParams.h"
+#include "UniModelConst.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CUniSmilParams::CUniSmilParams( const RFs& aSession ) : iSession( aSession )
+ {
+ }
+
+// Symbian OS default constructor can leave.
+void CUniSmilParams::ConstructL()
+ {
+ iComposeParams = new( ELeave ) TUniSmilComposeParam();
+ iImageRegionParams = new( ELeave ) TUniSmilRegionParam();
+ iTextRegionParams = new( ELeave ) TUniSmilRegionParam();
+ ReadResourcesL();
+ }
+
+// Two-phased constructor.
+EXPORT_C CUniSmilParams* CUniSmilParams::NewL( const RFs& aSession )
+ {
+ CUniSmilParams* self = new ( ELeave ) CUniSmilParams( aSession );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// Two-phased constructor.
+EXPORT_C CUniSmilParams* CUniSmilParams::NewLC( const RFs& aSession )
+ {
+ CUniSmilParams* self = new (ELeave) CUniSmilParams( aSession );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// Destructor
+CUniSmilParams::~CUniSmilParams()
+ {
+ delete iImageRegionParams;
+ delete iTextRegionParams;
+ delete iComposeParams;
+ }
+
+
+// ---------------------------------------------------------
+// CUniSmilParams::ReadResourcesL()
+//
+// ---------------------------------------------------------
+//
+void CUniSmilParams::ReadResourcesL()
+ {
+ RResourceFile resFile;
+ OpenResourceFileL( resFile );
+
+ ReadComposeParamResourcesL( resFile );
+ ReadImageRegionResourcesL( resFile );
+ ReadTextRegionResourcesL( resFile );
+
+ resFile.Close();
+ }
+
+// ---------------------------------------------------------
+// ReadComposeParamResourcesL()
+//
+// ---------------------------------------------------------
+//
+void CUniSmilParams::ReadComposeParamResourcesL(
+ const RResourceFile& aResFile )
+ {
+ TResourceReader reader;
+ HBufC8* buf = aResFile.AllocReadLC( R_COMPOSE_PARAMS );
+ reader.SetBuffer( buf );
+
+ iComposeParams->iRootLayoutCompose = reader.ReadInt16();
+ iComposeParams->iDisplayWidth = reader.ReadInt16();
+ iComposeParams->iDisplayHeight = reader.ReadInt16();
+ iComposeParams->iComposeXmlns = reader.ReadInt16();
+ iComposeParams->iTopPadding = reader.ReadInt16();
+ iComposeParams->iRegionPadding = reader.ReadInt16();
+ iComposeParams->iBottomPadding = reader.ReadInt16();
+
+ CleanupStack::PopAndDestroy( buf );
+
+ buf = aResFile.AllocReadLC( R_SLIDE_PARAMS );
+ reader.SetBuffer( buf );
+
+ iComposeParams->iSlideDuration = reader.ReadInt16();
+
+ CleanupStack::PopAndDestroy( buf );
+ }
+
+// ---------------------------------------------------------
+// CUniSmilParams::ReadImageRegionResourcesL
+//
+// ---------------------------------------------------------
+//
+void CUniSmilParams::ReadImageRegionResourcesL(
+ const RResourceFile& aResFile )
+ {
+ TResourceReader reader;
+ HBufC8* buf = aResFile.AllocReadLC( R_IMAGE_REGION_ATTRIBUTES );
+ reader.SetBuffer( buf );
+
+ TPtrC ptr;
+
+ // Id
+ ptr.Set( reader.ReadTPtrC() );
+ iImageRegionParams->iId = HBufC::NewL( ptr.Length() );
+ iImageRegionParams->iId->Des().Copy( ptr );
+
+ // Fit
+ ptr.Set( reader.ReadTPtrC() );
+ iImageRegionParams->iFit = HBufC::NewL( ptr.Length() );
+ iImageRegionParams->iFit->Des().Copy( ptr );
+
+ // Max/Min width/height
+ iImageRegionParams->iMaxSize.iHeight = reader.ReadInt16(); //r_max_height
+ iImageRegionParams->iMinSize.iHeight = reader.ReadInt16(); //r_min_height
+ iImageRegionParams->iMaxSize.iWidth = reader.ReadInt16(); //r_max_width
+ iImageRegionParams->iMinSize.iWidth = reader.ReadInt16(); //r_min_width
+
+ iImageRegionParams->iTopLeft.iY = reader.ReadInt16(); //r_top = 0;
+ iImageRegionParams->iTopLeft.iX = reader.ReadInt16(); //r_left = 0;
+
+ // Default Default ;)
+ iImageRegionParams->iSize = iImageRegionParams->iMaxSize;
+
+ CleanupStack::PopAndDestroy( buf );
+
+ // Make some sanity checks
+ if ( iImageRegionParams->iMaxSize.iHeight < iImageRegionParams->iMinSize.iHeight ||
+ iImageRegionParams->iMaxSize.iWidth < iImageRegionParams->iMinSize.iWidth )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ }
+
+
+// ---------------------------------------------------------
+// CUniSmilParams::ReadTextRegionResourcesL()
+//
+// ---------------------------------------------------------
+//
+void CUniSmilParams::ReadTextRegionResourcesL(
+ const RResourceFile& aResFile )
+ {
+ TResourceReader reader;
+ HBufC8* buf = aResFile.AllocReadLC( R_TEXT_REGION_ATTRIBUTES );
+ reader.SetBuffer( buf );
+
+ TPtrC ptr;
+
+ // Id
+ ptr.Set( reader.ReadTPtrC() );
+ iTextRegionParams->iId = HBufC::NewL( ptr.Length() );
+ iTextRegionParams->iId->Des().Copy( ptr );
+
+ // Fit
+ ptr.Set( reader.ReadTPtrC() );
+ iTextRegionParams->iFit = HBufC::NewL( ptr.Length() );
+ iTextRegionParams->iFit->Des().Copy( ptr );
+
+ // Max/Min width/height
+ //r_max_height
+ iTextRegionParams->iMaxSize.iHeight = reader.ReadInt16();
+ //r_min_height
+ iTextRegionParams->iMinSize.iHeight = reader.ReadInt16();
+ //r_max_width
+ iTextRegionParams->iMaxSize.iWidth = reader.ReadInt16();
+ //r_min_width
+ iTextRegionParams->iMinSize.iWidth = reader.ReadInt16();
+
+ //r_top = 0;
+ iTextRegionParams->iTopLeft.iY = reader.ReadInt16();
+ //r_left = 0;
+ iTextRegionParams->iTopLeft.iX = reader.ReadInt16();
+
+ // Default Default ;)
+ iTextRegionParams->iSize = iTextRegionParams->iMaxSize;
+
+ CleanupStack::PopAndDestroy( buf );
+
+ // Make some sanity checks
+ if ( iTextRegionParams->iMaxSize.iHeight < iTextRegionParams->iMinSize.iHeight ||
+ iTextRegionParams->iMaxSize.iWidth < iTextRegionParams->iMinSize.iWidth )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ }
+
+// ---------------------------------------------------------
+// CUniSmilParams::OpenResourceFileL()
+//
+// ---------------------------------------------------------
+//
+void CUniSmilParams::OpenResourceFileL( RResourceFile& aResFile )
+ {
+ TFileName fileName;
+ TParse parse;
+ parse.Set( KUniDataModelResourceFilename, &KDC_RESOURCE_FILES_DIR, NULL );
+ fileName = parse.FullName();
+ BaflUtils::NearestLanguageFile( iSession, fileName );
+ aResFile.OpenL( const_cast<RFs&>( iSession ), fileName );
+ aResFile.ConfirmSignatureL( KDefResFileSignature );
+ }
+
+// End of File
+