diff -r 3321d3e205b6 -r b01126ce0bec idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp --- a/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Tue Sep 14 20:58:58 2010 +0300 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Wed Sep 15 12:00:00 2010 +0300 @@ -30,14 +30,17 @@ #include #include #include - +#include #include "wmplugin.h" #include "widgetmanager.hrh" #include "wmmaincontainerview.h" #include "wmresourceloader.h" #include "wmmaincontainer.h" #include "wmspbgcleaner.h" - +#include "wmconfiguration.h" +#include "wmimageconverter.h" +#include "wmstore.h" + // --------------------------------------------------------- // CWmMainContainerView::CWmMainContainerView() // --------------------------------------------------------- @@ -55,7 +58,7 @@ // --------------------------------------------------------- // CWmMainContainerView::~CWmMainContainerView() - { + { if ( iWmMainContainer != NULL ) { AppUi()->RemoveFromStack( iWmMainContainer ); @@ -127,9 +130,7 @@ { switch ( aCommand ) { - case EWmMainContainerViewOpenPortalMenuItemCommand: - HandleOpenMenuItemSelectedL(); - break; + case EAknSoftkeySelect: case EWmMainContainerViewAddMenuItemCommand: HandleAddMenuItemSelectedL(); break; @@ -162,9 +163,11 @@ case EWmMainContainerViewWiddetDetailsMenuItemCommand: HandleDetailsMenuItemSelectedL(); break; - case EAknSoftkeySelect: + case EWmStoreCommand: + { if ( iWmMainContainer ) - iWmMainContainer->SelectL(); + iWmMainContainer->HandleStoreCommandL(); + } break; case EAknSoftkeyCancel: // flow through case EEikCmdCanceled: @@ -188,7 +191,16 @@ const TDesC8& /*aCustomMessage*/ ) { // setup status pane layout - StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + TInt layoutResourceId = ( (iWmPlugin.Configuration().StoreCount() ) ? + R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT : + R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + StatusPane()->SwitchLayoutL( layoutResourceId ); + + // ToDo: Support for msk in all layout is ongoing, when available in + // sdk use next line and get rid of above. + + //StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + // apply changes StatusPane()->ApplyCurrentSettingsL(); // disable transparancy @@ -208,14 +220,19 @@ StatusPane()->DrawNow(); // update cba - if ( Layout_Meta_Data::IsMSKEnabled() ) + if ( !AknLayoutUtils::MSKEnabled() || + iWmPlugin.Configuration().StoreCount() == 0 ) { CEikButtonGroupContainer* bgc( Cba() ); CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); - cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); + cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK ); bgc->SetBoundingRect( TRect() ); cba->DrawNow(); } + else if ( AknLayoutUtils::MSKEnabled() ) + { + UpdateMSKIconL(); + } // create container if ( iWmMainContainer == NULL ) @@ -309,27 +326,12 @@ !iWmMainContainer->CanDoHelp() ); aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand, !iWmMainContainer->CanDoUninstall() ); - if ( !iWmMainContainer->PortalSelected() ) - aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand ); if ( !iWmMainContainer->WidgetSelected() ) aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand ); } } // --------------------------------------------------------- -// CWmMainContainerView::HandleOpenMenuItemSelectedL -// --------------------------------------------------------- -// -TBool CWmMainContainerView::HandleOpenMenuItemSelectedL() - { - if ( iWmMainContainer && iWmMainContainer->PortalSelected() ) - { - iWmMainContainer->OpenPortalL(); - } - return ETrue; - } - -// --------------------------------------------------------- // CWmMainContainerView::HandleDetailsMenuItemSelectedL // --------------------------------------------------------- // @@ -431,16 +433,64 @@ } // --------------------------------------------------------- -// CWmMainContainerView::HandleForegroundEventL +// CWmMainContainerView::UpdateMSKIconL // --------------------------------------------------------- // -void CWmMainContainerView::HandleForegroundEventL( TBool aForeground ) +void CWmMainContainerView::UpdateMSKIconL() { - CAknView::HandleForegroundEventL( aForeground ); - if ( iWmMainContainer ) + CEikButtonGroupContainer* bgc( Cba() ); + CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); + TFileName fileName( iWmPlugin.ResourceLoader().IconFilePath() ); + TAknsItemID skinId = KAknsIIDQgnMenuOviStore; + TInt bitmapId( EMbmWidgetmanagerQgn_menu_ovistore ); + TInt maskId( EMbmWidgetmanagerQgn_menu_ovistore_mask ); + + if ( iWmPlugin.Configuration().StoreCount() > 1 ) + { + skinId = KAknsIIDQgnPropLmShopping; + bitmapId = EMbmWidgetmanagerQgn_menu_shopping; + maskId = EMbmWidgetmanagerQgn_menu_shopping_mask; + } + else { - iWmMainContainer->ProcessForegroundEvent( aForeground ); + const RPointerArray& storeConfArray = + iWmPlugin.Configuration().StoreConfArray(); + CWmConfItem* confItem( storeConfArray[0] ); + + if ( confItem && + confItem->Id() != CWmStore::EOvi && + confItem->Icon().Length() ) + { + CWmImageConverter* imageConverter = CWmImageConverter::NewL(); + CleanupStack::PushL( imageConverter ); + + // parse icon str + // TODO: now only mif&skin are supported. Later when API is there + // we can add support for rest icon types + TBool res = imageConverter->ParseIconString( + confItem->Icon(), skinId, bitmapId, maskId, fileName ); + + CleanupStack::PopAndDestroy( imageConverter ); + + if ( !res ) + { + // use default shopping icon + skinId = KAknsIIDQgnPropLmShopping; + bitmapId = EMbmWidgetmanagerQgn_menu_shopping; + maskId = EMbmWidgetmanagerQgn_menu_shopping_mask; + fileName.Copy( iWmPlugin.ResourceLoader().IconFilePath() ); + } + } } + + cba->UpdateMSKIconL( + skinId, + fileName, + bitmapId, + maskId, + ETrue ); + bgc->SetBoundingRect( TRect() ); + cba->DrawNow(); } // End of file