calendarui/views/src/calenpreviewlayoutmanager.cpp
author Maximilian Odendahl <maxodendahl@gmail.com>
Sun, 20 Jun 2010 22:55:39 +0200
branchRCL_3
changeset 23 51372538e3d3
parent 0 f979ecb2b13e
permissions -rw-r--r--
Merge both heads

/*
* 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 "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: Layout calculations for PreviewPane.
 *
*/


//debug
#include "calendarui_debug.h"

#include "calenpreviewlayoutmanager.h"

#include "calenpreviewlabel.h"

#include "calenpreview.h"

#include <AknsUtils.h>
#include <eiklabel.h>

#include <layoutmetadata.cdl.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <aknlayoutscalable_avkon.cdl.h>

const TInt KPopupMaxEntries = 4;

CCalenPreviewLayoutManager* CCalenPreviewLayoutManager::NewL(CCalenPreview* aPreview)
    {
    TRACE_ENTRY_POINT;
    CCalenPreviewLayoutManager* self = 
        new (ELeave) CCalenPreviewLayoutManager(aPreview);
    
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );

    TRACE_EXIT_POINT;
    return self;
    }

CCalenPreviewLayoutManager::CCalenPreviewLayoutManager(CCalenPreview* aPreview)
    : iContainer(NULL) , iPreview(aPreview)
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

CCalenPreviewLayoutManager::~CCalenPreviewLayoutManager()
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

void CCalenPreviewLayoutManager::UpdateLayoutData()
    {
    TRACE_ENTRY_POINT;
    if( UsePreview() )
	{
        TAknLayoutRect list_fp_cale_pane;
        TAknLayoutRect popup_fixed_preview_cale_window;
        TAknLayoutText list_single_fp_cale_pane;
        TAknTextLineLayout textLine;

        popup_fixed_preview_cale_window.LayoutRect( 
            ApplicationWindow(), 
            AknLayoutScalable_Apps::popup_fixed_preview_cale_window(Orientation()).LayoutLine() );
        
        TAknLayoutScalableParameterLimits list_single_fp_cale_pane_limits =
            AknLayoutScalable_Apps::list_single_fp_cale_pane_ParamLimits();
        
        iLinesUsed = LineCount();
        
        list_fp_cale_pane.LayoutRect( 
            popup_fixed_preview_cale_window.Rect(), 
            AknLayoutScalable_Apps::list_fp_cale_pane(0).LayoutLine() );
                
        list_single_fp_cale_pane.LayoutText( 
            list_fp_cale_pane.Rect(), 
            AknLayoutScalable_Apps::list_single_fp_cale_pane_t(0, 0).LayoutLine() );
        
        textLine = 
            AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(1).LayoutLine();
        iFirstLine.LayoutText( list_single_fp_cale_pane.TextRect(), textLine );
        
        textLine = 
            AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(2).LayoutLine();
        iMiddleLine.LayoutText( list_single_fp_cale_pane.TextRect(), textLine );
        
        textLine = 
            AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(3).LayoutLine();
        iLastLine.LayoutText( list_single_fp_cale_pane.TextRect(), textLine );
        
        textLine = 
            AknLayoutScalable_Apps::popup_fixed_preview_cale_window_t1(0).LayoutLine();
        iTitleLine.LayoutText( popup_fixed_preview_cale_window.Rect(), textLine );
        
        textLine = 
            AknLayoutScalable_Apps::popup_fixed_preview_cale_window_t2(0).LayoutLine();
        iEmptyLine.LayoutText( popup_fixed_preview_cale_window.Rect(), textLine );
        
        textLine = 
            AknLayoutScalable_Apps::list_single_fp_cale_pane_t1(0).LayoutLine();
        iPluginLine.LayoutText( list_single_fp_cale_pane.TextRect(), textLine );
        }
    else
        {
        TAknLayoutRect popup_cale_events_window;
        TAknTextLineLayout textLine;
        
        popup_cale_events_window.LayoutRect( 
            StatusPane(),
            AknLayoutScalable_Apps::popup_cale_events_window(0).LayoutLine() );

        textLine = 
            AknLayoutScalable_Apps::popup_cale_events_window_t1(0).LayoutLine();
        iFirstLine.LayoutText( popup_cale_events_window.Rect(), textLine );
        
        iMiddleLine = iFirstLine;
        iLastLine   = iFirstLine;
        iEmptyLine  = iFirstLine;
        iPluginLine = iFirstLine;
        iTitleLine  = iFirstLine;
        }
    TRACE_EXIT_POINT;
    }

void CCalenPreviewLayoutManager::ConstructL()
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

TSize CCalenPreviewLayoutManager::MinimumSize()
    {
    TRACE_ENTRY_POINT;
    TSize asize;
    
   if(iLinesUsed > KPopupMaxEntries)
   	{
    iLinesUsed = iContainer->CountComponentControls();
   	}   
       
    if( UsePreview() )
        {
        TAknLayoutRect popup_fixed_preview_cale_window;
        
        popup_fixed_preview_cale_window.LayoutRect( 
            ApplicationWindow(), 
            AknLayoutScalable_Apps::popup_fixed_preview_cale_window(Orientation()).LayoutLine() );

        asize = popup_fixed_preview_cale_window.Rect().Size();
        }
    else if( iLinesUsed )
        {
        TAknLayoutRect popup_cale_events_window;
        
        popup_cale_events_window.LayoutRect( 
            StatusPane(), 
            AknLayoutScalable_Apps::popup_cale_events_window(iLinesUsed-1).LayoutLine() );
        
        asize = popup_cale_events_window.Rect().Size();
        }
    else
        {
        asize.iWidth = 0;
        asize.iHeight = 0;
        }

    if( iLinesUsed )
        {
        TAknWindowComponentLayout temp = 
            AknLayoutScalable_Avkon::bg_popup_preview_window_pane_g1();
        
        asize.iWidth -= temp.LayoutLine().il + temp.LayoutLine().ir;
        asize.iHeight -= temp.LayoutLine().it + temp.LayoutLine().ib;
        }

    TRACE_EXIT_POINT;
    return asize;
    }

// Public member functions inherited from MCoeLayoutManager

void CCalenPreviewLayoutManager::AttachL(CCoeControl &aCompoundControl)
    {
    TRACE_ENTRY_POINT;
    iContainer = &aCompoundControl;
    UpdateLayoutData();
    TRACE_EXIT_POINT;
    }
TBool CCalenPreviewLayoutManager::CanAttach() const
    {
    TRACE_ENTRY_POINT;
    TBool ret(ETrue);
    if( iContainer )
        ret = EFalse;
    TRACE_EXIT_POINT;
    return ret;
    }
void CCalenPreviewLayoutManager::Detach(CCoeControl &aCompoundControl)
    {
    TRACE_ENTRY_POINT;
    if( iContainer == &aCompoundControl )
        {
        iContainer = NULL;
        delete this;
        }
    TRACE_EXIT_POINT;
    }

TSize CCalenPreviewLayoutManager::CalcMinimumSize(
    const CCoeControl &aCompoundControl) const
    {
    TRACE_ENTRY_POINT;
    TSize ret(0,0);
    if(iContainer != NULL && 
       iContainer == &aCompoundControl)
        {
        ret = iContainer->Rect().Size();
        }
    TRACE_EXIT_POINT;
    return ret;
    }

void CCalenPreviewLayoutManager::PerformLayout()
    {
    TRACE_ENTRY_POINT;
    if(UsePreview())
        PerformPreviewLayout();
    else
        PerformPopupLayout();
    TRACE_EXIT_POINT;
    }

TInt CCalenPreviewLayoutManager::CalcTextBaselineOffset(
    const CCoeControl& /*aCompoundControl*/, 
    const TSize& /*aSize*/) const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return 0;
    }

void CCalenPreviewLayoutManager::SetTextBaselineSpacing(
    TInt /*aBaselineSpacing*/)
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

TInt CCalenPreviewLayoutManager::TextBaselineSpacing() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return 0;
    }

void CCalenPreviewLayoutManager::HandleAddedControlL(
    const CCoeControl& /*aCompoundControl*/, 
    const CCoeControl& /*aAddedControl*/)
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

void CCalenPreviewLayoutManager::HandleRemovedControl(
    const CCoeControl& /*aCompoundControl*/, 
    const CCoeControl& /*aRemovedControl*/)
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

TInt CCalenPreviewLayoutManager::HandleControlReplaced(
    const CCoeControl& /*aOldControl*/, 
    const CCoeControl& /*aNewControl*/)
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return 0;
    }

// New public member functions

void CCalenPreviewLayoutManager::SetLinesUsed(TInt aUsedLines)
    {
    TRACE_ENTRY_POINT;
    if(!UsePreview() && aUsedLines <= KPopupMaxEntries)
        {
        if( aUsedLines > iContainer->CountComponentControls())
            iLinesUsed = iContainer->CountComponentControls();
        else
            iLinesUsed = aUsedLines;
        }
    TRACE_EXIT_POINT;
    }

TInt CCalenPreviewLayoutManager::FirstLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iFirstLine.TextRect().Width();
    }

TInt CCalenPreviewLayoutManager::TitleLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iTitleLine.TextRect().Width();
    }

TInt CCalenPreviewLayoutManager::MiddleLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iMiddleLine.TextRect().Width();
    }

TInt CCalenPreviewLayoutManager::LastLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iLastLine.TextRect().Width();
    }

TInt CCalenPreviewLayoutManager::PluginLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iPluginLine.TextRect().Width();
    }

TInt CCalenPreviewLayoutManager::EmptyLineWidth() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iEmptyLine.TextRect().Width();
    }

const CFont* CCalenPreviewLayoutManager::LineFont() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iFirstLine.Font();
    }

const CFont* CCalenPreviewLayoutManager::TitleFont() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iFirstLine.Font();
    }

const CFont* CCalenPreviewLayoutManager::PluginFont() const
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    return iPluginLine.Font();
    }

void CCalenPreviewLayoutManager::SetContainerLayout()
    {
    TRACE_ENTRY_POINT;
    if(iContainer)
        {
        UpdateLayoutData();
        if(UsePreview())
            {
            AknLayoutUtils::LayoutControl(
                iContainer, 
                ApplicationWindow(),
                AknLayoutScalable_Apps::popup_fixed_preview_cale_window(Orientation()).LayoutLine() );
            }
        else
            {
            AknLayoutUtils::LayoutControl(
                iContainer, 
                StatusPane(),
                AknLayoutScalable_Apps::popup_cale_events_window(iLinesUsed-1).LayoutLine());
            }
        }
    TRACE_EXIT_POINT;
    }

TRect CCalenPreviewLayoutManager::StatusPane()
    {
    TRACE_ENTRY_POINT;
    TRect statusPaneRect;
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, 
                                       statusPaneRect );
    TSize screenSize;
    AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, screenSize );
    TRect screenRect( screenSize );
    TAknLayoutRect statusPane;
    statusPane.LayoutRect( screenRect, AknLayoutScalable_Avkon::status_pane( 0 ).LayoutLine() );
    statusPaneRect.SetWidth(statusPane.Rect().Width());

    TRACE_EXIT_POINT;
    return statusPaneRect;
    }

TRect CCalenPreviewLayoutManager::ApplicationWindow()
    {
    TRACE_ENTRY_POINT;
    TRect screenRect;
    TAknLayoutRect application_window;
    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, 
                                       screenRect );
    application_window.LayoutRect( 
        screenRect, 
        AknLayoutScalable_Apps::application_window().LayoutLine() );
    TRACE_EXIT_POINT;
    return application_window.Rect();
    }  

void CCalenPreviewLayoutManager::PerformPopupLayout()
    {
    TRACE_ENTRY_POINT;
    // Perform layout for popup pane
    TAknLayoutRect popup_cale_events_window_g2;
    TInt limit( iContainer->CountComponentControls() );
    TRect rect( iContainer->Rect() );
  
    //>> Temporary fix 
    TAknWindowComponentLayout temp = 
        AknLayoutScalable_Avkon::bg_popup_preview_window_pane_g1();
    rect.iTl.iX -= temp.LayoutLine().il; rect.iTl.iY -= temp.LayoutLine().it;
    rect.iBr.iX += temp.LayoutLine().ir; rect.iBr.iY += temp.LayoutLine().ib;
    //<<
    
    for(TInt i = 0; i < limit; i++)
        {
        
        
        CCalenPreviewLabel* line = 
            static_cast<CCalenPreviewLabel*>(iContainer->ComponentControl(i));
        
        switch( i%KPopupMaxEntries )
            {
            case 0:
                AknLayoutUtils::LayoutLabel( 
                    line, rect, 
                    AknLayoutScalable_Apps::popup_cale_events_window_t1(KPopupMaxEntries).LayoutLine());
                break;
            case 1:
                    AknLayoutUtils::LayoutLabel(
                        line, rect, 
                        AknLayoutScalable_Apps::popup_cale_events_window_t2(KPopupMaxEntries).LayoutLine());
                    break;
            case 2:
                AknLayoutUtils::LayoutLabel(
                    line, rect, 
                    AknLayoutScalable_Apps::popup_cale_events_window_t3(KPopupMaxEntries).LayoutLine());
                break;
            case 3:
                AknLayoutUtils::LayoutLabel( 
                    line, rect, 
                    AknLayoutScalable_Apps::popup_cale_events_window_t4(KPopupMaxEntries).LayoutLine());
                // icon
                popup_cale_events_window_g2.LayoutRect( 
                    rect,
                    AknLayoutScalable_Apps::popup_cale_events_window_g2(KPopupMaxEntries).LayoutLine() );
                line->SetMoreIconLayout(popup_cale_events_window_g2);
                break;
            }
        
        // Text color skinning
        TRgb textColor(KRgbBlack);
        line->GetColor(EColorLabelText, textColor);
        AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), textColor, 
                                  KAknsIIDQsnTextColors, 
                                  EAknsCIQsnTextColorsCG20);

        PIM_TRAPD_HANDLE( 
            AknLayoutUtils::OverrideControlColorL(*line, EColorLabelText, 
                                                  textColor));
        }
    TRACE_EXIT_POINT;
    }


void CCalenPreviewLayoutManager::PerformPreviewLayout()
    {
    TRACE_ENTRY_POINT;
    
    // Perform layout for preview pane
    TRect rect( iContainer->Rect() );
    TAknLayoutScalableParameterLimits list_single_fp_cale_pane_limits =
        AknLayoutScalable_Apps::list_single_fp_cale_pane_ParamLimits();
    TInt limit( list_single_fp_cale_pane_limits.LastRow());
    TInt componentCount( iContainer->CountComponentControls());

    //>> Temporary fix
    TAknWindowComponentLayout temp = 
        AknLayoutScalable_Avkon::bg_popup_preview_window_pane_g1();
    rect.iTl.iX -= temp.LayoutLine().il; rect.iTl.iY -= temp.LayoutLine().it;
    rect.iBr.iX += temp.LayoutLine().ir; rect.iBr.iY += temp.LayoutLine().ib;
    //<<

    for(TInt i = 0; i <= limit + 1 && i < componentCount; i++)
        {
        CCalenPreviewLabel* line = 
            static_cast<CCalenPreviewLabel*>(iContainer->ComponentControl(i));

        if(line->LabelType() == CCalenPreviewLabel::ECalenPreviewTitleRow)
            {
            AknLayoutUtils::LayoutLabel( 
                line, rect, 
                AknLayoutScalable_Apps::popup_fixed_preview_cale_window_t1(0).LayoutLine());
            }
        else
            {
            TAknLayoutRect list_fp_cale_pane;
            list_fp_cale_pane.LayoutRect( 
                rect, 
                AknLayoutScalable_Apps::list_fp_cale_pane(0).LayoutLine() );
                
            TInt iDx = 0;
          	iDx = iPreview->PluginControl() ? i : i-1;
          
            TAknLayoutRect list_single_fp_cale_pane;
            list_single_fp_cale_pane.LayoutRect( 
                list_fp_cale_pane.Rect(), 
                AknLayoutScalable_Apps::list_single_fp_cale_pane(iDx).LayoutLine() );


            TAknLayoutRect list_single_fp_cale_pane_g1;
            TAknLayoutRect list_single_fp_cale_pane_g2;

            switch (line->LabelType())
                {
               case CCalenPreviewLabel::ECalenPreviewFirstRow:
                    // icon
                    list_single_fp_cale_pane_g1.LayoutRect( 
                        list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_g1(0).LayoutLine() );
                    line->SetIconLayout(list_single_fp_cale_pane_g1);
                    // text
                    AknLayoutUtils::LayoutLabel( 
                        line, list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(1).LayoutLine());
                    break;
                case CCalenPreviewLabel::ECalenPreviewMiddleRow:
                    AknLayoutUtils::LayoutLabel( 
                        line, list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(2).LayoutLine());
                    break;
                case CCalenPreviewLabel::ECalenPreviewLastRow:
                    // icon
                    list_single_fp_cale_pane_g1.LayoutRect( 
                        list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_g1(0).LayoutLine() );
                    line->SetIconLayout(list_single_fp_cale_pane_g1);
                    // text
                    AknLayoutUtils::LayoutLabel( 
                        line, list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_t2(3).LayoutLine());
                    // icon
                     list_single_fp_cale_pane_g2.LayoutRect( 
                        list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_g2(0).LayoutLine() );
                    line->SetMoreIconLayout(list_single_fp_cale_pane_g2);
                    break;
                case CCalenPreviewLabel::ECalenPreviewEmptyRow:
                default:
                    AknLayoutUtils::LayoutLabel( 
                        line, rect, 
                        AknLayoutScalable_Apps::popup_fixed_preview_cale_window_t2(0).LayoutLine());
                    break;
                }
            }
        
        // Text color skinning
        TRgb textColor(KRgbBlack);
        line->GetColor(EColorLabelText, textColor);
        AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), textColor, 
                                  KAknsIIDQsnTextColors, 
                                  EAknsCIQsnTextColorsCG20);
        PIM_TRAPD_HANDLE(
            AknLayoutUtils::OverrideControlColorL(*line, EColorLabelText, 
                                                  textColor));
        }

    	if(iPreview->PluginControl())
		  	{
	    	TRAPD(error,LayoutPluginControlL(*iPreview->PluginControl()) );	
	    	if(error!=KErrNone)
				{
				// Do nothing to avoid warning	
				}
			TRAP(error,iPreview->AddPluginControlL());	
	    	if(error!=KErrNone)
				{
				// Do nothing to avoid warning	
				}
		  	}

    TRACE_EXIT_POINT;
    }
    
void CCalenPreviewLayoutManager::LayoutPluginControlL(CCoeControl& aControl)    
	{
	TRACE_ENTRY_POINT;
	
    CCoeControl* line = &aControl;
	TRect rectMain( iContainer->Rect() );
	
	 //>> Temporary fix
    TAknWindowComponentLayout temp = 
        AknLayoutScalable_Avkon::bg_popup_preview_window_pane_g1();
    rectMain.iTl.iX -= temp.LayoutLine().il; rectMain.iTl.iY -= temp.LayoutLine().it;
    rectMain.iBr.iX += temp.LayoutLine().ir; rectMain.iBr.iY += temp.LayoutLine().ib;
    //<< 
	
	if(line)
		{
		TAknLayoutRect list_fp_cale_pane;
		list_fp_cale_pane.LayoutRect( 
		rectMain,
		AknLayoutScalable_Apps::list_fp_cale_pane(0).LayoutLine() );

		TAknLayoutRect list_single_fp_cale_pane;
		list_single_fp_cale_pane.LayoutRect( 
		list_fp_cale_pane.Rect(), 
		AknLayoutScalable_Apps::list_single_fp_cale_pane(0).LayoutLine() );
		
		if(!Layout_Meta_Data::IsLandscapeOrientation())
			{
			line->SetRect(list_single_fp_cale_pane.Rect());
			AknLayoutUtils::LayoutLabel( 
                        static_cast<CEikLabel*>(line), list_single_fp_cale_pane.Rect(), 
                        AknLayoutScalable_Apps::list_single_fp_cale_pane_t1(0).LayoutLine());
           			line ->SetRect(list_single_fp_cale_pane.Rect());
			      static_cast<CEikLabel*>(line)->SetLabelAlignment(ELayoutAlignCenter);
			}
		else
			{
			TRect rect;
			rect = list_single_fp_cale_pane.Rect();
			rect.iBr.iY = rect.iBr.iY*2;
			line->SetRect(rect);
		    rectMain = rect;
			}
	    TRgb textColor(KRgbBlack);
        line->GetColor(EColorLabelText, textColor);
        AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), textColor, 
                                  KAknsIIDQsnTextColors, 
                                  EAknsCIQsnTextColorsCG20);
        PIM_TRAPD_HANDLE(
        AknLayoutUtils::OverrideControlColorL(*line, EColorLabelText, 
                                                  textColor));
                                                  
        
        
		}
		
	TRACE_EXIT_POINT;	
	}

TBool CCalenPreviewLayoutManager::UsePreview()
    {
    TRACE_ENTRY_POINT;
    TBool previewMode(EFalse);
    TAknLayoutRect popup_fixed_preview_cale_window;

    popup_fixed_preview_cale_window.LayoutRect( 
        ApplicationWindow(), 
        AknLayoutScalable_Apps::popup_fixed_preview_cale_window(Orientation()).LayoutLine() );

    if( popup_fixed_preview_cale_window.Rect().Height() &&
        popup_fixed_preview_cale_window.Rect().Width() )
        previewMode = ETrue;
    TRACE_EXIT_POINT; 
    return previewMode;
    }

TInt CCalenPreviewLayoutManager::LineCount()
    {
    TRACE_ENTRY_POINT;
    TInt lines(KPopupMaxEntries);
    if( UsePreview() )
        {
        TAknLayoutScalableParameterLimits limits =
            AknLayoutScalable_Apps::list_single_fp_cale_pane_ParamLimits();
        
        lines = limits.LastRow() + 1;
        }
    TRACE_EXIT_POINT; 
    return lines;
    }
TInt CCalenPreviewLayoutManager::Orientation()
    {
    TRACE_ENTRY_POINT;
    TInt variant(0);
    if(Layout_Meta_Data::IsLandscapeOrientation())
        variant = 1;
    TRACE_EXIT_POINT;
    return variant;
    }

TRect CCalenPreviewLayoutManager::ReducePreview(TRect aRect)
    {
    TRACE_ENTRY_POINT;
    if(!UsePreview())
        {
        TAknLayoutRect main_pane;
        
        main_pane.LayoutRect( 
            ApplicationWindow(), 
            AknLayoutScalable_Apps::main_pane(Orientation() + 10).LayoutLine() );

        aRect.SetWidth( main_pane.Rect().Width() );
        aRect.SetHeight( main_pane.Rect().Height() );
        }
    TRACE_EXIT_POINT; 
    return aRect;
    }
    
    
 

//End of file