photosgallery/viewframework/dataprovider/src/glxattributerequirement.cpp
changeset 0 4e91876724a2
child 1 9ba538e329bd
equal deleted inserted replaced
-1:000000000000 0:4e91876724a2
       
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:    set the required attribute to the medialist
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #include "glxattributerequirement.h"    // This class will set the required attribute to the medialist
       
    22 #include <mpxattribute.h>               // MPX Attribute data type class
       
    23 #include <glxuistd.h>                   // attribute/thumbnail fetch context priority definitions
       
    24 #include <glxlog.h>                     // Logging
       
    25 #include <glxtracer.h>
       
    26 #include <AknUtils.h>
       
    27 #include <glxuiutility.h>
       
    28 // ----------------------------------------------------------------------------
       
    29 // Two phase construction
       
    30 // ----------------------------------------------------------------------------
       
    31 //
       
    32 EXPORT_C CGlxAttributeRequirements*  CGlxAttributeRequirements::NewL( 
       
    33     MGlxMediaList& aMediaList )
       
    34 	{
       
    35 	TRACER("CGlxAttributeRequirements::NewL");
       
    36 	CGlxAttributeRequirements* self = CGlxAttributeRequirements::NewLC(   
       
    37 	    aMediaList );
       
    38 	CleanupStack::Pop( self );
       
    39 	self->ConstructL();
       
    40 	return self;
       
    41 	}
       
    42 
       
    43 // ----------------------------------------------------------------------------
       
    44 // Two phase construction
       
    45 // ----------------------------------------------------------------------------
       
    46 //
       
    47 CGlxAttributeRequirements*  CGlxAttributeRequirements::NewLC( MGlxMediaList& 
       
    48     aMediaList )
       
    49 	{
       
    50 	TRACER("CGlxAttributeRequirements::NewLC");
       
    51 	CGlxAttributeRequirements* self = new ( ELeave ) CGlxAttributeRequirements(
       
    52 	     aMediaList );
       
    53 	CleanupStack::PushL( self );
       
    54 	return self;
       
    55 	}
       
    56 
       
    57 // ----------------------------------------------------------------------------
       
    58 // Deafult constructor
       
    59 // ----------------------------------------------------------------------------
       
    60 //	
       
    61 CGlxAttributeRequirements::CGlxAttributeRequirements( MGlxMediaList& aMediaList):
       
    62     iMediaList( aMediaList )
       
    63 	{
       
    64 	}
       
    65 	
       
    66 // ----------------------------------------------------------------------------
       
    67 // ConstructL
       
    68 // ----------------------------------------------------------------------------
       
    69 //	
       
    70 void CGlxAttributeRequirements::ConstructL()
       
    71     {
       
    72         
       
    73     }
       
    74 
       
    75 // ----------------------------------------------------------------------------
       
    76 // Destructor
       
    77 // ----------------------------------------------------------------------------
       
    78 //
       
    79 CGlxAttributeRequirements::~CGlxAttributeRequirements()
       
    80 	{
       
    81 	TRACER("CGlxAttributeRequirements::~CGlxAttributeRequirements");
       
    82     for( TInt i = 0;i <=iArributeContext.Count()-1; i++ )
       
    83        { 
       
    84         iMediaList.RemoveContext(iArributeContext[i]);
       
    85         }
       
    86     iArributeContext.ResetAndDestroy();
       
    87     
       
    88 	//remove the context and delete the same
       
    89 	iMediaList.RemoveContext(iFsThumbnailContext);
       
    90     delete iFsThumbnailContext;
       
    91     
       
    92     for( TInt i = 0;i <=iThumbnailContext.Count()-1; i++ )
       
    93 	    {
       
    94 	    iMediaList.RemoveContext(iThumbnailContext[i]);
       
    95 	    }
       
    96     iThumbnailContext.ResetAndDestroy();
       
    97 	}
       
    98 
       
    99 // ----------------------------------------------------------------------------
       
   100 // Creating the attribute context and setting it to the medialist
       
   101 // ----------------------------------------------------------------------------
       
   102 //	
       
   103 void CGlxAttributeRequirements::AddAttributeL( const TMPXAttribute& aAttribute )
       
   104     {
       
   105     TRACER("CGlxAttributeRequirements::AddAttributeL");	
       
   106 	iArributeContext.AppendL(CGlxDefaultAttributeContext::NewL() );
       
   107 	iArributeContext[iArributeContext.Count()-1]->SetRangeOffsets(10,10);
       
   108 	iArributeContext[iArributeContext.Count()-1]->AddAttributeL( aAttribute );
       
   109 	iMediaList.AddContextL( iArributeContext[iArributeContext.Count()-1], KMaxTInt );		
       
   110     }
       
   111 
       
   112 // ----------------------------------------------------------------------------
       
   113 // Creating the thumbnail context and setting it to the medialist
       
   114 // ----------------------------------------------------------------------------
       
   115 //	
       
   116 void CGlxAttributeRequirements::AddThumbnailL( const TSize& aSize )
       
   117     {
       
   118     TRACER("CGlxAttributeRequirements::AddThumbnailL");
       
   119     if( aSize.iHeight > 200 )
       
   120     	{
       
   121     	iFromFocusOutwardIterator.SetRangeOffsets( 2,2 );
       
   122     	//check if Fullscreen thumbnail context is initialized
       
   123 		if(!iFsThumbnailContext)
       
   124 			{
       
   125 			//created new context, set the priority higher than grid thumbnail requests and set the default spec based on the 
       
   126 			//current orientation
       
   127 			iFsThumbnailContext = CGlxThumbnailContext::NewL(&iFromFocusOutwardIterator);
       
   128 			iFsThumbnailContext->SetDefaultSpec(aSize.iWidth, aSize.iHeight);
       
   129 			iMediaList.AddContextL(iFsThumbnailContext, KGlxFetchContextPriorityGridViewFullscreenVisibleThumbnail);
       
   130 			}			
       
   131 		else
       
   132 			{
       
   133 			//Fullscreen context already created, hence, modify the default spec, to take care of orientation change
       
   134 			iFsThumbnailContext->SetDefaultSpec(aSize.iWidth, aSize.iHeight);
       
   135 			}
       
   136     	}
       
   137     else
       
   138     	{
       
   139         if (AknLayoutUtils::PenEnabled())
       
   140             {
       
   141             iThumbnailContext.AppendL(CGlxThumbnailContext::NewL(&iBlockyIterator));
       
   142             }
       
   143         else
       
   144             {
       
   145             CGlxUiUtility* uiUtility  = CGlxUiUtility::UtilityL();
       
   146             CleanupClosePushL(*uiUtility);    
       
   147             TInt visItems = uiUtility->VisibleItemsInPageGranularityL();
       
   148             CleanupStack::PopAndDestroy(uiUtility);            
       
   149             
       
   150             //we are fetching visible items on priority, 
       
   151             //5 pages would be good to have as it uses FromFocusOutwardIterator
       
   152             iFromFocusOutwardIterator.SetRangeOffsets(3*visItems , 2*visItems );
       
   153             iThumbnailContext.AppendL(CGlxThumbnailContext::NewL(&iFromFocusOutwardIterator)); 
       
   154             }
       
   155         iThumbnailContext[iThumbnailContext.Count()-1]->SetDefaultSpec (aSize.iWidth, aSize.iHeight );
       
   156         iMediaList.AddContextL( iThumbnailContext[iThumbnailContext.Count()-1], KGlxFetchContextPriorityNormal );
       
   157     	}
       
   158     }