--- a/psln/Src/PslnMainViewContainer.cpp Fri Jun 25 18:53:58 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,381 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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: Container for Main View.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-// Psln specific.
-#include "PslnMainViewContainer.h"
-#include "PslnUi.h"
-#include "PslnDebug.h"
-#include "PslnConst.h"
-
-// Lists & Icons.
-#include <aknlists.h>
-#include <AknIconArray.h>
-#include <eikclbd.h>
-
-// Framework
-#include <pslnfwplugininterface.h>
-#include "PslnPluginHandler.h"
-
-// Resources
-#include <psln.rsg>
-#include <pslnicon.mbg>
-#include <data_caging_path_literals.hrh>
-
-// Help related.
-#include <csxhelp/skins.hlp.hrh>
-
-// CONSTANTS
-// Tab character.
-_LIT( KTab, "\t" );
-
-// Icon indexes for listbox.
-const TInt KPslnGeneralId = 0;
-const TInt KPslnWallpaperId = 1;
-const TInt KPslnScreenSaverId = 2;
-// Container granularity.
-const TInt KPslnMainConGranularity = 6;
-// Max index of static (i.e. non-ECOM) folder when no plugins loaded.
-const TInt KPslnStaticFolderNum = 2;
-
-// Path to icon file.
-_LIT( KPslnIconFilename, "z:pslnicon.mbm" );
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// ---------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CPslnMainViewContainer::CPslnMainViewContainer( CPslnUi* aPslnUi )
- : iPslnUi( aPslnUi )
- {
- }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CPslnMainViewContainer::~CPslnMainViewContainer()
- {
- // iListBox is deleted in class CPslnBaseContainer.
- delete iItems;
- }
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::ConstructL( const TRect& aRect )
- {
- iListBox = new (ELeave) CAknSingleLargeStyleListBox;
-
- BaseConstructL(
- aRect,
- R_PSLN_SKIN_LIST_VIEW_TITLE,
- R_PSLN_MAIN_VIEW_LBX );
- }
-
-// ---------------------------------------------------------------------------
-// Creates listbox.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::ConstructListBoxL( TInt aResLbxId )
- {
- iItems = iCoeEnv->ReadDesC16ArrayResourceL( aResLbxId );
- CreateListBoxItemsL();
- }
-
-
-// ---------------------------------------------------------------------------
-// Creates listbox items.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::CreateListBoxItemsL()
- {
- PSLN_TRACE_DEBUG("CPslnMainViewContainer::CreateListBoxItemsL BEGIN");
- // Array for icons in the listbox. Owns the icons.
- CAknIconArray* iconList =
- new (ELeave) CAknIconArray( KPslnMainConGranularity );
- CleanupStack::PushL( iconList );
-
- // Find the resource file:
- HBufC* iconFile = HBufC::NewLC( KMaxFileName );
- TPtr fileNamePtr = iconFile->Des();
- GetIconFilePath( fileNamePtr );
-
- // Add non-plugin icons to icon group.
- // General icon.
- AddIconL(
- iconList,
- KAknsIIDQgnPropPslnGeneralSub,
- fileNamePtr,
- EMbmPslniconQgn_prop_psln_general_sub,
- EMbmPslniconQgn_prop_psln_general_sub_mask );
-
- // Wallpaper icon.
- AddIconL(
- iconList,
- KAknsIIDQgnPropPslnWpaperSub,
- fileNamePtr,
- EMbmPslniconQgn_prop_psln_wpaper_sub,
- EMbmPslniconQgn_prop_psln_wpaper_sub_mask );
-
- // Screensaver screensaver.
- AddIconL(
- iconList,
- KAknsIIDQgnPropPslnSsaverSub,
- fileNamePtr,
- EMbmPslniconQgn_prop_psln_ssaver_sub,
- EMbmPslniconQgn_prop_psln_ssaver_sub_mask );
-
- CleanupStack::PopAndDestroy( iconFile );
-
- // Add General Theme static view.
- // Icon location is ok - directly from resources.
- MakeItemL( KPslnGeneralId );
-
- // How many dynamic items have been added in-between.
- TInt offset = 0;
- iPluginArray = iPslnUi->PluginHandler()->GetPluginArray();
- // Create buffers.
- HBufC* buf = HBufC::NewLC( KPslnItemLength );
- TPtr ptrBuf = buf->Des();
- HBufC* item = HBufC::NewLC( KPslnItemLength );
- TPtr ptrItem = item->Des();
- // Add Active Idle (and Application Shell) plugin(s).
- if ( iPluginArray )
- {
- for ( TInt i = 0; i < iPluginArray->Count(); i++ )
- {
- CPslnFWPluginInterface* plugin = iPluginArray->operator[]( i );
- CleanupStack::PushL( plugin );
-
- // TRAP all but OOM, so that plugins cannot cause Psln to fail to
- // launch.
- TRAPD( err,
- offset += MakePluginItemL( *plugin, *iconList, ptrBuf, ptrItem ) );
- if ( err == KErrNoMemory )
- {
- User::Leave( KErrNoMemory );
- }
-
- // Initialize buffers.
- ptrBuf.Zero();
- ptrItem.Zero();
-
- // icon is now owned by icon array and plugin by plugin handler
- CleanupStack::Pop( plugin );
- plugin = NULL;
- }
- }
- CleanupStack::PopAndDestroy( 2, buf ); // buf, item
-
- // Add Screen Saver and Wallpaper static views.
- TBitFlags views = iPslnUi->ViewSupport();
- if ( views.IsSet( CPslnUi::EPslnWallpaperView ) )
- {
- MakeItemL( KPslnWallpaperId, offset );
- }
-
- if ( views.IsSet( CPslnUi::EPslnScreensaverView ) )
- {
- MakeItemL( KPslnScreenSaverId, offset );
- }
-
- iPslnUi->AllViewsDone();
-
- // Destroy the old icons because SetIconArray() does not destroy them.
- CEikColumnListBox* listbox = static_cast<CEikColumnListBox*> ( iListBox );
- CArrayPtr<CGulIcon>* oldIcons =
- listbox->ItemDrawer()->ColumnData()->IconArray();
- if( oldIcons )
- {
- oldIcons->ResetAndDestroy();
- delete oldIcons;
- }
-
- // Transfer ownership of icon array to the lbx.
- listbox->ItemDrawer()->ColumnData()->SetIconArray( iconList );
- CleanupStack::Pop( iconList );
-
- iListBox->HandleItemAdditionL();
- PSLN_TRACE_DEBUG("CPslnMainViewContainer::CreateListBoxItemsL END");
- }
-
-// ---------------------------------------------------------------------------
-// Creates a specific setting item.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::MakeItemL( const TInt aIndex, const TInt aOffset )
- {
- PSLN_TRACE_DEBUG("CPslnMainViewContainer::MakeItemL BEGIN");
- if ( aIndex > iItems->Count() )
- {
- User::Leave( KErrArgument );
- }
- HBufC* item = (*iItems)[aIndex].AllocLC();
- // Reallocating invalidates the original string.
- HBufC* reallocItem = item->ReAllocL( item->Length() + KPslnIconSize );
- CleanupStack::Pop( item );
- item = reallocItem;
- CleanupStack::PushL( item );
- reallocItem = NULL; // do not use anymore.
- TPtr ptr = item->Des();
- if ( aOffset != KErrNotFound )
- {
- iItemArray->InsertL( aIndex + aOffset, ptr );
- }
- else
- {
- iItemArray->InsertL( aIndex, ptr );
- }
- CleanupStack::PopAndDestroy( item );
- PSLN_TRACE_DEBUG("CPslnMainViewContainer::MakeItemL END");
- }
-
-// ---------------------------------------------------------------------------
-// Gets help context for Help application.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KUidPsln;
- aContext.iContext = KSKINS_HLP_APP_MAIN;
- }
-
-// ---------------------------------------------------------------------------
-// Creates a plugin item (with title and icon)
-// ---------------------------------------------------------------------------
-//
-TInt CPslnMainViewContainer::MakePluginItemL(
- CPslnFWPluginInterface& aPlugin, CAknIconArray& aIconList,
- TPtr& aBufPtr, TPtr& aItemPtr )
- {
- TInt offset = 0;
- // Adding icon.
- CGulIcon* icon = aPlugin.CreateIconL();
- CleanupStack::PushL( icon );
- PSLN_TRACE_DEBUG("CPslnMainViewContainer::MakePluginItemL BEGIN");
-
- aPlugin.GetCaptionL( aBufPtr );
- TInt location = KErrNotFound;
- CPslnFWPluginInterface::TPslnFWLocationType locType;
- aPlugin.GetLocationTypeAndIndex( locType, location );
-
- // If it is AS or AI plugin, add it.
- if ( aPlugin.Id().iUid == KPslnASPluginUid.iUid ||
- aPlugin.Id().iUid == KPslnAIPluginUid.iUid )
- {
- TInt upcomingPlace = location + KPslnStaticFolderNum;
- if ( upcomingPlace >= aIconList.Count() )
- {
- upcomingPlace = aIconList.Count();
- }
- aIconList.InsertL( upcomingPlace , icon );
-
- // Let's correct the icon index.
- upcomingPlace = location + KPslnStaticFolderNum;
- aItemPtr.AppendNum( upcomingPlace );
- aItemPtr.Append( KTab );
- aItemPtr.Append( aBufPtr );
- if ( location >= iItemArray->Count() )
- {
- location = iItemArray->Count();
- }
- iItemArray->InsertL( location , aItemPtr );
- offset++;
- }
- else
- {
- aIconList.AppendL( icon );
- // use icon list position as index
- // iconList->Count() is here always at least 1
- // we need to adjust the icon index based on loaded plugins
- // which are inserted between static views.
- aItemPtr.AppendNum( aIconList.Count() - 1 + iAIAdded + iASAdded );
- aItemPtr.Append( KTab );
- aItemPtr.Append( aBufPtr );
- iItemArray->AppendL( aItemPtr );
- }
-
- if ( aPlugin.Id().iUid == KPslnASPluginUid.iUid )
- {
- iASAdded = ETrue;
- }
-
- if ( aPlugin.Id().iUid == KPslnAIPluginUid.iUid )
- {
- iAIAdded = ETrue;
- }
-
- CleanupStack::Pop( icon );
- return offset;
- }
-
-// ---------------------------------------------------------------------------
-// Adds icon to icon array.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::AddIconL(
- CAknIconArray* aIcons,
- const TAknsItemID& aSkinId,
- const TDesC& aFileName,
- TInt aBitmapId,
- TInt aMaskId )
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
- AknsUtils::CreateIconL(
- AknsUtils::SkinInstance(),
- aSkinId,
- bitmap,
- mask,
- aFileName,
- aBitmapId,
- aMaskId );
- CleanupStack::PushL( bitmap );
- CleanupStack::PushL( mask );
- CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
- CleanupStack::Pop( 2, bitmap ); // bitmap, mask
- CleanupStack::PushL( icon );
- if ( aIcons )
- {
- aIcons->AppendL( icon );
- }
- CleanupStack::Pop( icon );
- }
-
-// ---------------------------------------------------------------------------
-// Parses icon file path to given parameter.
-// ---------------------------------------------------------------------------
-//
-void CPslnMainViewContainer::GetIconFilePath( TDes& aPath )
- {
- // Find the resource file:
- TParse parse;
- parse.Set( KPslnIconFilename, &KDC_APP_BITMAP_DIR, NULL );
- if ( aPath.MaxLength() >= parse.FullName().Length() )
- {
- aPath.Copy( parse.FullName() );
- }
- }
-
-// End of File