--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mediasettings/mediasettingsapp/src/MPSettingsMainContainer.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,291 @@
+/*
+* Copyright (c) 2002 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: Container class for Main view.*
+*/
+
+
+// Version : %version: 7 %
+
+
+
+
+// INCLUDE FILES
+#include <barsread.h>
+#include <MediaSettings.rsg>
+#include <aknlists.h>
+#include <AknIconArray.h>
+#include <AknsUtils.h>
+#include <gulicon.h>
+#include <calslbs.h>
+#include <eikclbd.h>
+#include <StringLoader.h>
+#include <mediasettings.mbg>
+#include <featmgr.h>
+#include <aknnotewrappers.h>
+#include <textresolver.h>
+#include <AknCommonDialogs.h>
+#include <csxhelp/iptv.hlp.hrh>
+
+#include "MPSettingsApp.h"
+#include "MPSettingsMainContainer.h"
+#include "MPSettingsConstants.h"
+#include "mpxlog.h"
+
+// CONSTANTS
+const TInt KIconArrayGranularity = 3;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMPSettingsMainContainer::CMPSettingsMainContainer
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CMPSettingsMainContainer::CMPSettingsMainContainer()
+ {
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::CMPSettingsMainContainer()"));
+ }
+
+// -----------------------------------------------------------------------------
+// CMPSettingsMainContainer::~CMPSettingsMainContainer
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CMPSettingsMainContainer::~CMPSettingsMainContainer()
+ {
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::~CMPSettingsMainContainer()"));
+ if (iListBox)
+ {
+ delete iListBox;
+ }
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::ConstructComponentControlsL
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::ConstructComponentControlsL()
+ {
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::ConstructComponentControlsL()"));
+ // * Create listbox *
+
+ iListBox = new(ELeave) CAknSingleLargeStyleListBox;
+
+ // Set's iListBox to be contained in this container
+ iListBox->SetContainerWindowL(*this);
+
+ // Construct from resource
+ TResourceReader rReader;
+ iCoeEnv->Static()->CreateResourceReaderLC(rReader,
+ R_MPSETT_MAIN_LBX_RESOURCE);
+
+ // Construct's iListBox from resource file
+ iListBox->ConstructFromResourceL(rReader);
+ CleanupStack::PopAndDestroy(); // rReader
+
+ iListBox->CreateScrollBarFrameL(ETrue);
+ iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
+ CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+
+ MakeIconArrayL();
+
+ iComponentControl = iListBox;
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::HandleResourceChange
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::HandleResourceChange( TInt aType )
+ {
+ MPX_DEBUG2(_L("#MS# CMPSettingsMainContainer::HandleResourceChange(0x%X)"),aType);
+ CCoeControl::HandleResourceChange( aType );
+
+ if( aType == KAknsMessageSkinChange )
+ {
+ TRAPD(err,MakeIconArrayL());
+
+ if( err )
+ {
+ TRAP_IGNORE( HandleResourceChangeErrorL( err ) );
+ }
+ }
+ else if ( aType == KEikDynamicLayoutVariantSwitch ) //Handle change in layout orientation
+ {
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
+ SetRect( mainPaneRect );
+ DrawNow();
+ }
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::HandleResourceChangeErrorL
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::HandleResourceChangeErrorL( TInt aError )
+ {
+ CTextResolver* textresolver = NULL;
+
+ // TextResolver instance for error resolving.
+ textresolver = CTextResolver::NewL();
+
+ if ( textresolver )
+ {
+ // Resolve the error text
+ TPtrC text;
+ text.Set(textresolver->ResolveErrorString( aError ));
+
+ CAknErrorNote* dlg = new (ELeave) CAknErrorNote(ETrue);
+ dlg->ExecuteLD(text);
+
+ delete textresolver;
+ }
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::TitleResourceId
+// ---------------------------------------------------------
+//
+TInt CMPSettingsMainContainer::TitleResourceId()
+ {
+ return R_MPSETT_MAIN_VIEW_TITLE;
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::GetHelpContext
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::GetHelpContext(TCoeHelpContext& aContext) const
+ {
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::GetHelpContext()"));
+ aContext.iMajor = KIptvHelpContextUid;
+ aContext.iContext = KIPTV_HLP_SETTINGS;
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::MakeIconArrayL
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::MakeIconArrayL()
+ {
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::MakeIconArrayL()"));
+
+ TFileName fileName;
+
+ // Construct CAknIconArray for iListBox
+ CEikColumnListBox* listbox =
+ static_cast<CEikColumnListBox*>( iListBox );
+
+ delete listbox->ItemDrawer()->ColumnData()->IconArray();
+ listbox->ItemDrawer()->ColumnData()->SetIconArray( NULL );
+
+ HBufC* mbmpath = StringLoader::LoadLC( R_MPSETT_ICON_MBM_FILE );
+
+ // This is done to ensure upgraded file is used first.
+ // If no upgraded file is found, default file in Z: drive will be used.
+ TFindFile find( CCoeEnv::Static()->FsSession() );
+ TInt err = find.FindByDir( *mbmpath, KNullDesC );
+
+ if ( err )
+ {
+ fileName.Append( *mbmpath );
+ }
+ else
+ {
+ fileName.Append( find.File() );
+ }
+
+ CAknIconArray* icons =
+ new ( ELeave ) CAknIconArray( KIconArrayGranularity );
+ CleanupStack::PushL( icons );
+
+ AppendIconToArrayL(
+ icons,
+ KAknsIIDQgnPropSetMpVideoSub,
+ fileName,
+ EMbmMediasettingsQgn_prop_set_mp_video_sub,
+ EMbmMediasettingsQgn_prop_set_mp_video_sub_mask );
+
+ AppendIconToArrayL(
+ icons,
+ KAknsIIDQgnPropSetMpStreamSub,
+ fileName,
+ EMbmMediasettingsQgn_prop_set_mp_stream_sub,
+ EMbmMediasettingsQgn_prop_set_mp_stream_sub_mask );
+
+ AppendIconToArrayL(
+ icons,
+ KAknsIIDQgnPropSetMpVideoSub,
+ fileName,
+ EMbmMediasettingsQgn_prop_set_service,
+ EMbmMediasettingsQgn_prop_set_service_mask );
+
+ CleanupStack::Pop(); // icons
+ CleanupStack::PopAndDestroy(); // mbmpath
+
+ listbox->ItemDrawer()->ColumnData()->SetIconArray( icons );
+
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::AppendIconToArrayL
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::AppendIconToArrayL(
+ CAknIconArray* aArray,
+ const TAknsItemID& aID,
+ const TDesC& aMbmFile,
+ TInt aBitmapId,
+ TInt aMaskId )
+ {
+
+ MPX_DEBUG1(_L("#MS# CMPSettingsMainContainer::AppendIconToArrayL()"));
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+
+ AknsUtils::CreateIconLC( skin, aID,
+ bitmap, mask, aMbmFile, aBitmapId, aMaskId );
+
+ CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
+ icon->SetBitmapsOwnedExternally( EFalse );
+
+ // icon now owns the bitmaps, no need to keep on cleanup stack.
+ CleanupStack::Pop(2); // mask, bitmap
+ bitmap = NULL;
+ mask = NULL;
+
+ CleanupStack::PushL( icon );
+ aArray->AppendL( icon );
+
+ // aArray now owns the icon, no need to delete.
+ CleanupStack::Pop();
+ }
+
+// ---------------------------------------------------------
+// CMPSettingsMainContainer::FocusChanged
+// ---------------------------------------------------------
+//
+void CMPSettingsMainContainer::FocusChanged(TDrawNow /*aDrawNow*/)
+{
+ if( iListBox)
+ {
+ iListBox->SetFocus( IsFocused() );
+ }
+}
+
+// End of File