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