photosgallery/viewframework/views/fullscreenview/src/glxslmpfavmlobserver.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:19:20 +0200
changeset 2 7d9067c6fcb1
parent 0 4e91876724a2
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* Copyright (c) 2008-2009 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:    Implementation of Single line meta pane favourites observer
*
*/

#include <glxcollectionpluginalbums.hrh>            // Albums collection plugin implementation id
#include <glxfilterfactory.h>                       // FilterFactory
#include <mglxmedialist.h>                          // CGlxMedialist
#include <glxattributecontext.h>                    // Attribute context
#include <glxuistd.h>                               // Attribute fetch priority
#include <glxtracer.h>
#include <glxlog.h>
#include <glxslmpfavmlobserver.h>

// ---------------------------------------------------------------------------
// NewL()
// ---------------------------------------------------------------------------
//  
CGlxSLMPFavMLObserver* CGlxSLMPFavMLObserver::NewL( CGlxSingleLineMetaPane& aSingleLineMetapane,
        TInt aFocusIndex, MGlxMediaList* aList)
    {
    TRACER("CGlxSLMPFavMLObserver::NewL()");
    CGlxSLMPFavMLObserver* self = new(ELeave) CGlxSLMPFavMLObserver(aSingleLineMetapane);
    CleanupStack::PushL(self);
    self->ConstructL(aFocusIndex, aList);
    CleanupStack::Pop(self);
    return self;
    }

// ---------------------------------------------------------------------------
// CGlxSLMPFavMLObserver()
// ---------------------------------------------------------------------------
//  
CGlxSLMPFavMLObserver::CGlxSLMPFavMLObserver(CGlxSingleLineMetaPane& aSingleLineMetaPane) 
            : iSingleLineMetaPane( aSingleLineMetaPane)
    {
    TRACER("CGlxSLMPFavMLObserver::CGlxSLMPFavMLObserver()");
    // Nothing done here
    }

// ---------------------------------------------------------------------------
// ~CGlxSLMPFavMLObserver()
// ---------------------------------------------------------------------------
//  
CGlxSLMPFavMLObserver::~CGlxSLMPFavMLObserver()
    {
    TRACER("CGlxSLMPFavMLObserver::~CGlxSLMPFavMLObserver()");
    if (iFavMediaList)
        {
        iFavMediaList->RemoveMediaListObserver(this);
        iFavMediaList->RemoveContext( iFavAttribContext );
        delete iFavAttribContext;
        iFavMediaList->Close();
        }
    }

// ---------------------------------------------------------------------------
// ConstructL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::ConstructL(TInt aFocusIndex, MGlxMediaList* aList)
    {
    TRACER("CGlxSLMPFavMLObserver::ConstructL()");
    CMPXCollectionPath* favCollection = CMPXCollectionPath::NewL();
    CleanupStack::PushL(favCollection);
    // The target collection has to be appeneded with the albums plugin id
    favCollection->AppendL(KGlxCollectionPluginAlbumsImplementationUid);
    // The target collection has also to be appeneded with the the relation id.
    // appending another level into the albums to get favourites and 1 is the relation id of albums
    favCollection->AppendL( TMPXItemId(1) );
    favCollection->Set( 0 );
    const TGlxMedia& item = aList->Item(aFocusIndex);
    const TDesC& uri = item.Uri();
    CMPXFilter* filter = TGlxFilterFactory::CreateURIFilterL(item.Uri());  
    CleanupStack::PushL(filter);

    // Create the media list
    iFavMediaList =  MGlxMediaList::InstanceL( *favCollection, 
                      TGlxHierarchyId(KGlxCollectionPluginAlbumsDllUid), filter );
    CleanupStack::PopAndDestroy( filter );
    CleanupStack::PopAndDestroy( favCollection );
    iFavMediaList->AddMediaListObserverL(this);
    iFavAttribContext = CGlxDefaultAttributeContext::NewL();
    // add all the attributes needed in handleattributes available
    // this is because even
    iFavAttribContext->AddAttributeL( KMPXMediaGeneralCount );
    // Using priority as same as UMP view's album pane
    iFavMediaList->AddContextL( iFavAttribContext, KGlxFetchContextPriorityLow );
    }

// ---------------------------------------------------------------------------
// HandleAttributesAvailableL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleAttributesAvailableL(TInt/* aItemIndex*/, 
        const RArray<TMPXAttribute>& /*aAttributes*/, MGlxMediaList* /*aList*/)
    {
    TRACER("CGlxSLMPFavMLObserver::HandleAttributesAvailableL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleItemAddedL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleItemAddedL( TInt /*aStartIndex*/, TInt /*aEndIndex*/,
        MGlxMediaList* aList )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleItemAddedL()");
    GLX_LOG_INFO1("CGlxSLMPFavMLObserver::HandleItemAddedL() medialist count = %d", aList->Count());
    // Passing ETrue as mediacount denotes item present in medialist 
    iSingleLineMetaPane.HandleUpdateIconL(ETrue);
    }

// ---------------------------------------------------------------------------
// HandleItemRemovedL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleItemRemovedL( TInt /*aStartIndex*/, TInt /*aEndIndex*/,
        MGlxMediaList* /*aList */)
    {
    TRACER("CGlxSLMPFavMLObserver::HandleItemRemovedL()");
    // Passing EFalse as mediacount 0 denotes item not present in medialist 
    iSingleLineMetaPane.HandleUpdateIconL(EFalse);
    }

// ---------------------------------------------------------------------------
// HandleFocusChangedL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleFocusChangedL( NGlxListDefs::TFocusChangeType /*aType*/, 
        TInt /*aNewIndex*/, TInt /*aOldIndex*/, MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleFocusChangedL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleItemSelectedL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleItemSelectedL(TInt /*aIndex*/, TBool /*aSelected*/,
        MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleItemSelectedL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleMessageL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleMessageL( const CMPXMessage& /*aMessage*/, 
        MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleMessageL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleError()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleError( TInt /*aError*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleError()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleCommandCompleteL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleCommandCompleteL( CMPXCommand* /*aCommandResult*/,
        TInt /*aError*/, MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleCommandCompleteL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleMediaL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleMediaL( TInt /*aListIndex*/, MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleMediaL()");
    // No Implementation Required
    }

// ---------------------------------------------------------------------------
// HandleItemModifiedL()
// ---------------------------------------------------------------------------
//  
void CGlxSLMPFavMLObserver::HandleItemModifiedL( const RArray<TInt>& /*aItemIndexes*/, 
        MGlxMediaList* /*aList*/ )
    {
    TRACER("CGlxSLMPFavMLObserver::HandleItemModifiedL()");
    // No Implementation Required
    }


//EOF