diff -r 000000000000 -r 1ddebce53859 camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamcorderPluginContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/src/GSCamcorderPluginContainer.cpp Thu Jan 07 16:18:56 2010 +0200 @@ -0,0 +1,282 @@ +/* +* Copyright (c) 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: Camcorder sub-menu in General Settings. +* +*/ + + +// INCLUDES +#include //for CAknSettingStyleListBox +#include +#include +#include //for listbox clases +#include // CAknIconArray +#include // CColumnListBoxData + +#include "CamAppUid.h" +#include "GSCamcorderPluginContainer.h" +#include "GSCamcorderPlugin.hrh" +#include "Cam.hrh" +#include "GSCamcorderPlugin.h" +#include + +const TInt KIconArrayGranularity = 2; + +// ========================= MEMBER FUNCTIONS ================================ + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::ConstructL +// Symbian OS default constructor +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::ConstructL( const TRect& aRect ) + { + RDebug::Print( _L( "[CGSCamcorderPluginContainer]: ConstructL - Begin" ) ); + + // Construct iListBox + iListBox = new ( ELeave ) CAknSingleLargeStyleListBox; + BaseConstructL( aRect, R_GS_CAMCORDER_VIEW_TITLE, R_CAM_LBX ); + LoadIconsL(); + RDebug::Print( _L( "[CGSCamcorderPluginContainer]: ConstructL - End" ) ); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::~CGSTelPluginContainer +// Destructor +// --------------------------------------------------------------------------- +// +CGSCamcorderPluginContainer::~CGSCamcorderPluginContainer() + { + delete iListboxItemArray; + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::UpdateListBoxL +// Update listbox item +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::UpdateListBoxL( TInt aFeatureId ) + { + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: UpdateListBoxL - Begin" ) ); + switch ( aFeatureId ) + { + case EVideoSettingsFolder: + MakeVideoSettingsFolderItemL(); + break; + case EImageSettingsFolder: + MakeImageSettingsFolderItemL(); + break; + + default: + break; + } + + // Update the listbox + iListBox->HandleItemAdditionL(); + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: UpdateListBoxL - End" ) ); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::ConstructListBoxL +// Update listbox item +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::ConstructListBoxL( TInt aResLbxId ) + { + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: ConstructListBoxL - Begin" ) ); + iListBox->ConstructL( this, EAknListBoxSelectionList ); + + iListboxItemArray = CGSListBoxItemTextArray::NewL( aResLbxId, + *iListBox, *iCoeEnv ); + iListBox->Model()->SetItemTextArray( iListboxItemArray ); + iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + CreateListBoxItemsL(); + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: ConstructListBoxL - End" ) ); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::CreateListBoxItemsL +// Update listbox item +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::CreateListBoxItemsL() + { + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: CreateListBoxItemsL - Begin" ) ); + MakeVideoSettingsFolderItemL(); + MakeImageSettingsFolderItemL(); + RDebug::Print( + _L( "[CGSCamcorderPluginContainer]: CreateListBoxItemsL - End" ) ); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::CurrentFeatureId +// Get the currently selected feature +// --------------------------------------------------------------------------- +// +TInt CGSCamcorderPluginContainer::CurrentFeatureId() const + { + return iListboxItemArray->CurrentFeature(); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::MakeVideoSettingsFolderItemL +// Create Video Settings folder item +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::MakeVideoSettingsFolderItemL() + { + iListboxItemArray->SetItemVisibilityL( EVideoSettingsFolder, + CGSListBoxItemTextArray::EVisible ); + } + + +// --------------------------------------------------------------------------- +// CGSTelPluginContainer::MakeImageSettingsFolderItemL +// Create Image Settings folder item +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::MakeImageSettingsFolderItemL() + { + iListboxItemArray->SetItemVisibilityL( EImageSettingsFolder, + CGSListBoxItemTextArray::EVisible ); + } + + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::GetHelpContext +// Get help for this view +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::GetHelpContext( + TCoeHelpContext& aContext ) const + { +#ifdef __SERIES60_HELP + aContext.iMajor = TUid::Uid( KCameraappUID ); + aContext.iContext = KLCAM_HLP_SETTINGS; +#endif + } + + + +// ---------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::LoadIconsL +// Load icon bitmaps. +// ---------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::LoadIconsL() + { + RDebug::Print( _L( "[CGSCamcorderPluginContainer]: LoadIconsL - Begin" ) ); + CEikColumnListBox* listbox = static_cast( iListBox ); + + // Delete the old icon array, if any + delete listbox->ItemDrawer()->ColumnData()->IconArray(); + listbox->ItemDrawer()->ColumnData()->SetIconArray( NULL ); + + // Construct a new CAknIconArray for iListBox + CAknIconArray* icons = + new ( ELeave ) CAknIconArray( KIconArrayGranularity ); + CleanupStack::PushL( icons ); + + TParse* fp = new(ELeave) TParse(); + CleanupStack::PushL( fp ); + TInt err = fp->Set(KDirAndFile, &KDC_APP_BITMAP_DIR, NULL); + + if (err != KErrNone) + { + User::Leave(err); + } + TBuf fileName = fp->FullName(); + CleanupStack::PopAndDestroy( fp ); //fp + + AppendIconToArrayL( + icons, + KAknsIIDQgnPropSetCamsImageSub, + fileName, + EMbmCamerasettingspluginQgn_lcam_gen_sett_camera_folder_image, + EMbmCamerasettingspluginQgn_lcam_gen_sett_camera_folder_image_mask ); + + AppendIconToArrayL( + icons, + KAknsIIDQgnPropSetCamsVideoSub, + fileName, + EMbmCamerasettingspluginQgn_lcam_gen_sett_camera_folder_video, + EMbmCamerasettingspluginQgn_lcam_gen_sett_camera_folder_video_mask ); + + CleanupStack::Pop( icons ); // icons + + listbox->ItemDrawer()->ColumnData()->SetIconArray( icons ); + RDebug::Print( _L( "[CGSCamcorderPluginContainer]: LoadIconsL - End" ) ); + } + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::SizeChanged +// Set the size and position of component controls. +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::SizeChanged() + { + if ( iListBox ) + { + iListBox->SetRect( Rect() ); + } + } + + +// ---------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::FocusChanged +//Focus changed for listbox item. +// ---------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::FocusChanged( TDrawNow aDrawNow ) + { + CCoeControl::FocusChanged( aDrawNow ); + if( iListBox ) + { + iListBox->SetFocus( IsFocused(), aDrawNow ); + } + } + +// --------------------------------------------------------------------------- +// CGSCamcorderPluginContainer::AppendIconToArrayL +// Load a possibly skinned icon (with mask) and append it to an +// icon array. +// --------------------------------------------------------------------------- +// +void CGSCamcorderPluginContainer::AppendIconToArrayL( CAknIconArray* aArray, + const TAknsItemID& aID, + const TDesC& aMbmFile, + TInt aBitmapId, + TInt aMaskId ) + { + CGulIcon* icon = AknsUtils::CreateGulIconL( + AknsUtils::SkinInstance(), aID, aMbmFile, + aBitmapId, aMaskId ); + + CleanupStack::PushL( icon ); + aArray->AppendL( icon ); + CleanupStack::Pop( icon ); // icon + } +// End of File