scrsaver/scrsaverplugins/ScreenSaverAnimPlugin/src/ScreenSaverAnimPluginContainer.cpp
changeset 14 8a173132b0aa
parent 2 058b1fc1663a
--- a/scrsaver/scrsaverplugins/ScreenSaverAnimPlugin/src/ScreenSaverAnimPluginContainer.cpp	Mon Jan 18 20:19:52 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,614 +0,0 @@
-/*
-* 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: 
-*       Provides  ScreenSaverAnimPlugin edit list view container methods.
-*
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include <aknlists.h>
-#include <akntitle.h>
-#include <aknslider.h> 
-#include <aknsettingpage.h> 
-#include <aknslidersettingpage.h> 
-#include <CFLDFileListContainer.h>
-#include <MGFetch.h>
-#include <DRMHelper.h>
-#include <screensaveranimplugin.rsg>
-#include <barsread.h>
-#include <centralrepository.h>
-
-#include "ScreenSaverAnimPlugin.h"
-#include "ScreenSaverAnimPluginConst.h"
-#include "ScreenSaverAnimPluginHelper.h"
-#include "ScreenSaverAnimPluginContainer.h"
-#include "ScreenSaverAnimPlugin.hrh"
-
-// ========================= MEMBER FUNCTIONS ================================
- CScreenSaverAnimPluginContainer* CScreenSaverAnimPluginContainer::NewLC(
-                               CScreenSaverAnimPlugin* aCaller,
-                               const CCoeControl* aParent, 
-                               CScreenSaverAnimSettingObject* aSettingObject )
-    {
-    CScreenSaverAnimPluginContainer* self = 
-      new ( ELeave )  CScreenSaverAnimPluginContainer( aCaller, 
-                                                       aSettingObject );
-    CleanupStack::PushL( self );    
-    TRect rect;
-    self->GetNormalScreenLayoutRect( rect );
-    self->ConstructL(aParent, rect );
-    return self;
-
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::NewL 
-// ---------------------------------------------------------------------------
-//
-    
-CScreenSaverAnimPluginContainer* CScreenSaverAnimPluginContainer::NewL(
-                               CScreenSaverAnimPlugin* aCaller,
-                               const CCoeControl* aParent, 
-                               CScreenSaverAnimSettingObject* aSettingObject )
-    {
-    CScreenSaverAnimPluginContainer* self = 
-       CScreenSaverAnimPluginContainer::NewLC( aCaller,
-                                               aParent,
-                                               aSettingObject );
-    CleanupStack::Pop( self );
-    return self;  
-
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor
-// 
-// ---------------------------------------------------------------------------
-//
-CScreenSaverAnimPluginContainer::CScreenSaverAnimPluginContainer(
-                               CScreenSaverAnimPlugin* aCaller, 
-                               CScreenSaverAnimSettingObject* aSettingObject )
-    :
-    iSettingObject( aSettingObject ),
-    iCaller( aCaller )    
-    {
-    }
-
- 
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::ConstructL(const TRect& aRect)
-// EPOC two phased constructor
-// 
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::ConstructL( const CCoeControl* aParent,
-                                                  const TRect& aRect )
-    {
-#ifdef SCREENSAVER_LOG_ENABLED
-    _LIT( msg, "In ConstructL of container" );
-    PrintDebugMsg( msg );
-#endif    
-
-    CreateWindowL( aParent ); 
-
-#ifdef SCREENSAVER_LOG_ENABLED
-    _LIT( msg1, "Window Created" );
-    PrintDebugMsg( msg1 );
-#endif
-
-    BaseConstructL( aRect, NULL, R_SANIM_SETTING_LBX_ITEMS );
-
-#ifdef SCREENSAVER_LOG_ENABLED
-    _LIT( msg2, "Base ConstructL called" );
-    PrintDebugMsg( msg2 );
-#endif
-
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::BaseConstructL
-
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::BaseConstructL( 
-    const TRect& aRect, TInt /* aTitleId */, TInt aResLbxId )
-    {
-    // Feature support should only be read once. It should not change run-time.
-    GetFeatureSupportL( iFeaturesSupport );
-    CEikStatusPane* sp = static_cast< CAknAppUi* >( 
-        CEikonEnv::Static()->EikAppUi() )->StatusPane();
-    CAknTitlePane* title = static_cast<CAknTitlePane*>( 
-        sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) );
-
-    iListBox = new( ELeave ) CAknSettingStyleListBox; 
-
-    ConstructListBoxL( aResLbxId );
-    iListBox->SetContainerWindowL( *this );
-    iListBox->SetRect( aRect );
-
-    iListBox->CreateScrollBarFrameL( ETrue );
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( 
-        CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto );
-
-    SetRect( aRect );
-    ActivateL();
-
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::~CScreenSaverAnimPluginContainer()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CScreenSaverAnimPluginContainer::~CScreenSaverAnimPluginContainer()
-    {
-    delete iItems;
-    delete iListBox;
-    // delete iItemArray;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets feature support - see screensaveranimpluginconst.h for feature list.
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::GetFeatureSupportL( 
-    TBitFlags& aFeatureBitFlags ) const
-    {
-    CRepository* featureRep = CRepository::NewLC( KCRUidThemesVariation );
-    TInt value = KErrNone;
-    featureRep->Get( KThemesLocalVariation, value );
-
-    aFeatureBitFlags.ClearAll();
-
-    //map value to feature flags
-    if ( value & KScreenSaverRemoveAnimPluginTimeout )
-        {
-        aFeatureBitFlags.Set( EAnimPluginBacklightRemoved );
-        }
-
-    CleanupStack::PopAndDestroy( featureRep );
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if feature is supported.
-// ---------------------------------------------------------------------------
-//
-TBool CScreenSaverAnimPluginContainer::IsFeatureSupported( TInt aFeatureID )
-    {
-    if ( ( aFeatureID >= 0 ) && ( aFeatureID < KAnimPluginMaxFeatureID ) )
-        {
-        return iFeaturesSupport.IsSet( aFeatureID );
-        }
-    else
-        {
-        // invalid feature value.
-        return EFalse;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::HandleListBoxEventL
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::HandleListBoxEventL( 
-    CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
-    {
-    switch ( aEventType )
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-        case EEventItemSingleClicked:
-            HandleListBoxSelectionL();
-            break;
-        default:
-           break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::HandleListBoxSelectionL()  
-// ---------------------------------------------------------------------------
-//   
-void CScreenSaverAnimPluginContainer::HandleListBoxSelectionL()
-    {
-     TInt index = iListBox->CurrentItemIndex();
-     
-     switch ( index )
-        {
-        case ESanimAnimFileNameId:
-            if ( !iInShowFileItem )
-                {                               
-                iInShowFileItem = ETrue;
-                TRAPD( err,ShowFileNameItemL() );
-                iInShowFileItem = EFalse;
-                User::LeaveIfError( err );
-                }
-            break;
-        case ESanimAnimTimeoutId:
-            ShowAnimTimeOutItemL();
-            break;
-        case ESanimLightsTimeoutId:
-            ShowLightsTimeOutItemL();
-            break;
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::ConstructListBoxL( TInt aResLbxId )
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::ConstructListBoxL( TInt aResLbxId )
-    {
-#ifdef SCREENSAVER_LOG_ENABLED
-    _LIT( msg, "In Construct ListBoxL" );
-    PrintDebugMsg( msg );
-#endif
-  
-    iListBox->ConstructL( this, EAknListBoxSelectionList );
-    iItems = iCoeEnv->ReadDesC16ArrayResourceL( aResLbxId );
-    iItemArray = static_cast< CDesCArray* >( iListBox->Model()->ItemTextArray() );
-    iListBox->SetListBoxObserver( this );
-    CreateListBoxItemsL();
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::CreateListBoxItemsL()
-// 
-//  
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::CreateListBoxItemsL()
-    {
-#ifdef SCREENSAVER_LOG_ENABLED 
-    _LIT( msg, "Make FileName" );
-    PrintDebugMsg( msg );
-#endif
-
-    MakeFileNameItem();
-    iItemArray->InsertL( ESanimAnimFileNameId, iItem );
-    
-#ifdef SCREENSAVER_LOG_ENABLED
-    _LIT( msg1, "Make Duration" );
-    PrintDebugMsg( msg1 );
-#endif
-
-    MakeAnimTimeOutItemL();
-    iItemArray->InsertL( ESanimAnimTimeoutId, iItem );
-
-    if ( !IsFeatureSupported( EAnimPluginBacklightRemoved ) )
-        {
-        #ifdef SCREENSAVER_LOG_ENABLED
-        _LIT( msg2, "Make Backlight" );
-        PrintDebugMsg( msg2 );
-        #endif
-
-        MakeLightsTimeOutItemL();
-        iItemArray->InsertL( ESanimLightsTimeoutId, iItem );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::UpdateListBoxL( TInt aItemId )
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::UpdateListBoxL( TInt aItemId )
-    {   
-    switch ( aItemId )
-        {
-        case ESanimAnimFileNameId:
-            MakeFileNameItem();
-            break;
-        case ESanimAnimTimeoutId:
-            MakeAnimTimeOutItemL();
-            break;
-        case ESanimLightsTimeoutId:
-            MakeLightsTimeOutItemL();
-            break;
-        default:
-            break;
-        }
-
-    iItemArray->Delete( aItemId );
-    iItemArray->InsertL( aItemId, iItem );
-    iListBox->HandleItemAdditionL();
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::HandleResourceChange( TInt aType )
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::HandleResourceChange( TInt aType )
-    {
-    CCoeControl::HandleResourceChange( aType );
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        TRect mainPaneRect;
-        GetNormalScreenLayoutRect( mainPaneRect );
-        SetRect(mainPaneRect);
-
-        DrawNow();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::MakeFileNameItem() 
-//  
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::MakeFileNameItem()
-    {
-    iItem = ( *iItems )[ESanimAnimFileNameId];    
-    TParsePtrC fileParser( iSettingObject->iFileName );
-    TPtrC ptr( fileParser.NameAndExt() );
-
-    // Filename may be quite long - copy only the amount there's space left
-    iItem += ptr.Left( iItem.MaxLength() - iItem.Length() - 1 );
-    }
-    
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::MakeAnimTimeOutItemL() 
-//  
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::MakeAnimTimeOutItemL()
-    {
-    iItem = ( *iItems )[ESanimAnimTimeoutId]; 
-    
-    HBufC* animText = CAknSlider::CreateValueTextInHBufCL( 
-                  iSettingObject->iAnimationTimeout, 
-                  R_ANIM_TIMEOUT_SLIDER );
-
-    // for A&H number conversion
-    TPtr bufPtr = animText->Des();
-    if( AknTextUtils::DigitModeQuery( AknTextUtils::EDigitModeShownToUser ) )
-        {
-        AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
-        }
-    iItem  += bufPtr;
-    delete animText;
-
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::MakeLightTimeOutItemL() 
-//  
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::MakeLightsTimeOutItemL()
-    {
-    iItem = ( *iItems )[ESanimLightsTimeoutId];
-
-    HBufC* animText = NULL;
-
-    if ( iSettingObject->iLightsTimeout == 0 )
-        {
-        animText = iCoeEnv->AllocReadResourceL( R_SANIM_SLIDER_OFF );
-        }
-    else
-        {
-        animText = CAknSlider::CreateValueTextInHBufCL( 
-                           iSettingObject->iLightsTimeout, 
-                           R_LIGHT_TIMEOUT_SLIDER );
-        }
-
-    // for A&H number conversion
-    TPtr bufPtr = animText->Des();
-    if( AknTextUtils::DigitModeQuery( AknTextUtils::EDigitModeShownToUser ) )
-        {
-        AknTextUtils::LanguageSpecificNumberConversion( bufPtr );
-        }
-    iItem  += bufPtr;
-    delete animText;
-
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::ShowFileNameItemL() 
-//  
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::ShowFileNameItemL()
-    {    
-        
-    CDesCArrayFlat* selectedFile = new( ELeave )CDesCArrayFlat( 1 );
-    CleanupStack::PushL( selectedFile );
-
-    TResourceReader reader;
-    iCoeEnv->CreateResourceReaderLC( reader, 
-                             R_MIMETYPE_SPECIFIC_PLUGIN_ARRAY );
-    TInt countResource = reader.ReadInt16();
-
-    CDesCArrayFlat* mimetypesList = new( ELeave ) 
-                                    CDesCArrayFlat( countResource );
-
-    CleanupStack::PushL( mimetypesList );
-
-    for ( TInt i = 0; i < countResource; i++ )
-        {
-        HBufC* mimeType = reader.ReadHBufCL();
-
-        // Check plugin availability before appending mimetype
-        TUid uid = iCaller->FindAnimPluginL( *mimeType );
-        if ( uid != KNullUid )
-            {
-            mimetypesList->AppendL( *mimeType );
-            }
-        delete mimeType;
-        reader.ReadInt32();
-        }
-
-    CScreenSaverAnimPluginVerifier* verifier = 
-                       CScreenSaverAnimPluginVerifier::NewL( iCaller );
-    CleanupStack::PushL( verifier );
-    TBool fileSelected = MGFetch::RunL( *selectedFile,
-                                  EAnyMediaFile,
-                                  EFalse,
-                                  KNullDesC,
-                                  KNullDesC,
-                                  mimetypesList,
-                                  verifier );
-
-    CleanupStack::PopAndDestroy( verifier ); 
-    CleanupStack::PopAndDestroy( mimetypesList );
-    CleanupStack::PopAndDestroy(); // reader
-
-    if ( fileSelected )
-        {
-        TPtrC fileNamePtr = selectedFile->MdcaPoint( 0 );
-        TFileName tempFileName;
-        tempFileName.Copy( fileNamePtr );
-        iSettingObject->iFileName.Copy( tempFileName ); 
-        // Write the new setting into the central repository
-        iCaller->SetAnimSettings();
-        UpdateListBoxL( ESanimAnimFileNameId );
-        }   
-
-    CleanupStack::PopAndDestroy( selectedFile );
-
-    }
-
-// ----------------------------------------------------
-// CScreenSaverAnimPluginContainer::ShowAnimTimeOutItemL() 
-// Display the animation time-out setting page.
-// ----------------------------------------------------
-//    
-void CScreenSaverAnimPluginContainer::ShowAnimTimeOutItemL()
-    {
-    
-    CAknSettingPage* dlg = new( ELeave ) CAknSliderSettingPage(
-                   R_ANIM_TIMEOUT_SETTING_PAGE, 
-                   iSettingObject->iAnimationTimeout );
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {
-        // Write the new setting into the central repository
-        iCaller->SetAnimSettings();
-        UpdateListBoxL( ESanimAnimTimeoutId );
-        }
-    }
-
-// ----------------------------------------------------
-// CScreenSaverAnimPluginContainer::ShowLightsTimeOutItemL() 
-// Display the animation time-out setting page.
-// ----------------------------------------------------
-//    
-void CScreenSaverAnimPluginContainer::ShowLightsTimeOutItemL()
-    {
-     CAknSettingPage* dlg = 
-        new( ELeave ) CAknSliderSettingPage( R_LIGHT_TIMEOUT_SETTING_PAGE, 
-                                          iSettingObject->iLightsTimeout );
-    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
-        {    
-        // Write the new setting into the central repository
-        iCaller->SetAnimSettings();
-        UpdateListBoxL( ESanimLightsTimeoutId );
-        }
-    }
-
-void CScreenSaverAnimPluginContainer::SizeChanged()
-    {
-    if (iListBox)
-        {
-        // Get size from main pane, place from this rect
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( 
-            AknLayoutUtils::EMainPane, 
-            mainPaneRect );
-
-        iListBox->SetExtent( Rect().iTl, mainPaneRect.Size() );
-        }
-    }
-
-TInt CScreenSaverAnimPluginContainer::CountComponentControls() const
-    {
-    if ( iListBox )
-        {
-        return 1;
-        }
-    else
-        {
-        return 0;
-        }
-    }
-
-CCoeControl* CScreenSaverAnimPluginContainer::
-                   ComponentControl( TInt /*aIndex*/ ) const
-    {
-    if ( iListBox )
-        {
-        return iListBox;
-        }
-    else
-        {
-        return NULL;
-        } 
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::OfferKeyEventL
-// Called when a key is pressed.
-//  
-// ---------------------------------------------------------------------------
-TKeyResponse CScreenSaverAnimPluginContainer::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    switch (aKeyEvent.iCode)
-        {
-        case EKeyLeftArrow:
-        case EKeyRightArrow:
-            // Listbox takes all event even if it doesn't use them
-            return EKeyWasNotConsumed;
-        default:
-            break;
-        }
-    return iListBox->OfferKeyEventL( aKeyEvent, aType );
-    }
-
-void CScreenSaverAnimPluginContainer::SetContainerWindowL( const CCoeControl& 
-                                   /* aContainer*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimPluginContainer::FocusChanged
-// ---------------------------------------------------------------------------
-void CScreenSaverAnimPluginContainer::FocusChanged( TDrawNow aDrawNow )
-    {
-    // Pass focus changed event to listbox.
-    if ( iListBox )
-        {
-        iListBox->SetFocus( IsFocused(), aDrawNow );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSvgRenderFrameControl::GetNormalScreenLayoutRect
-// Gets the normal screen layout rectangle for control from LAF.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimPluginContainer::GetNormalScreenLayoutRect(
-    TRect& aRect )  const // Rectangle specifying extent of control
-    {
-    AknLayoutUtils::LayoutMetricsRect(
-            AknLayoutUtils::EApplicationWindow, 
-            aRect );
-    }
-
-// End of File