photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp
branchRCL_3
changeset 14 2dac0fdba72b
parent 13 bcb43dc84c44
child 15 191387a8b767
--- a/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Wed Mar 31 21:31:03 2010 +0300
+++ b/photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp	Wed Apr 14 15:57:24 2010 +0300
@@ -23,6 +23,7 @@
 #include <akntoolbar.h>                     // For Toolbar
 #include <glxcommandhandlers.hrh>           // For Command ids
 #include <glxtracer.h>                         // For Logs
+#include <glxlog.h>                         // For Logs
 #include <mglxmedialist.h>
 
 #include <glxnavigationalstate.h>
@@ -63,8 +64,6 @@
 
     iToolbar = aToolbar;
     iAttributeAvailable = EFalse;
-    iToolbar->SetDimmed(ETrue);
-    iToolbar->DrawNow();
     aList.AddMediaListObserverL ( this );
     }
 
@@ -116,8 +115,7 @@
     
     if( aList->Count() <= 0 )
         {
-        iToolbar->SetDimmed(ETrue);
-        iToolbar->DrawNow();
+         SetToolbarItemsDimmed(ETrue);
         }
     }
 
@@ -153,40 +151,15 @@
 // HandleFocusChangedL
 //----------------------------------------------------------------------------
 //
-void CGlxToolbarController::HandleFocusChangedL(NGlxListDefs::TFocusChangeType /*aType*/, 
-        TInt aNewIndex, TInt /*aOldIndex*/, 
-        MGlxMediaList* aList)
+void CGlxToolbarController::HandleFocusChangedL(
+        NGlxListDefs::TFocusChangeType /*aType*/, TInt /*aNewIndex*/, 
+        TInt /*aOldIndex*/, MGlxMediaList* aList)
     {  
     TRACER("CGlxToolbarController::HandleFocusChangedL");
-    
-    // If new index is not equal to -1 (i.e., if there are some items present), 
-    // then check the media item
-    if( (aNewIndex == aList->FocusIndex()) && (KErrNotFound != aNewIndex) )
+    if (aList->Count() <= 0)
         {
-        //Get the current media item from medialist
-        const TGlxMedia& mediaItem = aList->Item(aList->FocusIndex());
-        //Check whether media item is a system item, for example Favourites album
-        TBool isSystemItem = EFalse;
-        mediaItem.GetSystemItem(isSystemItem);
-        if( mediaItem.IsStatic() )
-            {
-            iToolbar->SetDimmed(ETrue);  
-            }
-        else if( iToolbar->IsDimmed() )
-            {
-            iToolbar->SetDimmed(EFalse);
-            }
-        if( isSystemItem )
-             {
-             iToolbar->SetItemDimmed( EGlxCmdRename, ETrue, ETrue );
-             }
-        else
-             {
-             iToolbar->SetItemDimmed( EGlxCmdRename, EFalse, ETrue );   
-            }
+        SetToolbarItemsDimmed(ETrue);
         }
-    //DrawNow must be called since SetDimmed does not redraw the toolbar
-    iToolbar->DrawNow();     
     }
 
 //----------------------------------------------------------------------------
@@ -232,16 +205,17 @@
 //
 void CGlxToolbarController::SetStatusOnViewActivationL( MGlxMediaList* aList )
      {
-     	TRACER("CGlxToolbarController::SetStatusOnViewActivationL");
-     	
-     // When going back from fullscreen to grid, when the attributes are already 
-     // available in the cache, there is no HandleAttributeAvailable callback. Hence,
-     // checking for medialist count.
-     if( !iAttributeAvailable && (aList->Count(NGlxListDefs::ECountNonStatic) > 0))
-         {
-         SetStatusL(aList);
-         }    
-     }
+    TRACER("CGlxToolbarController::SetStatusOnViewActivationL");
+    GLX_LOG_INFO1("CGlxToolbarController::SetStatusOnViewActivationL(%d)",
+            aList->Count());
+    // When going back from fullscreen to grid, when the attributes are already 
+    // available in the cache, there is no HandleAttributeAvailable callback. Hence,
+    // checking for medialist count.
+    if (!iAttributeAvailable)
+        {
+        SetStatusL(aList);
+        }
+    }
 
 //----------------------------------------------------------------------------
 //SetStatusL
@@ -249,36 +223,25 @@
 //
 void CGlxToolbarController::SetStatusL(MGlxMediaList* aList)
 	{
-	TRACER("CGlxToolbarController::SetStatusL");
-	if(KErrNotFound != aList->FocusIndex())
-		{
-		//Get the current media item from medialist
-		const TGlxMedia& mediaItem = aList->Item(aList->FocusIndex());      
-
-		//Check whether media item is a system item, for example Favourites album
-		TBool isSystemItem = EFalse;    
-		mediaItem.GetSystemItem(isSystemItem);
+    TRACER("CGlxToolbarController::SetStatusL");
 
-		if(!mediaItem.IsStatic() && iToolbar->IsDimmed())
-			{
-			//Activate (Undim) the toolbar if item in focus is not static
-			iToolbar->SetDimmed(EFalse);            
-			}    
-
-
-		if( isSystemItem )
-			{
-			iToolbar->SetItemDimmed( EGlxCmdRename, ETrue, ETrue );
-			}
-		else
-			{
-			iToolbar->SetItemDimmed( EGlxCmdRename, EFalse, ETrue );
-			}    
-		}    
-	
-	//DrawNow must be called since SetDimmed does not redraw the toolbar
-	iToolbar->DrawNow();
-	}
+    GLX_LOG_INFO1("CGlxToolbarController::SetStatusL(%d)", aList->Count());
+    if (aList->Count() <= 0)
+        {
+        SetToolbarItemsDimmed(ETrue);
+        }
+    else if (KErrNotFound != aList->FocusIndex())
+        {
+        CGlxNavigationalState* navigationalState =
+                CGlxNavigationalState::InstanceL();
+        CleanupClosePushL(*navigationalState);
+        if (navigationalState->ViewingMode() == NGlxNavigationalState::EView)
+            {
+            SetToolbarItemsDimmed(EFalse);
+            }
+        CleanupStack::PopAndDestroy(navigationalState);
+        }
+    }
 
 //----------------------------------------------------------------------------
 // EnableLatch
@@ -301,5 +264,52 @@
             }
         }
     }
+
+// ----------------------------------------------------------------------------
+// HandlePopulatedL
+// ----------------------------------------------------------------------------
+//
+void CGlxToolbarController::HandlePopulatedL( MGlxMediaList* aList )
+    {
+    TRACER("CGlxToolbarController::HandlePopulatedL()");
+    if (aList->Count() <= 0)
+        {
+        SetToolbarItemsDimmed(ETrue);
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// SetToolbarItemsDimmed
+// ----------------------------------------------------------------------------
+//
+void CGlxToolbarController::SetToolbarItemsDimmed(TBool aDimmed)
+    {
+    TRACER("CGlxToolbarController::SetToolbarItemsDimmed()");
+    if (iToolbar)
+        {
+        iToolbar->SetItemDimmed(EGlxCmdSlideshowPlay, aDimmed, ETrue);
+        iToolbar->SetItemDimmed(EGlxCmdStartMultipleMarking, aDimmed, ETrue);
+        
+        if (!aDimmed)
+            {
+            CAknButton* uploadButton =
+                    static_cast<CAknButton*> (iToolbar->ControlOrNull(
+                            EGlxCmdUpload));
+            TBool dimmed = EFalse;
+            if (uploadButton)
+                {
+                // Get current button state
+                CAknButtonState* currentState = uploadButton->State();
+                dimmed = uploadButton->IsDimmed();
+                iToolbar->SetItemDimmed(EGlxCmdUpload, dimmed, ETrue);
+                }
+            }
+        else
+            {
+            iToolbar->SetItemDimmed(EGlxCmdUpload, aDimmed, ETrue);
+            }
+        }
+    }
+
 //end of file