uifw/AvKon/aknhlist/src/akntreelist.cpp
branchRCL_3
changeset 56 d48ab3b357f1
parent 55 aecbbf00d063
child 64 85902f042028
--- a/uifw/AvKon/aknhlist/src/akntreelist.cpp	Tue Aug 31 15:28:30 2010 +0300
+++ b/uifw/AvKon/aknhlist/src/akntreelist.cpp	Wed Sep 01 12:16:19 2010 +0100
@@ -80,6 +80,11 @@
         View().EnableMarking( aFlags & KAknTreeListMarkable );
         }
 
+    if ( diff & KAknTreeListSmiley && !AknLayoutUtils::LayoutMirrored() )
+        {
+        Tree().InitSmiley();
+        }
+
     iFlags = aFlags;
     }
 
@@ -391,6 +396,34 @@
         {
         Window().Invalidate( View().Rect() );
         }
+    
+    // Update the marking of upper level node
+    CAknTreeItem* item = Tree().Item( aItem );
+    if ( item && item->Parent() && item->Parent()->IsNode() )
+        {
+        CAknTreeNode* node = item->Parent()->Node();
+        if (node)
+            {
+            TBool wasMarked = node->IsMarked();
+            
+            if (node->IsMarkable())
+                {
+                if (node->AllChildrenMarked())
+                    {
+                    node->SetMarked(ETrue);
+                    }            
+                else
+                    {
+                    node->SetMarked(EFalse);
+                    }
+                }
+            
+            if (wasMarked != node->IsMarked())
+                {
+                Window().Invalidate(View().Rect());
+                }
+            }
+        }
     }
 
 
@@ -631,6 +664,17 @@
 
 
 // ---------------------------------------------------------------------------
+// CAknTreeList::SetMarkingModeObserver
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAknTreeList::SetMarkingModeObserver( 
+        MAknMarkingModeObserver* aObserver )
+    {
+    iMarkingModeObserver = aObserver;
+    }
+
+
+// ---------------------------------------------------------------------------
 // Handles key events by mediating them to the view.
 // ---------------------------------------------------------------------------
 //
@@ -891,6 +935,16 @@
 
 
 // ---------------------------------------------------------------------------
+// Marking mode observer
+// ---------------------------------------------------------------------------
+//
+MAknMarkingModeObserver* CAknTreeList::MarkingModeObserver()
+    {
+    return iMarkingModeObserver;
+    }
+
+
+// ---------------------------------------------------------------------------
 // Does nothing, the draw request is mediated to the view through component
 // control structure.
 // ---------------------------------------------------------------------------