emailuis/uicomponents/src/fstreevisualizerbase.cpp
branchRCL_3
changeset 73 c8382f7b54ef
parent 70 968773a0b6ef
child 80 726fba06891a
--- a/emailuis/uicomponents/src/fstreevisualizerbase.cpp	Tue Sep 14 20:48:24 2010 +0300
+++ b/emailuis/uicomponents/src/fstreevisualizerbase.cpp	Wed Sep 15 11:52:37 2010 +0300
@@ -24,7 +24,6 @@
 #include <centralrepository.h>
 
 //////TOOLKIT INCLUDES
-// <cmail> SF
 #include <alf/alfstatic.h>
 #include <alf/alfownership.h>
 #include <alf/alfevent.h>
@@ -50,7 +49,6 @@
 //visuals
 #include <alf/alfvisual.h>
 #include <alf/alfimagevisual.h>
-// </cmail>
 
 
 //////PROJECT INCLUDES
@@ -1064,20 +1062,40 @@
 //  Sets icon for a mark sign.
 // ---------------------------------------------------------------------------
 //
-void CFsTreeVisualizerBase::SetMarkIcon(CAlfTexture& aMarkIcon)
+void CFsTreeVisualizerBase::SetMarkOnIcon(CAlfTexture& aMarkOnIcon)
     {
     FUNC_LOG;
-    iMarkIcon = &aMarkIcon;
+    iMarkOnIcon = &aMarkOnIcon;
+    }
+
+// ---------------------------------------------------------------------------
+//  Sets icon for a unmark sign.
+// ---------------------------------------------------------------------------
+//
+void CFsTreeVisualizerBase::SetMarkOffIcon(CAlfTexture& aMarkOffIcon)
+    {
+    FUNC_LOG;
+    iMarkOffIcon = &aMarkOffIcon;
     }
 
 // ---------------------------------------------------------------------------
 //  Returns icon used to mark items.
 // ---------------------------------------------------------------------------
 //
-CAlfTexture* CFsTreeVisualizerBase::MarkIcon()
+CAlfTexture* CFsTreeVisualizerBase::MarkOnIcon()
     {
     FUNC_LOG;
-    return iMarkIcon;
+    return iMarkOnIcon;
+    }
+
+// ---------------------------------------------------------------------------
+//  Returns icon used to unmark items.
+// ---------------------------------------------------------------------------
+//
+CAlfTexture* CFsTreeVisualizerBase::MarkOffIcon()
+    {
+    FUNC_LOG;
+    return iMarkOffIcon;
     }
 
 // ---------------------------------------------------------------------------
@@ -1109,7 +1127,7 @@
         data = &(iTreeData->ItemData(aItemId));
 
         vis->UpdateL(*data, IsItemFocused(aItemId) && IsFocusShown(),
-                iTreeData->Level(aItemId), iMarkIcon, iMenuIcon);
+                iTreeData->Level(aItemId), iMarkOnIcon, iMarkOffIcon, iMenuIcon);
         }
     }
 
@@ -1269,7 +1287,8 @@
                             MakeSelectorVisibleL(EFalse);
                             visualizer->UpdateL(*data, EFalse,
                                     iTreeData->Level(iFocusedItem),
-                                    iMarkIcon, iMenuIcon, iCurrentScrollSpeed);
+                                    iMarkOnIcon, iMarkOffIcon, 
+                                    iMenuIcon, iCurrentScrollSpeed);
                             }
                         }
                     }
@@ -1280,6 +1299,57 @@
     }
 
 // ---------------------------------------------------------------------------
+//  The functions sets wether all item in the list should be always in
+//  extended state or in normal state.
+// ---------------------------------------------------------------------------
+//
+void CFsTreeVisualizerBase::SetMarkingModeL( TBool aMarkingMode )
+    {
+    FUNC_LOG;
+    // Do not change this to: IsMarkingMode() != aAlwaysExtended, because
+    // it will not work. TBool is defined as TInt and thus this comparison
+    // comes out as TInt != TInt, which always evaluates true in this case.
+    if ( ( IsMarkingMode() && !aMarkingMode ) || 
+         ( !IsMarkingMode() && aMarkingMode ) )
+        {
+        iFlags.Assign(EMarkingMode, aMarkingMode);
+        TFsTreeIterator treeIter(
+                iTreeData->Iterator(KFsTreeRootID, KFsTreeRootID));
+        while (treeIter.HasNext())
+            {
+            TFsTreeItemId itemId(treeIter.Next());
+            if (itemId != KFsTreeNoneID && !iTreeData->IsNode(itemId))
+                {
+                MFsTreeItemVisualizer* itemviz(iTreeData->ItemVisualizer(itemId));
+                ApplyListSpecificValuesToItem(itemviz);
+                }
+            }
+            const TBool isUpdating(iWorld.IsUpdating());
+        if (!isUpdating)
+            {
+            iWorld.BeginUpdate();
+            }
+        iWorld.RemoveAllL();
+        treeIter = iTreeData->Iterator(KFsTreeRootID, KFsTreeRootID,
+                KFsTreeIteratorSkipCollapsedFlag);
+        while (treeIter.HasNext())
+            {
+            TFsTreeItemId itemId(treeIter.Next());
+            if (itemId != KFsTreeNoneID)
+                {
+                MFsTreeItemVisualizer* itemviz(iTreeData->ItemVisualizer(itemId));
+                iWorld.AppendL(itemId, itemviz->Size());
+                }
+            }
+        iViewPort.ClearCache();
+        if (!isUpdating)
+            {
+            iWorld.EndUpdateL();
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // The function sets some properties of the selector like bitmap, type
 // of movement.
 // ---------------------------------------------------------------------------
@@ -1710,7 +1780,7 @@
         if ( visualizer )
             {
             visualizer->UpdateL( iTreeData->ItemData( iFocusedItem ), EFalse,
-            		iTreeData->Level( iFocusedItem ), iMarkIcon, iMenuIcon, 0 );
+            		iTreeData->Level( iFocusedItem ), iMarkOnIcon, iMarkOffIcon, iMenuIcon, 0 );
             }
 
         iFocusedItem = aItemId;
@@ -1721,7 +1791,8 @@
     if ( visualizer )
         {
         visualizer->UpdateL( iTreeData->ItemData( iFocusedItem ), IsFocusShown(),
-                iTreeData->Level( iFocusedItem ), iMarkIcon, iMenuIcon, 0 );
+                             iTreeData->Level( iFocusedItem ), iMarkOnIcon, 
+                             iMarkOffIcon, iMenuIcon, 0 );
         }
 
     if ( iFocusedItem != KFsTreeNoneID )
@@ -1770,7 +1841,6 @@
 // Sets an item as first visible one in the list.
 // ---------------------------------------------------------------------------
 //
-// <cmail>
 void CFsTreeVisualizerBase::SetFirstVisibleItemL(const TFsTreeItemId /*aItemId*/)
     {
     FUNC_LOG;
@@ -1786,9 +1856,6 @@
     TFsTreeItemId retId = KFsTreeNoneID;
     if (iVisibleItems.Count())
         {
-        // <cmail>
-        //        TRAP_IGNORE( ClearVisibleItemsListL(EFalse) );
-        // </cmail>
         retId = iVisibleItems[0];
         }
     else
@@ -1822,7 +1889,6 @@
 // Displays the list.
 // ---------------------------------------------------------------------------
 //
-// <cmail>
 void CFsTreeVisualizerBase::ShowListL(const TBool aFadeIn,
         const TBool aSlideIn)
     {
@@ -1831,7 +1897,8 @@
     if (iTreeData->Count() == 0)
         {
         iRootVisualizer->ShowL(*iRootLayout);
-        iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkIcon, iMenuIcon);
+        iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkOnIcon, 
+                                  iMarkOffIcon, iMenuIcon);
         }
     else
         {
@@ -1846,7 +1913,7 @@
 			if ( visualizer )
 				{
 	        	visualizer->UpdateL(iTreeData->ItemData(itemId), itemFocused,
-	                iTreeData->Level(itemId), iMarkIcon, iMenuIcon,
+	                iTreeData->Level(itemId), iMarkOnIcon, iMarkOffIcon, iMenuIcon,
 	                0);
 				}
             }
@@ -1923,7 +1990,6 @@
 
     UpdateScrollBarL();
     }
-// </cmail>
 
 // ---------------------------------------------------------------------------
 // The function assures that the list view is correct.
@@ -2526,7 +2592,7 @@
             vis->UpdateL(iTreeData->ItemData(aItemId),
                     IsItemFocused(aItemId) && IsFocusShown(),
                     iTreeData->Level(aItemId),
-                    iMarkIcon, iMenuIcon, 0);
+                    iMarkOnIcon, iMarkOffIcon, iMenuIcon, 0);
             }
         }
     }
@@ -2595,6 +2661,16 @@
     }
 
 // ---------------------------------------------------------------------------
+//  The function returns if marking mode is on or off
+// ---------------------------------------------------------------------------
+//
+TBool CFsTreeVisualizerBase::IsMarkingMode()
+    {
+    FUNC_LOG;
+    return iFlags.IsSet(EMarkingMode);
+    }
+
+// ---------------------------------------------------------------------------
 // Set the background texture, clears the background color.
 // ---------------------------------------------------------------------------
 //
@@ -2730,9 +2806,7 @@
             iWatermark
                     = CFsWatermark::NewL(*iOwnerControl, *iWatermarkLayout);
             }
-        // <cmail>
         iWatermark->SetWatermarkTextureL(*aTexture);
-        // </cmail>
         }
     else
         {
@@ -2844,8 +2918,8 @@
             if (!iWorld.IsUpdating())
                 {
                 iRootVisualizer->ShowL(*iRootLayout);
-                iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkIcon,
-                        iMenuIcon);
+                iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkOnIcon,
+                        iMarkOffIcon, iMenuIcon);
                 }
             iVisibleItems.Reset();
             iWorld.RemoveAllL();
@@ -2867,7 +2941,7 @@
                 {
                 visualizer->UpdateL(iTreeData->ItemData(itemId),
                         IsItemFocused(itemId), iTreeData->Level(itemId),
-                        iMarkIcon, iMenuIcon, 0);
+                        iMarkOnIcon, iMarkOffIcon, iMenuIcon, 0);
                 }
             }
             break;
@@ -2927,7 +3001,8 @@
     if (iTreeData->Count() == 0)
         {
         iRootVisualizer->ShowL(*iRootLayout);
-        iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkIcon, iMenuIcon);
+        iRootVisualizer->UpdateL(*iRootData, EFalse, 0, iMarkOnIcon, 
+                iMarkOffIcon, iMenuIcon);
         }
     else
         {
@@ -3263,20 +3338,16 @@
 
     if (iVisualizationState == EFsTreeVisible && iVisualizerObserver)
         {
-            // <cmail> Touch
-            TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
+        TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
                             MFsTreeVisualizerObserver::EFsTreeListVisualizerShown,
                             KFsTreeNoneID ));
-        // </cmail>
         }
 
     if (iVisualizationState == EFsTreeHidden && iVisualizerObserver)
         {
-            // <cmail> Touch
-            TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
+        TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
                             MFsTreeVisualizerObserver::EFsTreeListVisualizerHidden,
                             KFsTreeNoneID ));
-        // </cmail>
         }
     }
 
@@ -3325,8 +3396,7 @@
 
     if (iVisualizationState == EFsTreeVisible && iVisualizerObserver)
         {
-            // <cmail> Touch
-            TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
+        TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
                             MFsTreeVisualizerObserver::EFsTreeListVisualizerShown,
                             KFsTreeNoneID ));
 
@@ -3334,10 +3404,9 @@
 
     if (iVisualizationState == EFsTreeHidden && iVisualizerObserver)
         {
-            TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
+        TRAP_IGNORE(iVisualizerObserver->TreeVisualizerEventL(
                             MFsTreeVisualizerObserver::EFsTreeListVisualizerHidden,
                             KFsTreeNoneID ));
-        // </cmail>
         }
     }
 
@@ -3793,7 +3862,8 @@
                 {
                 visualizer->UpdateL(iTreeData->ItemData(itemId),
 					IsItemFocused(itemId) && IsFocusShown(),
-                    iTreeData->Level(itemId), iMarkIcon, iMenuIcon, 0, EFalse);
+                    iTreeData->Level(itemId), iMarkOnIcon, iMarkOffIcon,
+                    iMenuIcon, 0, EFalse);
                 }
             }
         UpdateSelectorVisualL();
@@ -3863,9 +3933,6 @@
         border->SetLayer(EAlfBrushLayerBackground);
 
         border->SetBorders(-8, -8, -8, -8);
-        //<cmail>
-        // layout values needed here (not: only used from FS action menu)
-        //</cmail>
         iBorderLayout->SetPadding(TPoint(5, 5));
 
         if (iBorderLayout->Brushes()->Count() > 0)
@@ -4547,6 +4614,8 @@
     FUNC_LOG;
     //list can have all items in extended or in a normal state
     aItemVis->SetAlwaysExtended(IsItemsAlwaysExtended());
+    
+    aItemVis->SetMarkingMode(IsMarkingMode());
 
     //global indentation in pixels for a list component
     aItemVis->SetIndentation(iLevelIndentation);
@@ -4647,8 +4716,6 @@
     return isFocused;
     }
 
-// <cmail> "Base class modifications for using touch"
-
 // ---------------------------------------------------------------------------
 //  C++ constructor.
 // ---------------------------------------------------------------------------
@@ -4694,7 +4761,6 @@
     iFlags.Assign( EPopupMode, aPopUpMode );
     iFlags.Set( EExpandCollapseOnLongTap );
     }
-// </cmail>
 
 // ---------------------------------------------------------------------------
 //  Second phase constructor.
@@ -4953,8 +5019,8 @@
     											itemId);
     			visualizer->UpdateL(iTreeData->ItemData(itemId),
     							IsItemFocused(itemId) && IsFocusShown(),
-    							iTreeData->Level(itemId), iMarkIcon, iMenuIcon,
-    							0);
+    							iTreeData->Level(itemId), iMarkOnIcon, 
+    							iMarkOffIcon, iMenuIcon, 0);
     			}
     		}
     	CleanupStack::PopAndDestroy();
@@ -5010,7 +5076,7 @@
             visualizerLayout.SetSize(tpItemSize);
         	visualizer->UpdateL(iTreeData->ItemData(itemId),
                 IsItemFocused(itemId) && IsFocusShown(),
-                iTreeData->Level(itemId), iMarkIcon, iMenuIcon,
+                iTreeData->Level(itemId), iMarkOnIcon, iMarkOffIcon, iMenuIcon,
                 0);
             visualizerLayout.PropertySetIntegerL(KPropertyItemId(), itemId);
             visualizerLayout.Brushes()->AppendL(iBorderBrush,
@@ -5467,5 +5533,3 @@
     return ( iTouchPressed || iFocusVisible ) && iFlags.IsClear( EListPanning );
     }
 
-
-// </cmail>