phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewInfo.cpp
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/xSPExtensionManager/src/CxSPViewInfo.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,296 @@
+/*
+* 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 "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: 
+*       xSP view info
+*
+*/
+
+
+// INCLUDE FILES
+#include <AknIconUtils.h>
+#include <coemain.h>
+#include <barsread.h>
+#include <f32file.h>
+
+#include "MxSPViewInfo.h"
+#include "CxSPViewInfo.h"
+#include "TNewViewIdInfo.h"
+#include "ExtensionManagerIcons.hrh"
+
+namespace {
+
+// CONSTANTS
+_LIT( K_MBM_FILE_LOCATION, "\\resource\\ExtensionManager.mbm" );
+}
+
+
+// CONSTANTS
+
+// ==================== MEMBER FUNCTIONS ====================
+CxSPViewInfo::CxSPViewInfo( TUint32 aId ) : iId( aId ),
+											iNewViewId( KErrNotFound )   
+    {
+    }
+
+CxSPViewInfo::~CxSPViewInfo()
+    { 
+    delete iTabIconFile;
+    delete iName;
+    delete iSortIconFile;   
+    }
+
+CxSPViewInfo* CxSPViewInfo::NewLC( TResourceReader& aReader, TUint32 aId )
+    {
+    CxSPViewInfo* self = new (ELeave) CxSPViewInfo( aId );
+    CleanupStack::PushL(self);
+    self->ConstructL( aReader );
+    return self;
+    }
+    
+CxSPViewInfo* CxSPViewInfo::NewLC( const MxSPViewInfo& aInfo, TUint32 aId )
+	{
+	CxSPViewInfo* self = new (ELeave) CxSPViewInfo( aId );
+    CleanupStack::PushL(self);
+    self->ConstructL( aInfo );
+    return self;
+	}
+        
+void CxSPViewInfo::ConstructL( TResourceReader& aReader )
+    {
+    iOldViewId = aReader.ReadInt32();
+    iTabView = aReader.ReadInt32();
+    iTabIconId = aReader.ReadInt32();
+    iTabMaskId = aReader.ReadInt32();
+    HBufC* pathAndFile = aReader.ReadHBufCL();
+    CleanupStack::PushL( pathAndFile );
+    TFindFile findFile( CCoeEnv::Static()->FsSession() );
+    TInt err = findFile.FindByDir( *pathAndFile, KNullDesC );
+    if( err )
+    	{
+    	iTabIconFile = KNullDesC().AllocL();
+    	}
+    else
+    	{
+    	iTabIconFile = findFile.File().AllocL();
+    	}    
+    CleanupStack::PopAndDestroy( pathAndFile );
+    pathAndFile = NULL;
+    
+    TBool tabIconOk = IsBitmapCreatable( *iTabIconFile, iTabIconId );
+	TBool tabMaskOk = IsBitmapCreatable( *iTabIconFile, iTabMaskId );
+    if( !tabIconOk || !tabMaskOk )
+    	{
+    	iTabIconId = qgn_empty_tab;
+    	iTabMaskId = qgn_empty_tab_mask;
+    	findFile.FindByDir( K_MBM_FILE_LOCATION(), KNullDesC );
+    	delete iTabIconFile;
+    	iTabIconFile = NULL;
+    	iTabIconFile = findFile.File().AllocL();
+    	}	
+        
+    iName = aReader.ReadHBufCL();
+    if( !iName )
+    	{
+    	iName = KNullDesC().AllocL();
+    	}
+    iSortIconId = aReader.ReadInt32();
+    iSortMaskId = aReader.ReadInt32();
+        
+    pathAndFile = aReader.ReadHBufCL();
+    CleanupStack::PushL( pathAndFile );
+    err = findFile.FindByDir( *pathAndFile, KNullDesC );
+    if( err )
+    	{
+    	iSortIconFile = KNullDesC().AllocL();
+    	}
+    else
+    	{
+    	iSortIconFile = findFile.File().AllocL();
+    	}    
+    CleanupStack::PopAndDestroy( pathAndFile );
+    
+    TBool sortIconOk = IsBitmapCreatable( *iSortIconFile, iSortIconId );
+	TBool sortMaskOk = IsBitmapCreatable( *iSortIconFile, iSortMaskId );
+    if( !sortIconOk || !sortMaskOk )
+    	{
+    	iSortIconId = qgn_empty_tab;
+    	iSortMaskId = qgn_empty_tab_mask;
+    	findFile.FindByDir( K_MBM_FILE_LOCATION(), KNullDesC );
+    	delete iSortIconFile;
+    	iSortIconFile = NULL;
+    	iSortIconFile = findFile.File().AllocL();
+    	}	
+    }
+ 
+void CxSPViewInfo::ConstructL( const MxSPViewInfo& aInfo )
+	{
+	iOldViewId = aInfo.OldViewId();
+    iTabView = aInfo.TabView();
+    iTabIconId = aInfo.TabIconId();
+    iTabMaskId = aInfo.TabMaskId();
+    HBufC* pathAndFile = aInfo.TabIconFile().AllocL();
+    CleanupStack::PushL( pathAndFile );
+    TFindFile findFile( CCoeEnv::Static()->FsSession() );
+    TInt err = findFile.FindByDir( *pathAndFile, KNullDesC );
+    if( err )
+    	{
+    	iTabIconFile = KNullDesC().AllocL();
+    	}
+    else
+    	{
+    	iTabIconFile = findFile.File().AllocL();
+    	}    
+    CleanupStack::PopAndDestroy( pathAndFile );
+    pathAndFile = NULL;
+    
+    TBool tabIconOk = IsBitmapCreatable( *iTabIconFile, iTabIconId );
+	TBool tabMaskOk = IsBitmapCreatable( *iTabIconFile, iTabMaskId );
+    if( !tabIconOk || !tabMaskOk )
+    	{
+    	iTabIconId = qgn_empty_tab;
+    	iTabMaskId = qgn_empty_tab_mask;
+    	findFile.FindByDir( K_MBM_FILE_LOCATION(), KNullDesC );
+    	delete iTabIconFile;
+    	iTabIconFile = NULL;
+    	iTabIconFile = findFile.File().AllocL();
+    	}
+    	
+    iName = aInfo.Name().AllocL();
+    
+    iSortIconId = aInfo.SortIconId();
+    iSortMaskId = aInfo.SortMaskId();
+    
+    pathAndFile = aInfo.SortIconFile().AllocL();
+    CleanupStack::PushL( pathAndFile );
+    err = findFile.FindByDir( *pathAndFile, KNullDesC );
+    if( err )
+    	{
+    	iSortIconFile = KNullDesC().AllocL();
+    	}
+    else
+    	{
+    	iSortIconFile = findFile.File().AllocL();
+    	}    
+    CleanupStack::PopAndDestroy( pathAndFile );
+    
+    TBool sortIconOk = IsBitmapCreatable( *iSortIconFile, iSortIconId );
+	TBool sortMaskOk = IsBitmapCreatable( *iSortIconFile, iSortMaskId );
+    if( !sortIconOk || !sortMaskOk )
+    	{
+    	iSortIconId = qgn_empty_tab;
+    	iSortMaskId = qgn_empty_tab_mask;
+    	findFile.FindByDir( K_MBM_FILE_LOCATION(), KNullDesC );
+    	delete iSortIconFile;
+    	iSortIconFile = NULL;
+    	iSortIconFile = findFile.File().AllocL();
+    	}
+	}
+    
+TInt CxSPViewInfo::SetNewId( RArray<TNewViewIdInfo>& aPool )
+	{
+	TInt err( KErrNotFound);
+	const TInt count = aPool.Count();
+	for( TInt i = 0; i < count && err; i++ )
+		{
+		TNewViewIdInfo& info = aPool[i];
+		if( info.iFree )
+			{
+			info.iFree = EFalse;
+			err = KErrNone;
+			iNewViewId = info.iId;
+			}
+		}		
+	return err;
+	}
+
+TUint32 CxSPViewInfo::Id() const
+	{
+	return iId;	
+	}
+	
+TInt32 CxSPViewInfo::NewViewId() const
+	{
+	return iNewViewId;	
+	}
+
+TInt32 CxSPViewInfo::OldViewId() const
+	{
+	return iOldViewId;	
+	}
+
+TBool CxSPViewInfo::TabView() const
+	{
+	if ( iTabView == 0 ) 
+		{
+		return EFalse;
+		}
+	else
+		{
+		return ETrue;
+		}
+	}
+
+TInt32 CxSPViewInfo::TabIconId() const
+	{
+	return iTabIconId;	
+	}
+
+TInt32 CxSPViewInfo::TabMaskId() const
+	{
+	return iTabMaskId;	
+	}
+
+const TDesC& CxSPViewInfo::TabIconFile() const
+	{
+	return *iTabIconFile;	
+	}
+	
+const TDesC& CxSPViewInfo::Name() const
+	{
+	return *iName;
+	}
+        
+TInt32 CxSPViewInfo::SortIconId() const
+	{
+	return iSortIconId;
+	}
+
+TInt32 CxSPViewInfo::SortMaskId() const
+	{
+	return iSortMaskId;
+	}
+
+const TDesC& CxSPViewInfo::SortIconFile() const
+	{
+	return *iSortIconFile;
+	}
+	
+TBool CxSPViewInfo::IsBitmapCreatable( const TDesC& aFileName, TInt aId )
+	{	
+	TBool result( EFalse );
+	if( aFileName.Length() && aId >= 0 )
+		{
+		CFbsBitmap* bitmap = NULL;	
+		TInt err;	
+		TRAP( err, bitmap = AknIconUtils::CreateIconL( aFileName, aId ) );
+		if( !err )
+			{
+			delete bitmap;
+			result = ETrue;
+			}	
+		}			
+	return result;						
+	}
+			       
+// end of file