emailuis/uicomponents/src/fstreeplaintwolineitemvisualizer.cpp
changeset 0 8466d47a6819
child 1 12c456ceeff2
equal deleted inserted replaced
-1:000000000000 0:8466d47a6819
       
     1 /*
       
     2 * Copyright (c) 2007 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 : A visualizer for data items with plain text.
       
    15 *  Version     : %version: tr1sido#12 %
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 //<cmail> removed __FS_ALFRED_SUPPORT flag
       
    21 //#include <fsconfig.h>
       
    22 //</cmail> removed __FS_ALFRED_SUPPORT flag
       
    23 #include "emailtrace.h"
       
    24 #include <AknsUtils.h>
       
    25 #include <touchlogicalfeedback.h>
       
    26 
       
    27 #include "fstreeplaintwolineitemvisualizer.h"
       
    28 #include "fstreeplaintwolineitemdata.h"
       
    29 #include "fsgenericpanic.h"
       
    30 #include "fslayoutmanager.h"
       
    31 #include "fstextstylemanager.h"
       
    32 #include "fsmarqueeclet.h"
       
    33 // <cmail> SF
       
    34 #include <alf/alfanchorlayout.h>
       
    35 #include <alf/alfimagevisual.h>
       
    36 #include <alf/alfviewportlayout.h>
       
    37 #include <alf/alftextvisual.h>
       
    38 #include <alf/alfimage.h>
       
    39 #include <alf/alfenv.h>
       
    40 #include <alf/alfcontrol.h>
       
    41 
       
    42 #include <alf/alfevent.h>
       
    43 #include <alf/alfmappingfunctions.h>
       
    44 // </cmail>
       
    45 
       
    46 // ======== MEMBER FUNCTIONS ========
       
    47 
       
    48 // ---------------------------------------------------------------------------
       
    49 // Two-phased constructor.
       
    50 // ---------------------------------------------------------------------------
       
    51 //
       
    52 EXPORT_C CFsTreePlainTwoLineItemVisualizer*
       
    53     CFsTreePlainTwoLineItemVisualizer::NewL( CAlfControl& aOwnerControl )
       
    54     {
       
    55     CFsTreePlainTwoLineItemVisualizer* self =
       
    56         new( ELeave ) CFsTreePlainTwoLineItemVisualizer( aOwnerControl );
       
    57     CleanupStack::PushL( self );
       
    58     self->ConstructL( );
       
    59     CleanupStack::Pop( self );
       
    60     return self;
       
    61     }
       
    62 
       
    63 // ---------------------------------------------------------------------------
       
    64 // C++ destructor.
       
    65 // ---------------------------------------------------------------------------
       
    66 //
       
    67 CFsTreePlainTwoLineItemVisualizer::~CFsTreePlainTwoLineItemVisualizer()
       
    68     {
       
    69     FUNC_LOG;
       
    70     delete iSecondaryTextMarquee;
       
    71     if ( iKeyWords.Count() > 0 )
       
    72         {
       
    73         iKeyWords.Close();
       
    74         }
       
    75     }
       
    76 
       
    77 
       
    78 // ---------------------------------------------------------------------------
       
    79 // Returns visualizer's type.
       
    80 // ---------------------------------------------------------------------------
       
    81 //
       
    82 TFsTreeItemVisualizerType CFsTreePlainTwoLineItemVisualizer::Type() const
       
    83     {
       
    84     FUNC_LOG;
       
    85     return EFsTreePlainTwoLineItemVisualizer;
       
    86     }
       
    87 
       
    88 
       
    89 // ---------------------------------------------------------------------------
       
    90 //  Sets the alignment for text item.
       
    91 // ---------------------------------------------------------------------------
       
    92 //
       
    93 EXPORT_C void CFsTreePlainTwoLineItemVisualizer::SetSecondaryTextAlign(
       
    94     const TAlfAlignHorizontal aAlign )
       
    95     {
       
    96     FUNC_LOG;
       
    97     iSecondaryTextAlign = aAlign;
       
    98     }
       
    99 
       
   100 // ---------------------------------------------------------------------------
       
   101 //  Turn on/off displaying preview pane (3rd line).
       
   102 // ---------------------------------------------------------------------------
       
   103 //
       
   104 void CFsTreePlainTwoLineItemVisualizer::SetPreviewPaneOn( TBool aPreviewOn )
       
   105     {
       
   106     FUNC_LOG;
       
   107     iPreviewPaneOn = aPreviewOn;
       
   108     }
       
   109 
       
   110 // ---------------------------------------------------------------------------
       
   111 //  Retrurns information whether preview pane is turned on.
       
   112 // ---------------------------------------------------------------------------
       
   113 //
       
   114 TBool CFsTreePlainTwoLineItemVisualizer::IsPreviewPaneOn () const
       
   115     {
       
   116     FUNC_LOG;
       
   117     return iPreviewPaneOn;
       
   118     }
       
   119 
       
   120 // ---------------------------------------------------------------------------
       
   121 //  Sets the size of the item visualization area when it has preview pane
       
   122 //  turned on.
       
   123 // ---------------------------------------------------------------------------
       
   124 //
       
   125 void CFsTreePlainTwoLineItemVisualizer::SetPreviewPaneEnabledSize (
       
   126                                                             const TSize aSize)
       
   127     {
       
   128     FUNC_LOG;
       
   129     iPreviewPaneEnabledSize = aSize;
       
   130     }
       
   131 
       
   132 // ---------------------------------------------------------------------------
       
   133 //  Function returns the size of an item when it has preview pane turned on.
       
   134 // ---------------------------------------------------------------------------
       
   135 //
       
   136 TSize CFsTreePlainTwoLineItemVisualizer::PreviewPaneEnabledSize() const
       
   137     {
       
   138     FUNC_LOG;
       
   139     if ( iFlags & KFsTreeListItemManagedLayout )
       
   140         {
       
   141         CFsLayoutManager::TFsLayoutMetrics previewPaneSizeMetrics(CFsLayoutManager::EFsLmListMediumLineX3);
       
   142         TRect parentLayoutRect(0,0,0,0);
       
   143         TSize prevPaneSize(0,0);
       
   144         TBool retVal(EFalse);
       
   145 
       
   146         retVal = CFsLayoutManager::LayoutMetricsSize(
       
   147                                     parentLayoutRect,
       
   148                                     previewPaneSizeMetrics,
       
   149                                     prevPaneSize );
       
   150 
       
   151         if ( !retVal )
       
   152             {
       
   153             prevPaneSize = iPreviewPaneEnabledSize;
       
   154             }
       
   155 
       
   156         return prevPaneSize;
       
   157         }
       
   158     else
       
   159         {
       
   160         return iPreviewPaneEnabledSize;
       
   161         }
       
   162     }
       
   163 
       
   164 // ---------------------------------------------------------------------------
       
   165 //  Function sets wether flag icon should be visible or hidden.
       
   166 // ---------------------------------------------------------------------------
       
   167 //
       
   168 void CFsTreePlainTwoLineItemVisualizer::SetFlagIconVisible( TBool aShowFlag )
       
   169     {
       
   170     FUNC_LOG;
       
   171     iShowFlagIcon = aShowFlag;
       
   172     }
       
   173 
       
   174 // ---------------------------------------------------------------------------
       
   175 //  Function returns information if flag icon is visible or hidden.
       
   176 // ---------------------------------------------------------------------------
       
   177 //
       
   178 TBool CFsTreePlainTwoLineItemVisualizer::IsFlagIconVisible( ) const
       
   179     {
       
   180     FUNC_LOG;
       
   181     return iShowFlagIcon;
       
   182     }
       
   183 
       
   184 // ---------------------------------------------------------------------------
       
   185 //  The function sets whether time visual should be visible when item is
       
   186 //  not focused (in one line layout).
       
   187 // ---------------------------------------------------------------------------
       
   188 //
       
   189 void CFsTreePlainTwoLineItemVisualizer::SetIsTimeVisibleInFirstLineWhenNotFocused( TBool aIsVisible )
       
   190     {
       
   191     FUNC_LOG;
       
   192     iIsTimeVisibleWhenNotFocused = aIsVisible;
       
   193     }
       
   194 
       
   195 // ---------------------------------------------------------------------------
       
   196 //  The function returns whether time visual is visible when item is not
       
   197 //  focused (in one line layout).
       
   198 // ---------------------------------------------------------------------------
       
   199 //
       
   200 TBool CFsTreePlainTwoLineItemVisualizer::IsTimeVisibleInFirstLineWhenNotFocused( ) const
       
   201     {
       
   202     FUNC_LOG;
       
   203     return iIsTimeVisibleWhenNotFocused;
       
   204     }
       
   205 
       
   206 
       
   207 // From class MFsTreeItemVisualizer.
       
   208 
       
   209 
       
   210 // ---------------------------------------------------------------------------
       
   211 // From class MFsTreeItemVisualizer.
       
   212 // Returns the size of an item in a normal (not extended) state.
       
   213 // ---------------------------------------------------------------------------
       
   214 //
       
   215 TSize CFsTreePlainTwoLineItemVisualizer::Size() const
       
   216     {
       
   217     FUNC_LOG;
       
   218     if ( IsAlwaysExtended() )
       
   219         {
       
   220         //return iExtendedSize;
       
   221         return CFsTreeItemVisualizerBase::ExtendedSize();
       
   222         }
       
   223     else
       
   224         {
       
   225         //return iSize;
       
   226         return CFsTreeItemVisualizerBase::Size();
       
   227         }
       
   228     }
       
   229 
       
   230 // ---------------------------------------------------------------------------
       
   231 // From class MFsTreeItemVisualizer.
       
   232 // Returns the size of an item in expanded state.
       
   233 // ---------------------------------------------------------------------------
       
   234 //
       
   235 TSize CFsTreePlainTwoLineItemVisualizer::ExtendedSize() const
       
   236     {
       
   237     FUNC_LOG;
       
   238     if ( IsPreviewPaneOn() )
       
   239         {
       
   240         //return iPreviewPaneEnabledSize;
       
   241         return PreviewPaneEnabledSize();
       
   242         }
       
   243     else
       
   244         {
       
   245         //return iExtendedSize;
       
   246         return CFsTreeItemVisualizerBase::ExtendedSize();
       
   247         }
       
   248     }
       
   249 
       
   250 
       
   251 // ---------------------------------------------------------------------------
       
   252 // Updates the layout of the item beeing updated. Values are served by
       
   253 // layout manager.
       
   254 // ---------------------------------------------------------------------------
       
   255 //
       
   256 void CFsTreePlainTwoLineItemVisualizer::UpdateLayout(
       
   257         const CFsTreePlainTwoLineItemData* aData,
       
   258         const TInt aIndentation
       
   259         )
       
   260     {
       
   261     FUNC_LOG;
       
   262     TRect rect;
       
   263 
       
   264     TAlfTimedPoint tpMainIconTl, tpMainIconBr;
       
   265     TAlfTimedPoint tpMainTextTl, tpMainTextBr;
       
   266     TAlfTimedPoint tpDateTextTl, tpDateTextBr;
       
   267     TAlfTimedPoint tpMarkIconTl, tpMarkIconBr;
       
   268     TAlfTimedPoint tpMenuIconTl, tpMenuIconBr;
       
   269     TAlfTimedPoint tpFlagIconTl, tpFlagIconBr;
       
   270     TAlfTimedPoint tpSubjTextTl, tpSubjTextBr;
       
   271     TAlfTimedPoint tpPrevTextTl, tpPrevTextBr;
       
   272     
       
   273     // <cmail> Layouts
       
   274     
       
   275 /*
       
   276     CFsLayoutManager::TFsLayoutMetrics
       
   277         mainIconMetrics = CFsLayoutManager::EFsLmListMediumLineT2G3G1,
       
   278         markIconMetrics = CFsLayoutManager::EFsLmListMediumLineT2G3G2,
       
   279         menuIconMetrics = CFsLayoutManager::EFsLmListMediumLineT2G3G3,
       
   280         //<cmail> ???        
       
   281         sizeMetrics     = CFsLayoutManager::EFsLmListSingleDycRowPane,
       
   282         //</cmail>
       
   283         exSizeMetrics   = CFsLayoutManager::EFsLmListMediumLineX2,
       
   284         preSizeMetrics  = CFsLayoutManager::EFsLmListMediumLineX3,
       
   285         flagIconMetrics = CFsLayoutManager::EFsLmListMediumLineX2G1;
       
   286 */
       
   287 
       
   288     CFsLayoutManager::TFsLayoutMetrics
       
   289         mainIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG1,
       
   290         markIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG4,
       
   291         menuIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG3,
       
   292         sizeMetrics     = CFsLayoutManager::EFsLmListSingleDycRowPane,
       
   293         exSizeMetrics   = CFsLayoutManager::EFsLmListSingleFsDycPane,
       
   294         preSizeMetrics  = CFsLayoutManager::EFsLmListSingleFsDycPane,
       
   295         flagIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   296     
       
   297     TInt mainIconVariety( 0 );
       
   298     TInt mainIconRow( 0 );
       
   299     TInt markIconVariety( 0 );
       
   300     TInt markIconRow( 0 );
       
   301     TInt menuIconVariety( 0 );
       
   302     TInt menuIconRow( 0 );
       
   303     
       
   304     TInt sizeVariety( 0 );
       
   305     TInt exSizeVariety( 1 );
       
   306     TInt preSizeVariety( 2 );
       
   307     TInt flagIconVariety( 0 );
       
   308     TInt flagIconRow( 0 );
       
   309 
       
   310     
       
   311     CFsLayoutManager::TFsLayoutMetrics firstLineTextParentMetrics = 
       
   312     CFsLayoutManager::EFsLmListSingleDycRowTextPane;
       
   313     TInt firstLineTextParentVariety = 0;
       
   314 
       
   315     //values are assigned to avoid compiler warnings
       
   316     CFsLayoutManager::TFsLayoutMetrics firstLineTextMetrics[3] =
       
   317         {
       
   318                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1,
       
   319                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2,
       
   320                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2
       
   321         };
       
   322     TInt firstLineTextVarieties[3] =
       
   323             {
       
   324                     0,
       
   325                     0,
       
   326                     0
       
   327             };
       
   328     CFsLayoutManager::TFsLayoutMetrics secondLineTextMetrics =
       
   329         CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   330     TInt secondLineTextVariety = 0;
       
   331     CFsLayoutManager::TFsLayoutMetrics thirdLineTextMetrics =
       
   332         CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   333     TInt thirdLineTextVariety = 0;
       
   334 
       
   335     TInt firstLineTextFields = 0;
       
   336 
       
   337     if ((iFlags & KFsTreeListItemAlwaysExtended) ||
       
   338             (iFlags & KFsTreeListItemExtended))
       
   339         {
       
   340         //item extended
       
   341         TAlfTimedValue opacity;
       
   342         firstLineTextFields = 2;
       
   343         if (aData->DataLength()==0)
       
   344             {
       
   345             firstLineTextFields--;
       
   346             }
       
   347         if (aData->DateTimeDataLength()==0)
       
   348             {
       
   349             firstLineTextFields--;
       
   350             opacity.SetValueNow(0.0f);
       
   351             iDateTimeTextVisual->SetOpacity(opacity);
       
   352             }
       
   353         else
       
   354             {
       
   355             opacity.SetValueNow(1.0f);
       
   356             iDateTimeTextVisual->SetOpacity(opacity);
       
   357             }
       
   358 
       
   359         if (aData->IsIconSet())
       
   360             {
       
   361             if (iFlags & KFsTreeListItemMarked)
       
   362                 {
       
   363                 if ((iFlags & KFsTreeListItemHasMenu)
       
   364                         && (iFlags & KFsTreeListItemFocused))
       
   365                     {
       
   366                     //mainIcon + markIcon + menuIcon
       
   367                     mainIconMetrics =
       
   368                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;//EFsLmListMediumLineX2T3G4G1;
       
   369                     mainIconVariety = 3;
       
   370                     if (IsPreviewPaneOn())
       
   371                         {
       
   372                         markIconMetrics =
       
   373                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;//EFsLmListMediumLineX3T4G4G4;
       
   374                         markIconVariety = 5;
       
   375 						markIconRow = 2;
       
   376                         }
       
   377                     else
       
   378                         {
       
   379                         markIconMetrics =
       
   380                             CFsLayoutManager::EFsLmListSingleDycRowPaneG3;//EFsLmListMediumLineX2T3G4G2;
       
   381                         markIconVariety = 1;
       
   382 						markIconRow = 0;
       
   383                         }
       
   384                     menuIconMetrics =
       
   385                         CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   386                     menuIconVariety = 2;
       
   387                     if (firstLineTextFields==1)
       
   388                         {
       
   389                         firstLineTextMetrics[0] =
       
   390                               CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   391                         firstLineTextVarieties[0] = 3;
       
   392                         firstLineTextParentVariety = 3;
       
   393                         }
       
   394                     else if (firstLineTextFields==2)
       
   395                         {
       
   396                         firstLineTextMetrics[0] =
       
   397                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   398                         firstLineTextVarieties[0] = 21;
       
   399                         firstLineTextParentVariety = 3;
       
   400                         if (IsPreviewPaneOn())
       
   401                             {
       
   402                             firstLineTextMetrics[1] =
       
   403                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   404                             firstLineTextVarieties[1] = 13;
       
   405                             firstLineTextParentVariety = 4;
       
   406                             }
       
   407                         else
       
   408                             {
       
   409                             firstLineTextMetrics[1] =
       
   410                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   411                             firstLineTextVarieties[1] = 12;
       
   412                             firstLineTextParentVariety = 3;
       
   413                             }
       
   414                         }
       
   415                     }
       
   416                 else
       
   417                     {
       
   418                     //mainIcon + markIcon
       
   419                     mainIconMetrics =
       
   420                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   421                     mainIconVariety = 4;
       
   422                     markIconMetrics =
       
   423                         CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   424                     markIconVariety = 3;
       
   425                     firstLineTextParentVariety = 4;
       
   426                     if (firstLineTextFields==1)
       
   427                         {
       
   428                         firstLineTextMetrics[0] =
       
   429                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   430                         firstLineTextVarieties[0] = 4;
       
   431                         }
       
   432                     else if (firstLineTextFields==2)
       
   433                         {
       
   434                         firstLineTextMetrics[0] =
       
   435                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   436                         firstLineTextVarieties[0] = 13;
       
   437                         firstLineTextMetrics[1] =
       
   438                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   439                         firstLineTextVarieties[1] = 4;
       
   440                         }
       
   441                     }
       
   442                 }
       
   443             else
       
   444                 {
       
   445                 if ((iFlags & KFsTreeListItemHasMenu)
       
   446                         && (iFlags & KFsTreeListItemFocused))
       
   447                     {
       
   448                     //mainIcon + menuIcon
       
   449                     mainIconMetrics =
       
   450                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   451                     mainIconVariety = 4;
       
   452                     menuIconMetrics =
       
   453                         CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   454                     menuIconVariety = 3;
       
   455                     firstLineTextParentVariety = 4;
       
   456                     if (firstLineTextFields==1)
       
   457                         {
       
   458                         firstLineTextMetrics[0] =
       
   459                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   460                         firstLineTextVarieties[0] = 4;
       
   461                         }
       
   462                     else if (firstLineTextFields==2)
       
   463                         {
       
   464                         firstLineTextMetrics[0] =
       
   465                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   466                         firstLineTextVarieties[0] = 13;
       
   467                         firstLineTextMetrics[1] =
       
   468                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   469                         firstLineTextVarieties[1] = 4;
       
   470                         }
       
   471                     }
       
   472                 else
       
   473                     {
       
   474                     //mainIcon
       
   475                     mainIconMetrics =
       
   476                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   477                     mainIconVariety = 4;
       
   478                     firstLineTextParentVariety = 5;
       
   479                     if (firstLineTextFields==1)
       
   480                         {
       
   481                         firstLineTextMetrics[0] =
       
   482                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   483                         firstLineTextVarieties[0] = 5;
       
   484                         }
       
   485                     else if (firstLineTextFields==2)
       
   486                         {
       
   487                         firstLineTextMetrics[0] =
       
   488                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   489                         firstLineTextVarieties[0] = 23;
       
   490                         firstLineTextMetrics[1] =
       
   491                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   492                         firstLineTextVarieties[1] = 14;
       
   493                         }
       
   494                     }
       
   495                 }
       
   496             secondLineTextMetrics = CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   497             secondLineTextVariety = 5;
       
   498             flagIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   499             flagIconVariety = 3;
       
   500             }
       
   501         else
       
   502             {
       
   503             if (iFlags & KFsTreeListItemMarked)
       
   504                 {
       
   505                 if ((iFlags & KFsTreeListItemHasMenu)
       
   506                         && (iFlags & KFsTreeListItemFocused))
       
   507                     {
       
   508                     //markIcon + menuIcon
       
   509                     if (IsPreviewPaneOn())
       
   510                         {
       
   511                         markIconMetrics =
       
   512                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   513                         markIconVariety = 5;
       
   514 						markIconRow = 2;
       
   515                         menuIconMetrics =
       
   516                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   517                         menuIconVariety = 5;
       
   518                         }
       
   519                     else
       
   520                         {
       
   521                         markIconMetrics =
       
   522                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   523                         markIconVariety = 4;
       
   524                         menuIconMetrics =
       
   525                             CFsLayoutManager::EFsLmListSingleDycRowPaneG3;
       
   526                         menuIconVariety = 2;
       
   527                         }
       
   528                     firstLineTextParentVariety = 6;
       
   529                     if (firstLineTextFields==1)
       
   530                         {
       
   531                         firstLineTextMetrics[0] =
       
   532                               CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   533                         firstLineTextVarieties[0] = 6;
       
   534                         }
       
   535                     else if (firstLineTextFields==2)
       
   536                         {
       
   537                         firstLineTextMetrics[0] =
       
   538                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   539                         firstLineTextVarieties[0] = 24;
       
   540                         firstLineTextMetrics[1] =
       
   541                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   542                         firstLineTextVarieties[1] = 15;
       
   543                         }
       
   544                     }
       
   545                 else
       
   546                     {
       
   547                     //markIcon
       
   548                     if (IsPreviewPaneOn())
       
   549                         {
       
   550                         markIconMetrics =
       
   551                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   552                         markIconVariety = 5;
       
   553 						markIconRow = 2;
       
   554                         }
       
   555                     else
       
   556                         {
       
   557                         markIconMetrics =
       
   558                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   559                         markIconVariety = 5;
       
   560                         }
       
   561                     if (firstLineTextFields==1)
       
   562                         {
       
   563                         if (IsPreviewPaneOn())
       
   564                             {
       
   565                             firstLineTextMetrics[0] =
       
   566                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   567                             firstLineTextVarieties[0] = 8;
       
   568                             firstLineTextParentVariety = 8;
       
   569                             }
       
   570                         else
       
   571                             {
       
   572                             firstLineTextMetrics[0] =
       
   573                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   574                             firstLineTextVarieties[0] = 7;
       
   575                             firstLineTextParentVariety = 7;
       
   576                             }
       
   577                         }
       
   578                     else if (firstLineTextFields==2)
       
   579                         {
       
   580                         if (IsPreviewPaneOn())
       
   581                             {
       
   582                             firstLineTextMetrics[0] =
       
   583                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   584                             firstLineTextVarieties[0] = 26;
       
   585                             firstLineTextMetrics[1] =
       
   586                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   587                             firstLineTextVarieties[1] = 17;
       
   588                             firstLineTextParentVariety = 8;
       
   589                             }
       
   590                         else
       
   591                             {
       
   592                             firstLineTextMetrics[0] =
       
   593                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   594                             firstLineTextVarieties[0] = 25;
       
   595                             firstLineTextMetrics[1] =
       
   596                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   597                             firstLineTextVarieties[1] = 16;
       
   598                             firstLineTextParentVariety = 7;
       
   599                             }
       
   600                         }
       
   601                     }
       
   602                 }
       
   603             else
       
   604                 {
       
   605                 if ((iFlags & KFsTreeListItemHasMenu)
       
   606                         && (iFlags & KFsTreeListItemFocused))
       
   607                     {
       
   608                     //menuIcon
       
   609                     if (firstLineTextFields==1)
       
   610                         {
       
   611                         menuIconMetrics =
       
   612                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   613                         menuIconVariety = 5;
       
   614                         firstLineTextMetrics[0] =
       
   615                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   616                         firstLineTextVarieties[0] = 7;
       
   617                         firstLineTextParentVariety = 7;
       
   618                         }
       
   619                     else if (firstLineTextFields==2)
       
   620                         {
       
   621                         menuIconMetrics =
       
   622                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   623                         menuIconVariety = 5;
       
   624                         firstLineTextMetrics[0] =
       
   625                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   626                         firstLineTextVarieties[0] = 25;
       
   627                         firstLineTextMetrics[1] =
       
   628                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   629                         firstLineTextVarieties[1] = 16;
       
   630                         firstLineTextParentVariety = 7;
       
   631                         }
       
   632                     }
       
   633                 else
       
   634                     {
       
   635                     //plain item
       
   636                     if (firstLineTextFields==1)
       
   637                         {
       
   638                         firstLineTextMetrics[0] =
       
   639                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   640                         firstLineTextVarieties[0] = 8;
       
   641                         firstLineTextParentVariety = 8;
       
   642                         }
       
   643                     else if (firstLineTextFields==2)
       
   644                         {
       
   645                         firstLineTextMetrics[0] =
       
   646                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   647                         firstLineTextVarieties[0] = 26;
       
   648                         firstLineTextMetrics[1] =
       
   649                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   650                         firstLineTextVarieties[1] = 17;
       
   651                         firstLineTextParentVariety = 8;
       
   652                         }
       
   653                     }
       
   654                 }
       
   655 
       
   656             if (aData->IsFlagIconSet())
       
   657                 {
       
   658                 secondLineTextMetrics = CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   659                 secondLineTextVariety = 5;
       
   660                 flagIconMetrics = CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   661                 flagIconVariety = 5;
       
   662 				flagIconRow = 1;
       
   663                 }
       
   664             else
       
   665                 {
       
   666                 secondLineTextMetrics = CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   667                 secondLineTextVariety = 8;
       
   668                 }
       
   669             }
       
   670         //<cmail> ???
       
   671         thirdLineTextMetrics = CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   672         thirdLineTextVariety = 4;
       
   673         //</cmail>
       
   674         }
       
   675     else
       
   676         {
       
   677 
       
   678         firstLineTextFields = 3;
       
   679 
       
   680         TAlfTimedValue opacity;
       
   681 
       
   682         if (aData->DataLength()==0)
       
   683             {
       
   684             firstLineTextFields--;
       
   685             opacity.SetValueNow(0.0f);
       
   686             iViewportLayout->SetOpacity(opacity);
       
   687             }
       
   688         else
       
   689             {
       
   690             opacity.SetValueNow(1.0f);
       
   691             iViewportLayout->SetOpacity(opacity);
       
   692             }
       
   693 
       
   694         if (aData->SecondaryDataLength()==0)
       
   695             {
       
   696             firstLineTextFields--;
       
   697             opacity.SetValueNow(0.0f);
       
   698             iSecViewport->SetOpacity(opacity);
       
   699             }
       
   700         else
       
   701             {
       
   702             opacity.SetValueNow(1.0f);
       
   703             iSecViewport->SetOpacity(opacity);
       
   704             }
       
   705 
       
   706         if (aData->DateTimeDataLength()==0)
       
   707             {
       
   708             firstLineTextFields--;
       
   709             opacity.SetValueNow(0.0f);
       
   710             iDateTimeTextVisual->SetOpacity(opacity);
       
   711             }
       
   712         else
       
   713             {
       
   714             opacity.SetValueNow(1.0f);
       
   715             iDateTimeTextVisual->SetOpacity(opacity);
       
   716             }
       
   717 
       
   718         if (aData->IsIconSet())
       
   719             {
       
   720             if (iFlags & KFsTreeListItemMarked)
       
   721                 {
       
   722                 if ((iFlags & KFsTreeListItemHasMenu)
       
   723                         && (iFlags & KFsTreeListItemFocused))
       
   724                     {
       
   725                     //mainIcon + markIcon + menuIcon
       
   726                     mainIconMetrics =
       
   727                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   728                     mainIconVariety = 3;
       
   729                     markIconMetrics =
       
   730                         CFsLayoutManager::EFsLmListSingleDycRowPaneG3;
       
   731                     markIconVariety = 1;
       
   732                     menuIconMetrics =
       
   733                         CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   734                     menuIconVariety = 2;
       
   735                     firstLineTextParentVariety = 3;
       
   736                     if (firstLineTextFields==1)
       
   737                         {
       
   738                         firstLineTextMetrics[0] =
       
   739                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   740                         firstLineTextVarieties[0] = 3;
       
   741                         }
       
   742                     if (firstLineTextFields==2)
       
   743                         {
       
   744                         firstLineTextMetrics[0] =
       
   745                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   746                         firstLineTextVarieties[0] = 21;
       
   747                         firstLineTextMetrics[1] =
       
   748                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   749                         firstLineTextVarieties[1] = 12;
       
   750                         }
       
   751                     if (firstLineTextFields==3)
       
   752                         {
       
   753                         firstLineTextMetrics[0] =
       
   754                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   755                         firstLineTextVarieties[0] = 30;
       
   756                         firstLineTextMetrics[1] =
       
   757                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   758                         firstLineTextVarieties[1] = 21;
       
   759                         firstLineTextMetrics[2] =
       
   760                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
   761                         firstLineTextVarieties[2] = 3;
       
   762                         }
       
   763                     }
       
   764                 else
       
   765                     {
       
   766                     //mainIcon + markIcon
       
   767                     mainIconMetrics =
       
   768                         CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   769                     mainIconVariety = 4;
       
   770                     markIconMetrics =
       
   771                         CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   772                     markIconVariety = 3;
       
   773                     firstLineTextParentVariety = 4;
       
   774                     if (firstLineTextFields==1)
       
   775                         {
       
   776                         firstLineTextMetrics[0] =
       
   777                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   778                         firstLineTextVarieties[0] = 4;
       
   779                         }
       
   780                     if (firstLineTextFields==2)
       
   781                         {
       
   782                         firstLineTextMetrics[0] =
       
   783                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   784                         firstLineTextVarieties[0] = 22;
       
   785                         firstLineTextMetrics[1] =
       
   786                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   787                         firstLineTextVarieties[1] = 13;
       
   788                         }
       
   789                     if (firstLineTextFields==3)
       
   790                         {
       
   791                         if ( IsTimeVisibleInFirstLineWhenNotFocused() )
       
   792                             {
       
   793                             firstLineTextMetrics[0] =
       
   794                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   795                             firstLineTextVarieties[0] = 31;
       
   796                             firstLineTextMetrics[1] =
       
   797                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   798                             firstLineTextVarieties[1] = 22;
       
   799                             firstLineTextMetrics[2] =
       
   800                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
   801                             firstLineTextVarieties[2] = 4;
       
   802                             if ( iDateTimeTextVisual )
       
   803                                 {
       
   804                                 opacity.SetValueNow(1.0f);
       
   805                                 iDateTimeTextVisual->SetOpacity(opacity);
       
   806                                 }
       
   807                             }
       
   808                         else
       
   809                             { //hide time visual - display sender and subject only
       
   810                             firstLineTextFields = 2;
       
   811                             //hide time visual
       
   812                             if ( iDateTimeTextVisual )
       
   813                                 {
       
   814                                 opacity.SetValueNow(0.0f);
       
   815                                 iDateTimeTextVisual->SetOpacity(opacity);
       
   816                                 }
       
   817                             firstLineTextMetrics[0] =
       
   818                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   819                             firstLineTextVarieties[0] = 22;
       
   820                             firstLineTextMetrics[1] =
       
   821                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   822                             firstLineTextVarieties[1] = 13;
       
   823                             }
       
   824                         }
       
   825                     }
       
   826                 }
       
   827             else
       
   828                 {
       
   829                 if ((iFlags & KFsTreeListItemHasMenu)
       
   830                         && (iFlags & KFsTreeListItemFocused))
       
   831                     {
       
   832                     //mainIcon + menuIcon
       
   833                     firstLineTextParentVariety = 4;
       
   834                     if (firstLineTextFields==1)
       
   835                         {
       
   836                         mainIconMetrics =
       
   837                             CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   838                         mainIconVariety = 4;
       
   839                         menuIconMetrics =
       
   840                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   841                         menuIconVariety = 3;
       
   842                         firstLineTextMetrics[0] =
       
   843                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   844                         firstLineTextVarieties[0] = 4;
       
   845                         }
       
   846                     if (firstLineTextFields==2)
       
   847                         {
       
   848                         mainIconMetrics =
       
   849                             CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   850                         mainIconVariety = 4;
       
   851                         menuIconMetrics =
       
   852                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   853                         menuIconVariety = 3;
       
   854                         firstLineTextMetrics[0] =
       
   855                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   856                         firstLineTextVarieties[0] = 22;
       
   857                         firstLineTextMetrics[1] =
       
   858                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   859                         firstLineTextVarieties[1] = 13;
       
   860                         }
       
   861                     if (firstLineTextFields==3)
       
   862                         {
       
   863                         mainIconMetrics =
       
   864                             CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   865                         mainIconVariety = 4;
       
   866                         menuIconMetrics =
       
   867                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   868                         menuIconVariety = 3;
       
   869                         firstLineTextMetrics[0] =
       
   870                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   871                         firstLineTextVarieties[0] = 31;
       
   872                         firstLineTextMetrics[1] =
       
   873                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   874                         firstLineTextVarieties[1] = 22;
       
   875                         firstLineTextMetrics[2] =
       
   876                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
   877                         firstLineTextVarieties[2] = 4;
       
   878                         }
       
   879                     }
       
   880                 else
       
   881                     {
       
   882                     //mainIcon
       
   883                     firstLineTextParentVariety = 5;
       
   884                     if (firstLineTextFields==1)
       
   885                         {
       
   886                         mainIconMetrics =
       
   887                             CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   888                         mainIconVariety = 5;
       
   889                         firstLineTextMetrics[0] =
       
   890                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   891                         firstLineTextVarieties[0] = 5;
       
   892                         }
       
   893                     if (firstLineTextFields==2)
       
   894                         {
       
   895                         mainIconMetrics =
       
   896                             CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   897                         mainIconVariety = 5;
       
   898                         firstLineTextMetrics[0] =
       
   899                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   900                         firstLineTextVarieties[0] = 23;
       
   901                         firstLineTextMetrics[1] =
       
   902                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   903                         firstLineTextVarieties[1] = 14;
       
   904                         }
       
   905                     if (firstLineTextFields==3)
       
   906                         {
       
   907                         if ( IsTimeVisibleInFirstLineWhenNotFocused() )
       
   908                             {
       
   909                             mainIconMetrics =
       
   910                                 CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   911                             mainIconVariety = 5;
       
   912                             firstLineTextMetrics[0] =
       
   913                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   914                             firstLineTextVarieties[0] = 32; 
       
   915                             firstLineTextMetrics[1] =
       
   916                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   917                             firstLineTextVarieties[1] = 23;
       
   918                             firstLineTextMetrics[2] =
       
   919                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
   920                             firstLineTextVarieties[2] = 5;
       
   921                             if ( iDateTimeTextVisual )
       
   922                                 {
       
   923                                 opacity.SetValueNow(1.0f);
       
   924                                 iDateTimeTextVisual->SetOpacity(opacity);
       
   925                                 }
       
   926                             }
       
   927                         else
       
   928                             { //hide time visual - display sender and subject only
       
   929                             firstLineTextFields = 2;
       
   930                             mainIconMetrics =
       
   931                                 CFsLayoutManager::EFsLmListSingleDycRowPaneG1;
       
   932                             mainIconVariety = 5;
       
   933                             firstLineTextMetrics[0] =
       
   934                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   935                             firstLineTextVarieties[0] = 23; 
       
   936                             firstLineTextMetrics[1] =
       
   937                                 CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   938                             firstLineTextVarieties[1] = 14;
       
   939                             //hide time visual
       
   940                             if ( iDateTimeTextVisual )
       
   941                                 {
       
   942                                 opacity.SetValueNow(0.0f);
       
   943                                 iDateTimeTextVisual->SetOpacity(opacity);
       
   944                                 }
       
   945                             }
       
   946                         }
       
   947                     }
       
   948                 }
       
   949             }
       
   950         else
       
   951             {
       
   952             if (iFlags & KFsTreeListItemMarked)
       
   953                 {
       
   954                 if ((iFlags & KFsTreeListItemHasMenu)
       
   955                         && (iFlags & KFsTreeListItemFocused))
       
   956                     {
       
   957                     //markIcon + menuIcon
       
   958                     if (firstLineTextFields==1)
       
   959                         {
       
   960                         firstLineTextParentVariety = 7;
       
   961                         firstLineTextMetrics[0] =
       
   962                              CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   963                         firstLineTextVarieties[0] = 7;
       
   964                         markIconMetrics =
       
   965                              CFsLayoutManager::EFsLmListSingleDycRowPaneG3;
       
   966                         markIconVariety = 2;
       
   967                         menuIconMetrics =
       
   968                              CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   969                         menuIconVariety = 4;
       
   970                         }
       
   971                     else if (firstLineTextFields==2)
       
   972                         {
       
   973                         firstLineTextParentVariety = 6;
       
   974                         markIconMetrics =
       
   975                          CFsLayoutManager::EFsLmListSingleDycRowPaneG3;
       
   976                         markIconVariety = 2;
       
   977                         menuIconMetrics =
       
   978                          CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   979                         menuIconVariety = 4;
       
   980                         firstLineTextMetrics[0] =
       
   981                          CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   982                         firstLineTextVarieties[0] = 24;
       
   983                         firstLineTextMetrics[1] =
       
   984                          CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
   985                         firstLineTextVarieties[1] = 15;
       
   986                         }
       
   987                     else if (firstLineTextFields==3)
       
   988                         {
       
   989                         firstLineTextParentVariety = 6;
       
   990                         markIconMetrics =
       
   991                              CFsLayoutManager::EFsLmListSingleDycRowPaneG3;
       
   992                         markIconVariety = 2;
       
   993                         menuIconMetrics =
       
   994                              CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
   995                         menuIconVariety = 4;
       
   996                         firstLineTextMetrics[0] =
       
   997                              CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
   998                         firstLineTextVarieties[0] = 33;
       
   999                         firstLineTextMetrics[1] =
       
  1000                              CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
  1001                         firstLineTextVarieties[1] = 24;
       
  1002 //                        firstLineTextMetrics[2] =
       
  1003 //                             CFsLayoutManager::EFsLmListMediumLineT3RightIconx2T3;
       
  1004                         }
       
  1005                     }
       
  1006                 else
       
  1007                     {
       
  1008                     //markIcon
       
  1009                     firstLineTextParentVariety = 7;
       
  1010                     if (firstLineTextFields==1)
       
  1011                         {
       
  1012                         markIconMetrics =
       
  1013                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
  1014                         markIconVariety = 5;
       
  1015                         firstLineTextMetrics[0] =
       
  1016                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1017                         firstLineTextVarieties[0] = 7;
       
  1018                         }
       
  1019                     else if (firstLineTextFields==2)
       
  1020                         {
       
  1021                         markIconMetrics =
       
  1022                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
  1023                         markIconVariety = 5;
       
  1024                         firstLineTextMetrics[0] =
       
  1025                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1026                         firstLineTextVarieties[0] = 25;
       
  1027                         firstLineTextMetrics[1] =
       
  1028                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
  1029                         firstLineTextVarieties[1] = 16;
       
  1030                         }
       
  1031                     else if (firstLineTextFields==3)
       
  1032                         {
       
  1033 //                        markIconMetrics =
       
  1034 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconG1;
       
  1035 //                        firstLineTextMetrics[0] =
       
  1036 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconT1;
       
  1037 //                        firstLineTextMetrics[1] =
       
  1038 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconT2;
       
  1039 //                        firstLineTextMetrics[2] =
       
  1040 //                            CFsLayoutManager::EFsLmListMediumLineT32RightIconT2;
       
  1041                         }
       
  1042                     }
       
  1043                 }
       
  1044             else
       
  1045                 {
       
  1046                 if ((iFlags & KFsTreeListItemHasMenu)
       
  1047                         && (iFlags & KFsTreeListItemFocused))
       
  1048                     {
       
  1049                     //menuIcon
       
  1050                     firstLineTextParentVariety = 7;
       
  1051                     if (firstLineTextFields==1)
       
  1052                         {
       
  1053                         menuIconMetrics =
       
  1054                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
  1055                         menuIconVariety = 5;
       
  1056                         firstLineTextMetrics[0] =
       
  1057                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1058                         firstLineTextVarieties[0] = 7;
       
  1059                         }
       
  1060                     else if (firstLineTextFields==2)
       
  1061                         {
       
  1062                         menuIconMetrics =
       
  1063                             CFsLayoutManager::EFsLmListSingleDycRowPaneG4;
       
  1064                         menuIconVariety = 5;
       
  1065                         firstLineTextMetrics[0] =
       
  1066                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1067                         firstLineTextVarieties[0] = 25;
       
  1068                         firstLineTextMetrics[1] =
       
  1069                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
  1070                         firstLineTextVarieties[1] = 16;
       
  1071                         }
       
  1072                     else if (firstLineTextFields==3)
       
  1073                         {
       
  1074 //                        menuIconMetrics =
       
  1075 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconG1;
       
  1076 //                        firstLineTextMetrics[0] =
       
  1077 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconT1;
       
  1078 //                        firstLineTextMetrics[1] =
       
  1079 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconT2;
       
  1080 //                        firstLineTextMetrics[2] =
       
  1081 //                            CFsLayoutManager::EFsLmListMediumLineT3RightIconT2;
       
  1082                         }
       
  1083                     }
       
  1084                 else
       
  1085                     {
       
  1086                     //plain item
       
  1087                     firstLineTextParentVariety = 8;
       
  1088                     if (firstLineTextFields==1)
       
  1089                         {
       
  1090                         firstLineTextMetrics[0]     =
       
  1091                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1092                         firstLineTextVarieties[0] = 8;
       
  1093                         }
       
  1094                     if (firstLineTextFields==2)
       
  1095                         {
       
  1096                         firstLineTextParentVariety = 8;
       
  1097                         firstLineTextMetrics[0]     =
       
  1098                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1099                         firstLineTextVarieties[0] = 26;
       
  1100                         firstLineTextMetrics[1]     =
       
  1101                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
  1102                         firstLineTextVarieties[1] = 17;
       
  1103                         }
       
  1104                     if (firstLineTextFields==3)
       
  1105                         {
       
  1106                         firstLineTextMetrics[0]     =
       
  1107                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT1;
       
  1108                         firstLineTextVarieties[0] = 35;
       
  1109                         firstLineTextMetrics[1]     =
       
  1110                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT2;
       
  1111                         firstLineTextVarieties[1] = 26;
       
  1112                         firstLineTextMetrics[2]     =
       
  1113                             CFsLayoutManager::EFsLmListSingleDycRowTextPaneT3;
       
  1114                         firstLineTextVarieties[2] = 8;
       
  1115                         }
       
  1116 
       
  1117                     }
       
  1118                 }
       
  1119             }
       
  1120         }
       
  1121     //layout manager is queried for medium values - LM returnes rects based on phone's global text settings
       
  1122 
       
  1123     TRect parentLayoutRect = TRect(iParentLayout->Size().Target().AsSize());
       
  1124     parentLayoutRect.Resize(-(iParentLayout->HorizontalPadding()*2), 0);
       
  1125 
       
  1126     if (iFlags & KFsTreeListItemManagedLayout)
       
  1127         {
       
  1128         CFsLayoutManager::LayoutMetricsSize(
       
  1129                 parentLayoutRect,
       
  1130                 preSizeMetrics,
       
  1131                 iPreviewPaneEnabledSize,
       
  1132                 preSizeVariety);
       
  1133 
       
  1134         CFsLayoutManager::LayoutMetricsSize(
       
  1135                 parentLayoutRect,
       
  1136                 exSizeMetrics,
       
  1137                 iExtendedSize,
       
  1138                 exSizeVariety);
       
  1139 
       
  1140         CFsLayoutManager::LayoutMetricsSize(
       
  1141                 parentLayoutRect,
       
  1142                 sizeMetrics,
       
  1143                 iSize,
       
  1144                 sizeVariety);
       
  1145         }
       
  1146 
       
  1147     TRect currentSize;
       
  1148     if ((iFlags & KFsTreeListItemAlwaysExtended) ||
       
  1149             (iFlags & KFsTreeListItemExtended))
       
  1150         {
       
  1151         if (IsPreviewPaneOn())
       
  1152             {
       
  1153             currentSize = iPreviewPaneEnabledSize;
       
  1154             }
       
  1155         else
       
  1156             {
       
  1157             currentSize = iExtendedSize;
       
  1158             }
       
  1159         }
       
  1160     else
       
  1161         {
       
  1162         currentSize = iSize;
       
  1163         }
       
  1164 
       
  1165     if (CFsLayoutManager::IsMirrored())
       
  1166         {
       
  1167         currentSize.iBr = currentSize.iBr - TPoint(aIndentation, 0);
       
  1168         }
       
  1169     else
       
  1170         {
       
  1171         currentSize.iTl = currentSize.iTl + TPoint(aIndentation, 0);
       
  1172         }
       
  1173 
       
  1174     TAlfTimedValue opacity;
       
  1175 
       
  1176     if ((iFlags & KFsTreeListItemHasMenu)
       
  1177             && (iFlags & KFsTreeListItemFocused))
       
  1178         {
       
  1179         TRect iconRowParent = currentSize;
       
  1180         if (menuIconRow > 0)
       
  1181             {
       
  1182             CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, iconRowParent, menuIconRow, menuIconRow);
       
  1183             }
       
  1184         CFsLayoutManager::LayoutMetricsRect(
       
  1185                 iconRowParent,
       
  1186                 menuIconMetrics,
       
  1187                 rect,
       
  1188                 menuIconVariety);
       
  1189         tpMenuIconTl.SetTarget(TAlfRealPoint(rect.iTl));
       
  1190         tpMenuIconBr.SetTarget(TAlfRealPoint(rect.iBr));
       
  1191 
       
  1192         TInt iconMenuVisIndex = iLayout->FindVisual(iIconMenu);
       
  1193         if ( iconMenuVisIndex != KErrNotFound )
       
  1194             {
       
  1195             tpMenuIconTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1196             iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1197                     iconMenuVisIndex,
       
  1198                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1199                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1200                     tpMenuIconTl );
       
  1201             tpMenuIconBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1202             iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1203                     iconMenuVisIndex,
       
  1204                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1205                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1206                     tpMenuIconBr );
       
  1207             }
       
  1208         }
       
  1209 
       
  1210 
       
  1211     if (iIconVisual)
       
  1212         {
       
  1213         TRect iconRowParent = currentSize;
       
  1214         if (mainIconRow > 0)
       
  1215             {
       
  1216             CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, iconRowParent, mainIconRow, mainIconRow);
       
  1217             }
       
  1218         CFsLayoutManager::LayoutMetricsRect(
       
  1219                 iconRowParent,
       
  1220                 mainIconMetrics,
       
  1221                 rect,
       
  1222                 mainIconVariety);
       
  1223         tpMainIconTl.SetTarget(TAlfRealPoint(rect.iTl));
       
  1224         tpMainIconBr.SetTarget(TAlfRealPoint(rect.iBr));
       
  1225 
       
  1226         TInt iconVisIndex = iLayout->FindVisual(iIconVisual);
       
  1227         if ( iconVisIndex != KErrNotFound )
       
  1228             {
       
  1229             tpMainIconTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1230             iLayout->SetAnchor( EAlfAnchorTopLeft,
       
  1231                     iconVisIndex,
       
  1232                     EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
       
  1233                     EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
       
  1234                     tpMainIconTl );
       
  1235             tpMainIconBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1236             iLayout->SetAnchor( EAlfAnchorBottomRight,
       
  1237                     iconVisIndex,
       
  1238                     EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
       
  1239                     EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
       
  1240                     tpMainIconBr );
       
  1241             }
       
  1242         }
       
  1243 
       
  1244     TInt firstLineTextIndex = 0;
       
  1245 
       
  1246     if (aData->DataLength()>0)
       
  1247         {
       
  1248         TRect textParentRect;
       
  1249         CFsLayoutManager::LayoutMetricsRect(currentSize, firstLineTextParentMetrics, textParentRect, firstLineTextParentVariety);
       
  1250         CFsLayoutManager::TFsText mainTextInfo;
       
  1251         CFsLayoutManager::LayoutMetricsText(textParentRect,
       
  1252                 firstLineTextMetrics[0], mainTextInfo, firstLineTextVarieties[0]);
       
  1253 
       
  1254         firstLineTextIndex++;
       
  1255         tpMainTextTl.SetTarget(TAlfRealPoint(mainTextInfo.iTextRect.iTl));
       
  1256         tpMainTextBr.SetTarget(TAlfRealPoint(mainTextInfo.iTextRect.iBr));
       
  1257 
       
  1258         TInt textVisIndex = iLayout->FindVisual(iViewportLayout);
       
  1259         if ( textVisIndex != KErrNotFound )
       
  1260             {
       
  1261             tpMainTextTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1262             iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1263                     textVisIndex,
       
  1264                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1265                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1266                     tpMainTextTl );
       
  1267             tpMainTextBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1268             iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1269                     textVisIndex,
       
  1270                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1271                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1272                     tpMainTextBr );
       
  1273             }
       
  1274         }
       
  1275 
       
  1276     if (aData->SecondaryDataLength()>0)
       
  1277         {
       
  1278         CFsLayoutManager::TFsText subjTextInfo;
       
  1279 
       
  1280         if ((iFlags & KFsTreeListItemAlwaysExtended) ||
       
  1281                 (iFlags & KFsTreeListItemExtended))
       
  1282             {
       
  1283             TRect secondLineParentRect;
       
  1284             CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, secondLineParentRect, 1, 1);
       
  1285             CFsLayoutManager::LayoutMetricsRect(secondLineParentRect, CFsLayoutManager::EFsLmListSingleDycRowTextPane, secondLineParentRect, secondLineTextVariety);
       
  1286             CFsLayoutManager::LayoutMetricsText(secondLineParentRect,
       
  1287                     secondLineTextMetrics, subjTextInfo, secondLineTextVariety);
       
  1288             }
       
  1289         else
       
  1290             {
       
  1291             TRect textParentRect;
       
  1292             CFsLayoutManager::LayoutMetricsRect(currentSize, firstLineTextParentMetrics, textParentRect, firstLineTextParentVariety);
       
  1293             CFsLayoutManager::LayoutMetricsText(textParentRect,
       
  1294                     firstLineTextMetrics[firstLineTextIndex], subjTextInfo, firstLineTextVarieties[firstLineTextIndex]);
       
  1295             firstLineTextIndex++;
       
  1296             }
       
  1297 
       
  1298         tpSubjTextTl.SetTarget(TAlfRealPoint(subjTextInfo.iTextRect.iTl));
       
  1299         tpSubjTextBr.SetTarget(TAlfRealPoint(subjTextInfo.iTextRect.iBr));
       
  1300         
       
  1301         if (tpMainTextTl.iY.Target() == tpSubjTextTl.iY.Target() && tpMainTextBr.iX.Target() > tpSubjTextTl.iX.Target())
       
  1302             {
       
  1303             const TReal32 delta(tpMainTextBr.iX.Target() - tpSubjTextTl.iX.Target() + 1); 
       
  1304             tpSubjTextTl.iX.SetTarget(tpSubjTextTl.iX.Target() + delta, 0);            
       
  1305             tpSubjTextBr.iX.SetTarget(tpSubjTextBr.iX.Target() - delta, 0);            
       
  1306             }
       
  1307 
       
  1308         TInt seconTextVisIndex = iLayout->FindVisual(iSecViewport);
       
  1309         if ( seconTextVisIndex != KErrNotFound )
       
  1310             {
       
  1311             tpSubjTextTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1312             iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1313                     seconTextVisIndex,
       
  1314                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1315                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1316                     tpSubjTextTl );
       
  1317             tpSubjTextBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1318             iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1319                     seconTextVisIndex,
       
  1320                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1321                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1322                     tpSubjTextBr );
       
  1323             }
       
  1324         }
       
  1325 
       
  1326     if ( iDateTimeTextVisual )
       
  1327         {
       
  1328         TRect textParentRect;
       
  1329         CFsLayoutManager::LayoutMetricsRect(currentSize, firstLineTextParentMetrics, textParentRect, firstLineTextParentVariety);
       
  1330         CFsLayoutManager::TFsText dateTextInfo;
       
  1331         CFsLayoutManager::LayoutMetricsText(textParentRect,
       
  1332                 firstLineTextMetrics[firstLineTextIndex], dateTextInfo, firstLineTextVarieties[firstLineTextIndex]);
       
  1333 
       
  1334         tpDateTextTl.SetTarget(TAlfRealPoint(dateTextInfo.iTextRect.iTl));
       
  1335         tpDateTextBr.SetTarget(TAlfRealPoint(dateTextInfo.iTextRect.iBr));
       
  1336 
       
  1337         TInt textDateTimeIndex =
       
  1338                         iLayout->FindVisual(iDateTimeTextVisual);
       
  1339         if ( textDateTimeIndex != KErrNotFound )
       
  1340             {
       
  1341             tpDateTextTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1342             iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1343                     textDateTimeIndex,
       
  1344                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1345                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1346                     tpDateTextTl );
       
  1347             tpDateTextTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1348             iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1349                     textDateTimeIndex,
       
  1350                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1351                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1352                     tpDateTextBr );
       
  1353             }
       
  1354         }
       
  1355 
       
  1356     //visual for a flag icon
       
  1357     if ( IsFlagIconVisible() && ((iFlags & KFsTreeListItemExtended) ||
       
  1358             (iFlags & KFsTreeListItemAlwaysExtended)))
       
  1359         {
       
  1360         TRect iconRowParent = currentSize;
       
  1361         if (flagIconRow > 0)
       
  1362             {
       
  1363             CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, iconRowParent, flagIconRow, flagIconRow);
       
  1364             }
       
  1365         CFsLayoutManager::LayoutMetricsRect(
       
  1366                 iconRowParent,
       
  1367                 flagIconMetrics,
       
  1368                 rect,
       
  1369                 flagIconVariety);
       
  1370         tpFlagIconTl.SetTarget(TAlfRealPoint(rect.iTl));
       
  1371         tpFlagIconBr.SetTarget(TAlfRealPoint(rect.iBr));
       
  1372 
       
  1373         TInt iconFlagVisIndex =
       
  1374                           iLayout->FindVisual(iIconFlagVisual);
       
  1375         if ( iconFlagVisIndex != KErrNotFound )
       
  1376             {
       
  1377             tpFlagIconTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1378             iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1379                 iconFlagVisIndex,
       
  1380                 EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
       
  1381                 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
       
  1382                 tpFlagIconTl );
       
  1383             tpFlagIconBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1384             iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1385                 iconFlagVisIndex,
       
  1386                 EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
       
  1387                 EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
       
  1388                 tpFlagIconBr );
       
  1389             opacity.SetValueNow(1.0f);
       
  1390             iIconFlagVisual->SetOpacity(opacity);
       
  1391             }
       
  1392         }
       
  1393     else
       
  1394         {
       
  1395         if (iIconFlagVisual)
       
  1396             {
       
  1397             opacity.SetValueNow(0.0f);
       
  1398             iIconFlagVisual->SetOpacity(opacity);
       
  1399             }
       
  1400         }
       
  1401 
       
  1402     if ( IsMarked() && iIconMarked )
       
  1403         {
       
  1404         if (iIconMarked)
       
  1405             {
       
  1406             TRect iconRowParent = currentSize;
       
  1407             if (markIconRow > 0)
       
  1408                 {
       
  1409                 CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, iconRowParent, markIconRow, markIconRow);
       
  1410                 }
       
  1411             CFsLayoutManager::LayoutMetricsRect(
       
  1412                     iconRowParent,
       
  1413                     markIconMetrics,
       
  1414                     rect,
       
  1415                     markIconVariety);
       
  1416             tpMarkIconTl.SetTarget(TAlfRealPoint(rect.iTl));
       
  1417             tpMarkIconBr.SetTarget(TAlfRealPoint(rect.iBr));
       
  1418 
       
  1419             TInt iconMarkedVisIndex =
       
  1420                                  iLayout->FindVisual(iIconMarked);
       
  1421             if ( iconMarkedVisIndex != KErrNotFound )
       
  1422                 {
       
  1423                 tpMarkIconTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1424                 iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1425                     iconMarkedVisIndex,
       
  1426                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1427                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1428                     tpMarkIconTl );
       
  1429                 tpMarkIconBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1430                 iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1431                     iconMarkedVisIndex,
       
  1432                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1433                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1434                     tpMarkIconBr );
       
  1435                 }
       
  1436             }
       
  1437         opacity.SetValueNow(1.0f);
       
  1438         iIconMarked->SetOpacity(opacity);
       
  1439         }
       
  1440     else
       
  1441         {
       
  1442         opacity.SetValueNow(0.0f);
       
  1443         iIconMarked->SetOpacity(opacity);
       
  1444         }
       
  1445 
       
  1446     if ( iPreviewPaneTextVisual )
       
  1447         {
       
  1448         if ( IsPreviewPaneOn() && ((iFlags & KFsTreeListItemAlwaysExtended) ||
       
  1449                 (iFlags & KFsTreeListItemExtended)) )
       
  1450             {
       
  1451             TRect thirdLineParentRect;
       
  1452             CFsLayoutManager::LayoutMetricsRect(currentSize, CFsLayoutManager::EFsLmListSingleDycRowPane, thirdLineParentRect, 2, 2);
       
  1453             CFsLayoutManager::LayoutMetricsRect(thirdLineParentRect, CFsLayoutManager::EFsLmListSingleDycRowTextPane, thirdLineParentRect, thirdLineTextVariety);
       
  1454             CFsLayoutManager::TFsText prevTextInfo;
       
  1455             CFsLayoutManager::LayoutMetricsText(thirdLineParentRect,
       
  1456                     thirdLineTextMetrics, prevTextInfo, thirdLineTextVariety);
       
  1457 
       
  1458             firstLineTextIndex++;
       
  1459             tpPrevTextTl.SetTarget(TAlfRealPoint(prevTextInfo.iTextRect.iTl));
       
  1460             tpPrevTextBr.SetTarget(TAlfRealPoint(prevTextInfo.iTextRect.iBr));
       
  1461 
       
  1462             TInt prevPaneVisIndex =
       
  1463                       iLayout->FindVisual(iPreviewPaneTextVisual);
       
  1464             if ( prevPaneVisIndex != KErrNotFound )
       
  1465                 {
       
  1466                 tpPrevTextTl.SetStyle(EAlfTimedValueStyleSineWave);
       
  1467                 iLayout->SetAnchor(EAlfAnchorTopLeft,
       
  1468                     prevPaneVisIndex,
       
  1469                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1470                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1471                     tpPrevTextTl );
       
  1472                 tpPrevTextBr.SetStyle(EAlfTimedValueStyleSineWave);
       
  1473                 iLayout->SetAnchor(EAlfAnchorBottomRight,
       
  1474                     prevPaneVisIndex,
       
  1475                     EAlfAnchorOriginLeft,EAlfAnchorOriginTop,
       
  1476                     EAlfAnchorMetricAbsolute,EAlfAnchorMetricAbsolute,
       
  1477                     tpPrevTextBr );
       
  1478                 }
       
  1479             }
       
  1480 
       
  1481         }
       
  1482     iLayout->UpdateChildrenLayout();
       
  1483     // </cmail>
       
  1484     }
       
  1485 
       
  1486 // ---------------------------------------------------------------------------
       
  1487 // From class MFsTreeItemVisualizer.
       
  1488 // A call to this function means that the item is requested to draw itself
       
  1489 // within specified parent layout.
       
  1490 // ---------------------------------------------------------------------------
       
  1491 //
       
  1492 void CFsTreePlainTwoLineItemVisualizer::ShowL( CAlfLayout& aParentLayout,
       
  1493                                         const TUint aTimeout )
       
  1494     {
       
  1495     FUNC_LOG;
       
  1496     iParentLayout = &aParentLayout;
       
  1497     if (!iLayout)
       
  1498         {
       
  1499         iLayout = CAlfAnchorLayout::AddNewL(iOwnerControl, NULL);
       
  1500         iLayout->SetTactileFeedbackL( ETouchEventStylusDown, ETouchFeedbackBasic );
       
  1501         iLayout->EnableBrushesL();
       
  1502         iLayout->SetSize(TSize(iParentLayout->Size().IntTarget().AsSize().iWidth,0));
       
  1503         iLayout->SetClipping(ETrue);
       
  1504         if (!iIconVisual)
       
  1505             {
       
  1506             iIconVisual = CAlfImageVisual::AddNewL( iOwnerControl, iLayout );
       
  1507             iIconVisual->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1508             iIconVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1509             }
       
  1510 
       
  1511         if (!iViewportLayout)
       
  1512             {
       
  1513             iViewportLayout =
       
  1514                       CAlfViewportLayout::AddNewL(iOwnerControl, iLayout);
       
  1515             iViewportLayout->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1516             }
       
  1517 
       
  1518         if (!iTextVisual)
       
  1519             {
       
  1520             iTextVisual = CAlfTextVisual::AddNewL(iOwnerControl,
       
  1521                     iViewportLayout);
       
  1522             iTextVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1523             }
       
  1524 
       
  1525         if (!iSecViewport)
       
  1526             {
       
  1527             iSecViewport =
       
  1528                       CAlfViewportLayout::AddNewL(iOwnerControl, iLayout);
       
  1529             iSecViewport->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1530             }
       
  1531 
       
  1532         if (!iSecondaryTextVisual)
       
  1533             {
       
  1534             iSecondaryTextVisual = CAlfTextVisual::AddNewL(iOwnerControl,
       
  1535                     iSecViewport);
       
  1536             iSecondaryTextVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1537             }
       
  1538 
       
  1539         if (!iIconMarked)
       
  1540             {
       
  1541             iIconMarked = CAlfImageVisual::AddNewL( iOwnerControl, iLayout );
       
  1542             iIconMarked->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1543             iIconMarked->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1544             }
       
  1545 
       
  1546         if (!iIconMenu)
       
  1547             {
       
  1548             iIconMenu =
       
  1549                         CAlfImageVisual::AddNewL(iOwnerControl, iLayout);
       
  1550             iIconMenu->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1551             iIconMenu->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1552             }
       
  1553 
       
  1554         if (!iIconFlagVisual)
       
  1555             {
       
  1556             iIconFlagVisual =
       
  1557                           CAlfImageVisual::AddNewL(iOwnerControl, iLayout);
       
  1558             iIconFlagVisual->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1559             iIconFlagVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1560             }
       
  1561 
       
  1562          if ( !iDateTimeTextVisual )
       
  1563              {
       
  1564             iDateTimeTextVisual = CAlfTextVisual::AddNewL(iOwnerControl, iLayout);
       
  1565             iDateTimeTextVisual->SetStyle(EAlfTextStyleSmall);
       
  1566             iDateTimeTextVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1567             }
       
  1568          if ( !iPreviewPaneTextVisual )
       
  1569              {
       
  1570              iPreviewPaneTextVisual = CAlfTextVisual::AddNewL(iOwnerControl,
       
  1571                      iLayout);
       
  1572              iPreviewPaneTextVisual->SetAlign(EAlfAlignHLeft,EAlfAlignVCenter);
       
  1573              iPreviewPaneTextVisual->SetFlag( EAlfVisualFlagIgnorePointer );
       
  1574             }
       
  1575          iTextMarquee = new (ELeave) TFsMarqueeClet(iOwnerControl, *iViewportLayout, TFsMarqueeClet::EScrollFromRight, TFsMarqueeClet::EScrollForth);
       
  1576          iSecondaryTextMarquee = new (ELeave) TFsMarqueeClet(iOwnerControl, *iSecViewport, TFsMarqueeClet::EScrollFromRight, TFsMarqueeClet::EScrollForth);         
       
  1577          iParentLayout->Append(iLayout, 0);
       
  1578         }
       
  1579     else
       
  1580         {
       
  1581         //visuals are already created but not attached to the list layout
       
  1582         if (!iLayout->Layout())
       
  1583             {
       
  1584             aParentLayout.Append(iLayout, aTimeout);
       
  1585             }
       
  1586         }
       
  1587     }
       
  1588 
       
  1589 // ---------------------------------------------------------------------------
       
  1590 // A call to this function means that the item is requested to update its
       
  1591 // visual content.
       
  1592 // ---------------------------------------------------------------------------
       
  1593 //
       
  1594 void CFsTreePlainTwoLineItemVisualizer::UpdateL( const MFsTreeItemData& aData,
       
  1595                                           TBool aFocused,
       
  1596                                           const TUint aLevel,
       
  1597                                           CAlfTexture*& aMarkIcon,
       
  1598                                           CAlfTexture*& aMenuIcon,
       
  1599                                           const TUint aTimeout,
       
  1600                                           TBool aUpdateData)
       
  1601     {
       
  1602     FUNC_LOG;
       
  1603     TAlfTimedValue opacity;
       
  1604 
       
  1605     if (iLayout)
       
  1606         {
       
  1607         iSize.iWidth = iParentLayout->Size().Target().iX;
       
  1608         iExtendedSize.iWidth = iSize.iWidth;
       
  1609         iPreviewPaneEnabledSize.iWidth = iSize.iWidth;
       
  1610         
       
  1611         TSize layoutSize(iLayout->Size().Target().iX, iLayout->Size().Target().iY);
       
  1612         layoutSize.iWidth = iSize.iWidth;
       
  1613         iLayout->SetSize(layoutSize);
       
  1614 
       
  1615         if (aFocused)
       
  1616             {
       
  1617             if (IsFocusable())
       
  1618                 {
       
  1619                 iFlags |= KFsTreeListItemFocused;
       
  1620                 }
       
  1621             }
       
  1622         else
       
  1623             {
       
  1624             iFlags &= ~KFsTreeListItemFocused;
       
  1625             }
       
  1626 
       
  1627         if ( aData.Type() == KFsTreePlainTwoLineItemDataType )
       
  1628             {
       
  1629             const CFsTreePlainTwoLineItemData* data =
       
  1630                       static_cast<const CFsTreePlainTwoLineItemData*>(&aData);
       
  1631 
       
  1632             if( iIconMenu )
       
  1633                 {
       
  1634                 opacity.SetValueNow(0.0f);
       
  1635                 iIconMenu->SetOpacity(opacity);
       
  1636                 }
       
  1637                       
       
  1638             //update the ancors for current item settings
       
  1639             const TInt indent( iTextIndentation * ( aLevel - 1 ) );
       
  1640             UpdateLayout(data, indent);
       
  1641 
       
  1642             //set data to visuals
       
  1643 
       
  1644             //display main icon
       
  1645             if (data->IsIconSet())
       
  1646                 {
       
  1647                 iIconVisual->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1648                 iIconVisual->SetImage(TAlfImage(data->Icon()));
       
  1649                 }
       
  1650 
       
  1651             TRgb textColor;
       
  1652             if ( aFocused )
       
  1653                 {
       
  1654                 if (!iIsCustomTextFocusedColor)
       
  1655                     {//custom color not set, use color from skin - load it in case theme has changed
       
  1656                     iFocusedTextColor = FocusedStateTextSkinColor();
       
  1657                     }
       
  1658                 textColor = iFocusedTextColor;
       
  1659                 }
       
  1660             else
       
  1661                 {
       
  1662                 if (!iIsCustomTextNormalColor)
       
  1663                     {//custom color not set, use color from skin - load it in case theme has changed
       
  1664                     iNormalTextColor = NormalStateTextSkinColor( );
       
  1665                     }
       
  1666                 textColor = iNormalTextColor;
       
  1667                 }
       
  1668 
       
  1669             TInt styleId = ModifiedStyleIdL( );
       
  1670 
       
  1671             iOwnerControl.Env().CancelCustomCommands(this);
       
  1672 
       
  1673             if( iTextVisual && aUpdateData )
       
  1674                 {
       
  1675                 TAlfTimedPoint tp(0,0);
       
  1676                 tp.SetStyle(EAlfTimedValueStyleLinear);
       
  1677                 iTextVisual->SetPos(tp);
       
  1678                 iTextVisual->SetTextL(data->Data( ));
       
  1679 
       
  1680                 iTextVisual->EnableShadow(iFlags & KFsTreeListItemTextShadow);
       
  1681                 iTextVisual->SetColor( textColor );
       
  1682                 iTextVisual->SetTextStyle( styleId );
       
  1683 
       
  1684                 iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual);
       
  1685 
       
  1686                 TAlfAlignHorizontal currTextAlign( EAlfAlignHLocale );
       
  1687                 currTextAlign = CurrentTextAlignmentL( iTextAlign, &data->Data(), iTextVisual );
       
  1688                 iTextVisual->SetAlign( currTextAlign, EAlfAlignVCenter );
       
  1689 
       
  1690                 iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate);
       
  1691 
       
  1692                 if ( currTextAlign == EAlfAlignHRight )
       
  1693                     {
       
  1694                     iTextMarquee->SetScrollDirection( TFsMarqueeClet::EScrollFromLeft );
       
  1695                     }
       
  1696                 else
       
  1697                     {
       
  1698                     iTextMarquee->SetScrollDirection( TFsMarqueeClet::EScrollFromRight );
       
  1699                     }
       
  1700                 }
       
  1701 
       
  1702             if ( iSecondaryTextVisual && aUpdateData )
       
  1703                 {
       
  1704                 TAlfTimedPoint stp(0,0);
       
  1705                 stp.SetStyle(EAlfTimedValueStyleLinear);
       
  1706                 iSecondaryTextVisual->SetPos(stp);
       
  1707                 iSecondaryTextVisual->SetTextL(data->SecondaryData());
       
  1708 
       
  1709                 iSecondaryTextVisual->EnableShadow(iFlags & KFsTreeListItemTextShadow);
       
  1710                 iSecondaryTextVisual->SetColor( textColor );
       
  1711                 iSecondaryTextVisual->SetTextStyle( styleId );
       
  1712 
       
  1713                 iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual);
       
  1714 
       
  1715                 TAlfAlignHorizontal currSecTextAlign( EAlfAlignHLocale );
       
  1716                 currSecTextAlign = CurrentTextAlignmentL( iSecondaryTextAlign, &data->SecondaryData(), iSecondaryTextVisual );
       
  1717                 iSecondaryTextVisual->SetAlign(currSecTextAlign,EAlfAlignVCenter );
       
  1718 
       
  1719                 iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate);
       
  1720 
       
  1721                 if ( currSecTextAlign == EAlfAlignHRight )
       
  1722                     {
       
  1723                     iSecondaryTextMarquee->SetScrollDirection( TFsMarqueeClet::EScrollFromLeft );
       
  1724                     }
       
  1725                 else
       
  1726                     {
       
  1727                     iSecondaryTextMarquee->SetScrollDirection( TFsMarqueeClet::EScrollFromRight );
       
  1728                     }
       
  1729                 HighlightKeyWords(data->SecondaryData());
       
  1730                 }
       
  1731 
       
  1732 
       
  1733 
       
  1734             if (( IsExtended() || IsAlwaysExtended() ) && IsPreviewPaneOn() && aUpdateData )
       
  1735                 {
       
  1736                 opacity.SetTarget(1.0f, aTimeout);
       
  1737                 iPreviewPaneTextVisual->SetOpacity(opacity);
       
  1738                 iPreviewPaneTextVisual->SetTextL(data->PreviewPaneData());
       
  1739 
       
  1740                 iPreviewPaneTextVisual->EnableShadow(iFlags & KFsTreeListItemTextShadow);
       
  1741                 iPreviewPaneTextVisual->SetColor( textColor );
       
  1742                 iPreviewPaneTextVisual->SetTextStyle( styleId );
       
  1743 
       
  1744                 iPreviewPaneTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual);
       
  1745 
       
  1746                 TAlfAlignHorizontal currSecTextAlign( EAlfAlignHLocale );
       
  1747                 currSecTextAlign = CurrentTextAlignmentL( EAlfAlignHLocale, &data->PreviewPaneData(), iPreviewPaneTextVisual );
       
  1748                 iPreviewPaneTextVisual->SetAlign(currSecTextAlign,EAlfAlignVCenter );
       
  1749 
       
  1750                 iPreviewPaneTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate);
       
  1751                 }
       
  1752             else
       
  1753                 {
       
  1754                 opacity.SetTarget(0.0f, aTimeout);
       
  1755                 iPreviewPaneTextVisual->SetOpacity(opacity);
       
  1756                 }
       
  1757 
       
  1758             if ( iDateTimeTextVisual && aUpdateData )
       
  1759                 {
       
  1760                 iDateTimeTextVisual->SetTextL(data->DateTimeData());
       
  1761                 if (CFsLayoutManager::IsMirrored())
       
  1762                     {
       
  1763                     iDateTimeTextVisual->SetAlign(EAlfAlignHLeft,
       
  1764                                                   EAlfAlignVCenter );
       
  1765                     }
       
  1766                 else
       
  1767                     {
       
  1768                     iDateTimeTextVisual->SetAlign(EAlfAlignHRight,
       
  1769                                                   EAlfAlignVCenter );
       
  1770                     }
       
  1771                 iDateTimeTextVisual->SetWrapping(
       
  1772                                           CAlfTextVisual::ELineWrapTruncate);
       
  1773                 iDateTimeTextVisual->EnableShadow(
       
  1774                                           iFlags & KFsTreeListItemTextShadow);
       
  1775                 iDateTimeTextVisual->SetColor( textColor );
       
  1776                 iDateTimeTextVisual->SetTextStyle( styleId );
       
  1777                 }
       
  1778 
       
  1779             if ( IsMarked() && iIconMarked && aMarkIcon )
       
  1780                 {
       
  1781                 iIconMarked->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1782                 iIconMarked->SetImage( *aMarkIcon );
       
  1783                 }
       
  1784 
       
  1785             //menu icon - visible only when item is focused
       
  1786             if ((iFlags & KFsTreeListItemHasMenu) && (iFlags & KFsTreeListItemFocused))
       
  1787                 {
       
  1788                 opacity.SetTarget(1.0f,aTimeout);
       
  1789                 iIconMenu->SetOpacity(opacity);
       
  1790                 iIconMenu->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1791                 iIconMenu->SetImage( *aMenuIcon );
       
  1792                 }
       
  1793             else
       
  1794                 {
       
  1795                 opacity.SetTarget(0.0f,0);
       
  1796                 iIconMenu->SetOpacity(opacity);
       
  1797                 }
       
  1798 
       
  1799             if ( iIconFlagVisual )
       
  1800                 {
       
  1801                 if (data->IsFlagIconSet())
       
  1802                     {
       
  1803                     iIconFlagVisual->SetScaleMode( CAlfImageVisual::EScaleFit );
       
  1804                     iIconFlagVisual->SetImage(TAlfImage(data->FlagIcon()));
       
  1805                     }
       
  1806                 }
       
  1807 
       
  1808            iTextMarquee->StopScrolling();
       
  1809            iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate);
       
  1810 
       
  1811            iSecondaryTextMarquee->StopScrolling();
       
  1812            iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapTruncate);
       
  1813            }
       
  1814         }
       
  1815     }
       
  1816 
       
  1817 // ---------------------------------------------------------------------------
       
  1818 // From class MFsTreeItemVisualizer.
       
  1819 // A call to this function means that the item goes out of the visible items
       
  1820 // scope.
       
  1821 // ---------------------------------------------------------------------------
       
  1822 //
       
  1823 void CFsTreePlainTwoLineItemVisualizer::Hide( const TInt aTimeout )
       
  1824     {
       
  1825     FUNC_LOG;
       
  1826     if ( iLayout )
       
  1827         {
       
  1828         //if marquee command was sent
       
  1829         iSecondaryTextVisual->Env().CancelCustomCommands(this);
       
  1830 
       
  1831         delete iSecondaryTextMarquee;
       
  1832         iSecondaryTextMarquee = NULL;
       
  1833 
       
  1834         CFsTreePlainOneLineItemVisualizer::Hide(aTimeout);
       
  1835         iSecViewport = NULL;
       
  1836         iSecondaryTextVisual = NULL;
       
  1837         iIconFlagVisual = NULL;
       
  1838         iDateTimeTextVisual = NULL;
       
  1839         iPreviewPaneTextVisual = NULL;
       
  1840         }
       
  1841     }
       
  1842 
       
  1843 
       
  1844 // ---------------------------------------------------------------------------
       
  1845 //  From MFsTreeItemVisualizer.
       
  1846 //  Method to marquee the text when it's too long.
       
  1847 // ---------------------------------------------------------------------------
       
  1848 //
       
  1849 void CFsTreePlainTwoLineItemVisualizer::MarqueeL(const TFsTextMarqueeType aMarqueeType,
       
  1850                                                  const TUint aMarqueeSpeed,
       
  1851                                                  const TInt aMarqueeStartDelay,
       
  1852                                                  const TInt aMarqueeCycleStartDelay,
       
  1853                                                  const TInt aMarqueeRepetitions)
       
  1854     {
       
  1855     FUNC_LOG;
       
  1856     TInt marqueeSize(0), textWidth(0), marqueIdx(KErrNotFound);
       
  1857 
       
  1858     if ( aMarqueeType == EFsTextMarqueeNone )
       
  1859         {
       
  1860         return;
       
  1861         }
       
  1862 
       
  1863     iTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual);
       
  1864 
       
  1865     textWidth = iTextVisual->SubstringExtents(0, iTextVisual->Text().Length()).Width();
       
  1866     marqueeSize = textWidth - iViewportLayout->Size().iX.Target();
       
  1867 
       
  1868     iTextVisual->Env().CancelCustomCommands(this, aMarqueeType);
       
  1869 
       
  1870     if (iTextVisual && (marqueeSize>0))
       
  1871         {
       
  1872         TSize size( textWidth, iViewportLayout->Size().iY.Target() );
       
  1873         if ( aMarqueeType == EFsTextMarqueeForth )
       
  1874             {
       
  1875             iTextMarquee->SetScrollType( TFsMarqueeClet::EScrollForth );
       
  1876             }
       
  1877         else if ( aMarqueeType == EFsTextMarqueeForthBack )
       
  1878             {
       
  1879             iTextMarquee->SetScrollType( TFsMarqueeClet::EScrollBounce );
       
  1880             }
       
  1881         else if ( aMarqueeType == EFsTextMarqueeLoop )
       
  1882             {
       
  1883             iTextMarquee->SetScrollType( TFsMarqueeClet::EScrollWrap );
       
  1884             //duplicate text
       
  1885             TBufC <1> separator(_L(" "));
       
  1886             HBufC* textHeap = HBufC::NewLC( (iTextVisual->Text().Length()+1)*2+1);
       
  1887             TPtr doubleString(textHeap->Des());
       
  1888             doubleString = iTextVisual->Text();
       
  1889             doubleString.Append(_L(" "));
       
  1890             doubleString.Append(iTextVisual->Text());
       
  1891             doubleString.Append(_L(" "));
       
  1892             iTextVisual->SetTextL( doubleString );
       
  1893             CleanupStack::PopAndDestroy(textHeap);
       
  1894             size.iWidth = iTextVisual->SubstringExtents(0, iTextVisual->Text().Length()).Width();
       
  1895             }
       
  1896 
       
  1897         iTextMarquee->SetScrollRepetitions( aMarqueeRepetitions );
       
  1898         TInt time(0);
       
  1899         if ( aMarqueeType == EFsTextMarqueeLoop )
       
  1900             {
       
  1901             time = textWidth * 1000 / aMarqueeSpeed;
       
  1902             }
       
  1903         else
       
  1904             {
       
  1905             time = marqueeSize * 1000 / aMarqueeSpeed;
       
  1906             }
       
  1907         iTextMarquee->SetScrollSpeed( time );
       
  1908         iTextMarquee->SetScrollableArea( size );
       
  1909         iTextMarquee->SetScrollCycleDelay( aMarqueeCycleStartDelay );
       
  1910 
       
  1911         marqueIdx = 0;
       
  1912         TAlfCustomEventCommand cmd( aMarqueeType, this, marqueIdx );
       
  1913         iTextVisual->Env().Send(cmd, aMarqueeStartDelay );
       
  1914         }
       
  1915 
       
  1916     iSecondaryTextVisual->SetWrapping(CAlfTextVisual::ELineWrapManual);
       
  1917 
       
  1918     textWidth = iSecondaryTextVisual->SubstringExtents(0, iSecondaryTextVisual->Text().Length()).Width();
       
  1919     marqueeSize = textWidth - iSecViewport->Size().iX.Target();
       
  1920 
       
  1921     if (iSecondaryTextVisual && (marqueeSize>0))
       
  1922         {
       
  1923         TSize size( textWidth, iSecViewport->Size().iY.Target() );
       
  1924         if ( aMarqueeType == EFsTextMarqueeForth )
       
  1925             {
       
  1926             iSecondaryTextMarquee->SetScrollType( TFsMarqueeClet::EScrollForth );
       
  1927             }
       
  1928         else if ( aMarqueeType == EFsTextMarqueeForthBack )
       
  1929             {
       
  1930             iSecondaryTextMarquee->SetScrollType( TFsMarqueeClet::EScrollBounce );
       
  1931             }
       
  1932         else if ( aMarqueeType == EFsTextMarqueeLoop )
       
  1933             {
       
  1934             iSecondaryTextMarquee->SetScrollType( TFsMarqueeClet::EScrollWrap );
       
  1935             //duplicate text
       
  1936             TBufC <1> separator(_L(" "));
       
  1937             HBufC* textHeap = HBufC::NewLC( (iSecondaryTextVisual->Text().Length()+1)*2+1);
       
  1938             TPtr doubleString(textHeap->Des());
       
  1939             doubleString = iSecondaryTextVisual->Text();
       
  1940             doubleString.Append(_L(" "));
       
  1941             doubleString.Append(iSecondaryTextVisual->Text());
       
  1942             doubleString.Append(_L(" "));
       
  1943             iSecondaryTextVisual->SetTextL( doubleString );
       
  1944             CleanupStack::PopAndDestroy(textHeap);
       
  1945             size.iWidth = iSecondaryTextVisual->SubstringExtents(0, iSecondaryTextVisual->Text().Length()).Width();
       
  1946             }
       
  1947 
       
  1948         iSecondaryTextMarquee->SetScrollRepetitions( aMarqueeRepetitions );
       
  1949         TInt time(0);
       
  1950         if ( aMarqueeType == EFsTextMarqueeLoop )
       
  1951             {
       
  1952             time = textWidth * 1000 / aMarqueeSpeed;
       
  1953             }
       
  1954         else
       
  1955             {
       
  1956             time = marqueeSize * 1000 / aMarqueeSpeed;
       
  1957             }
       
  1958         iSecondaryTextMarquee->SetScrollSpeed( time );
       
  1959         iSecondaryTextMarquee->SetScrollableArea( size );
       
  1960         iSecondaryTextMarquee->SetScrollCycleDelay( aMarqueeCycleStartDelay );
       
  1961 
       
  1962         marqueIdx = 1;
       
  1963         TAlfCustomEventCommand cmd( aMarqueeType, this, marqueIdx );
       
  1964         iTextVisual->Env().Send(cmd, aMarqueeStartDelay );
       
  1965         }
       
  1966     }
       
  1967 
       
  1968 
       
  1969 // ---------------------------------------------------------------------------
       
  1970 //  Handles custom Alf event. Used with text marquee.
       
  1971 // ---------------------------------------------------------------------------
       
  1972 //
       
  1973 TBool CFsTreePlainTwoLineItemVisualizer::OfferEventL(const TAlfEvent& aEvent)
       
  1974     {
       
  1975     FUNC_LOG;
       
  1976     TBool ret( EFalse );
       
  1977     if ( aEvent.IsCustomEvent() )
       
  1978         {
       
  1979         TInt param = aEvent.CustomParameter();
       
  1980         if ( param == EFsTextMarqueeForth ||
       
  1981              param == EFsTextMarqueeForthBack ||
       
  1982              param == EFsTextMarqueeLoop )
       
  1983             {
       
  1984             TInt idx(KErrNotFound);
       
  1985             idx = aEvent.CustomEventData();
       
  1986             ret = ETrue;
       
  1987             switch(idx)
       
  1988                 {
       
  1989                 case 0:
       
  1990                     {
       
  1991                     iTextMarquee->StartScrolling( );
       
  1992                     break;
       
  1993                     }
       
  1994                 case 1:
       
  1995                     {
       
  1996                     iSecondaryTextMarquee->StartScrolling( );
       
  1997                     break;
       
  1998                     }
       
  1999                 }
       
  2000             }
       
  2001         }
       
  2002     return ret;
       
  2003     }
       
  2004 
       
  2005 
       
  2006 // ---------------------------------------------------------------------------
       
  2007 //  C++ constructor.
       
  2008 // ---------------------------------------------------------------------------
       
  2009 //
       
  2010 CFsTreePlainTwoLineItemVisualizer::CFsTreePlainTwoLineItemVisualizer(
       
  2011     CAlfControl& aOwnerControl )
       
  2012     : CFsTreePlainOneLineItemVisualizer( aOwnerControl ),
       
  2013       iSecondaryTextVisual( NULL ),
       
  2014       iSecondaryTextAlign( EAlfAlignHLocale ),
       
  2015       iPreviewPaneOn( EFalse ),
       
  2016       iShowFlagIcon ( EFalse ),
       
  2017       iIconFlagVisual( NULL ),
       
  2018       iDateTimeTextVisual ( NULL ),
       
  2019       iPreviewPaneTextVisual ( NULL ),
       
  2020       iIsTimeVisibleWhenNotFocused ( ETrue )
       
  2021     {
       
  2022     FUNC_LOG;
       
  2023 
       
  2024     }
       
  2025 
       
  2026 // ---------------------------------------------------------------------------
       
  2027 //  Second phase constructor.
       
  2028 // ---------------------------------------------------------------------------
       
  2029 //
       
  2030 void CFsTreePlainTwoLineItemVisualizer::ConstructL( )
       
  2031     {
       
  2032     FUNC_LOG;
       
  2033     CFsTreePlainOneLineItemVisualizer::ConstructL();
       
  2034     }
       
  2035 
       
  2036 void CFsTreePlainTwoLineItemVisualizer::SetKeyWordsToHighlight(const RPointerArray<TDesC>& aKeyWords)
       
  2037     {
       
  2038     if ( iKeyWords.Count() > 0 )
       
  2039         {
       
  2040         iKeyWords.ResetAndDestroy();
       
  2041         }
       
  2042     for ( TInt i=0; i< aKeyWords.Count(); i++)
       
  2043         {
       
  2044         iKeyWords.Append(aKeyWords[i]);
       
  2045         }
       
  2046     }
       
  2047 
       
  2048 void CFsTreePlainTwoLineItemVisualizer::HighlightKeyWords(TDesC& aText)
       
  2049     {
       
  2050     //iBackgroundColor = FocusedStateBackGroundSkinColor();
       
  2051     iBackgroundColor = NormalStateTextSkinColor(); //temp fix for build break
       
  2052       if ( iKeyWords.Count() > 0 )
       
  2053         {
       
  2054         TInt pos = aText.FindC(*iKeyWords[0]);
       
  2055         iSecondaryTextVisual->SetHighlightRange(pos, pos+iKeyWords[0]->Length(), iBackgroundColor, iFocusedTextColor);
       
  2056         }
       
  2057     /*
       
  2058 	// Code to Highlight Multiple Key words.
       
  2059     for ( TInt i=0; i <iKeyWords.Count(); i++ )
       
  2060         {
       
  2061         TInt pos = 0 ;
       
  2062         while(pos != KErrNotFound)
       
  2063             {
       
  2064             TPtrC subStr = aText.Mid(pos);
       
  2065             TInt val = subStr.FindC(*iKeyWords[i]); 
       
  2066             if ( val != KErrNotFound )
       
  2067                 {
       
  2068                 pos += val;
       
  2069                 if( (pos + iKeyWords[i]->Length()) < aText.Length())
       
  2070                     {
       
  2071                     iSecondaryTextVisual->SetHighlightRange(pos,pos+iKeyWords[i]->Length(), color, Textcolor);
       
  2072                     pos += iKeyWords[i]->Length();
       
  2073                     }
       
  2074                 }
       
  2075             else
       
  2076                 {
       
  2077                 pos = val;
       
  2078                 }
       
  2079             }
       
  2080         }
       
  2081         */
       
  2082     }