diff -r bcb43dc84c44 -r 2dac0fdba72b photosgallery/viewframework/views/viewbase/src/glxtoolbarcontroller.cpp --- 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 // For Toolbar #include // For Command ids #include // For Logs +#include // For Logs #include #include @@ -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 (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