diff -r 6369bfd1b60d -r 08b5eae9f9ff upnpframework/upnpcommonui/src/upnpnavipanecontainer.cpp --- a/upnpframework/upnpcommonui/src/upnpnavipanecontainer.cpp Mon Nov 01 13:44:24 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,640 +0,0 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Source file for UPnP navi pane container -* -*/ - - - -// INCLUDE FILES -// system -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// internal -#include "upnpnavipanecontainer.h" -#include -#include -#include "upnpperiodic.h" - -_LIT( KComponentLogfile, "commonui.txt"); -#include "upnplog.h" - -_LIT( KAknCommonUIMbmFileName, "\\resource\\apps\\upnpcommonui.mbm" ); - -// CONSTANTS -const TInt KPeriodicTimerDelay = 1000000; // microseconds -const TInt KPeriodicTimerInterval = 200000; // microseconds -_LIT( KUPnPCommonUiRscFile, "\\resource\\upnpcommonui.rsc" ); - -// ============================ MEMBER FUNCTIONS ============================ - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::CUPnPNaviPaneContainer -// -------------------------------------------------------------------------- -// -CUPnPNaviPaneContainer::CUPnPNaviPaneContainer() - { - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::NewL -// -------------------------------------------------------------------------- -// -EXPORT_C CUPnPNaviPaneContainer* CUPnPNaviPaneContainer::NewL( - const TRect& aRect, - TPoint aPosition, - CAknNavigationControlContainer* aParent ) - { - CUPnPNaviPaneContainer* self = new ( ELeave ) CUPnPNaviPaneContainer(); - CleanupStack::PushL( self ); - self->ConstructL( aRect, aPosition, aParent ); - CleanupStack::Pop(); - return self; - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::ConstructL -// -------------------------------------------------------------------------- -// -void CUPnPNaviPaneContainer::ConstructL( - const TRect& aRect, - TPoint aPosition, - CAknNavigationControlContainer* aParent ) - { - iCoeEnv = CEikonEnv::Static(); - RFs& fileSession = iCoeEnv->FsSession(); - - // Load common ui resource file - TFileName rscFileName( KUPnPCommonUiRscFile ); - TFileName dllName; - Dll::FileName( dllName ); - TBuf<2> drive = dllName.Left( 2 ); // Drive letter followed by ':' - rscFileName.Insert( 0, drive ); - - // Get the exact filename of the resource file - BaflUtils::NearestLanguageFile( fileSession, rscFileName ); - // Check if the resource file exists or not - if ( !BaflUtils::FileExists( fileSession, rscFileName ) ) - { - User::Leave( KErrNotFound ); - } - iResFileOffset = iCoeEnv->AddResourceFileL( rscFileName ); - - - // Create label - iFirstDrawDelayWaited = EFalse; - - iPosition.iX = aPosition.iX; - iPosition.iY = aPosition.iY; - - TRect backgroundRect = aRect; - backgroundRect.iTl.iX = -iPosition.iX; - - iSkinContext = CAknsBasicBackgroundControlContext::NewL( - KAknsIIDQsnBgNavipaneSolid , backgroundRect, EFalse ); - - SetPosition(iPosition); - - SetRect(aRect); - CreateWindowL( aParent ); - - iIcon1 = LoadIconL( EFrame1, this ); - iIcon2 = LoadIconL( EFrame2, this ); - iIcon3 = LoadIconL( EFrame3, this ); - iIcon4 = LoadIconL( EFrame4, this ); - iIcon5 = LoadIconL( EFrame5, this ); - iIcon6 = LoadIconL( EFrame6, this ); - iIcon7 = LoadIconL( EFrame7, this ); - iIcon8 = LoadIconL( EFrame8, this ); - iIcon9 = LoadIconL( EFrame9, this ); - - AknIconUtils::SetSize( iIcon1->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon2->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon3->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon4->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon5->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon6->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon7->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon8->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - AknIconUtils::SetSize( iIcon9->Bitmap(), - TSize(aRect.Height(), - aRect.Height() ) ); //width = height, on purpose - - iNavipaneIcon = iIcon1; //set first image in animation - - iPeriodic = CUPnPPeriodic::NewL( CActive::EPriorityUserInput ); - iPeriodic->Start( KPeriodicTimerDelay, - KPeriodicTimerInterval, - TCallBack(UpdateAnimationL, this ) ); - - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::~CUPnPNaviPaneContainer -// -------------------------------------------------------------------------- -// -CUPnPNaviPaneContainer::~CUPnPNaviPaneContainer() - { - if ( iResFileOffset ) - { - iCoeEnv->DeleteResourceFile( iResFileOffset ); - iResFileOffset = 0; - } - - if ( iPeriodic ) - { - iPeriodic->Cancel(); - delete iPeriodic; - } - DeleteIcon( EFrame1 ); - DeleteIcon( EFrame2 ); - DeleteIcon( EFrame3 ); - DeleteIcon( EFrame4 ); - DeleteIcon( EFrame5 ); - DeleteIcon( EFrame6 ); - DeleteIcon( EFrame7 ); - DeleteIcon( EFrame8 ); - DeleteIcon( EFrame9 ); - delete iSkinContext; - /* - delete iLabel; - */ - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::CountComponentControls -// -------------------------------------------------------------------------- -// -TInt CUPnPNaviPaneContainer::CountComponentControls() const - { - return 0; - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::ComponentControl -// -------------------------------------------------------------------------- -// -CCoeControl* CUPnPNaviPaneContainer::ComponentControl( TInt /*aIndex*/ ) const - { - return NULL; - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::Draw -// -------------------------------------------------------------------------- -// -void CUPnPNaviPaneContainer::Draw( const TRect& aRect ) const - { - // Do not draw custom navi pane in landscape orientation - if (Layout_Meta_Data::IsLandscapeOrientation() == EFalse) - { - if (iFirstDrawDelayWaited) - { - CWindowGc& gc = SystemGc(); - gc.Clear(); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - if (iSkinContext) - {//Draw the skin background - AknsDrawUtils::Background( - skin, iSkinContext, this, gc, aRect); - } - else - {// clear the area - gc.SetBrushColor( iEikonEnv->ControlColor( - EColorWindowBackground, *this ) ); - gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc.Clear( aRect ); - } - - - const CFont* normalFont = iCoeEnv->AnnotationFont(); - TInt baseline = ((aRect.Height() / 2) + - (normalFont->AscentInPixels() / 2)); - - TRgb color(0,0,0); - - TInt err = AknsUtils::GetCachedColor( skin, color, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG2 ); - - - gc.UseFont(normalFont); - if( KErrNone == err ) - { - gc.SetPenColor( color ); - } - else - { - gc.SetPenColor( KRgbBlack ); - } - gc.SetBrushStyle( CGraphicsContext::ENullBrush ); - - HBufC* naviPaneText = NULL; - TRAP( err, naviPaneText = StringLoader::LoadL( - R_UPNPCOMMONUI_SERVER_SEARCH_MAIN ) ); - - TSize animationFrameSize = - iNavipaneIcon->Bitmap()->SizeInPixels(); - - const TInt textWidth = (aRect.Width() - - animationFrameSize.iWidth); - - TBuf< 128 > textBuffer; - - if( KErrNone == err ) - { - if (AknBidiTextUtils::ConvertToVisualAndClip( *naviPaneText, - textBuffer, - *normalFont, - textWidth, - textWidth)) - { - gc.DrawText(textBuffer, aRect, baseline, - CGraphicsContext::ELeft); - } - else //text not clipped, default case - { - gc.DrawText(textBuffer, aRect, baseline, - CGraphicsContext::ELeft); - } - delete naviPaneText; - } - TPoint upperLeftCorner((aRect.Width() - - animationFrameSize.iWidth), 0); - - gc.BitBltMasked(upperLeftCorner, iNavipaneIcon->Bitmap(), Rect(), - iNavipaneIcon->Mask(), EFalse); - } - } - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::LoadIconL -// -------------------------------------------------------------------------- -// - - -CGulIcon* CUPnPNaviPaneContainer::LoadIconL( TAnimationFrames aAnimationState, - TAny* aDlg) - { - static_cast( aDlg )-> - DeleteIcon( aAnimationState ); - - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - CFbsBitmap* bitmap = NULL; - CFbsBitmap* mask = NULL; - TInt id = 0; - TInt maskId = 0; - TAknsItemID skinId = KAknsIIDNone; - - switch ( aAnimationState ) - { - - case EFrame1: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_1; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_1_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame2: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_2; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_2_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame3: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_3; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_3_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame4: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_4; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_4_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame5: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_5; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_5_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame6: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_6; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_6_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame7: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_7; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_7_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame8: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_8; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_8_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - case EFrame9: - { - id = EMbmUpnpcommonuiQgn_indi_upnp_search_9; - maskId = EMbmUpnpcommonuiQgn_indi_upnp_search_9_mask; - skinId = KAknsIIDQsnBgNavipaneSolid; - break; - } - default: - { - break; - } - } - - TFileName mbmFileName( KAknCommonUIMbmFileName ); - TFileName dllName; - Dll::FileName( dllName ); - TBuf<2> drive = dllName.Left( 2 ); // Drive letter followed by ':' - mbmFileName.Insert( 0, drive ); - - AknsUtils::CreateIconL( skin, - skinId, - bitmap, - mask, - mbmFileName, - id, - maskId ); - - CleanupStack::PushL(mask); - CleanupStack::PushL(bitmap); - - - // Get the color of the search text - TRgb color(0,0,0); - TBool useWhite = EFalse; - TInt err = AknsUtils::GetCachedColor( skin, color, - KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG2 ); - - - - // If text color is closer to white, use white animation - if( KErrNone == err && - color.Difference(KRgbBlack) > color.Difference(KRgbWhite)) - { - useWhite = ETrue; - } - - - - err = KErrNone; - if( useWhite ) - { - TInt imgSize = static_cast( - aDlg )->Rect().Height(); - AknIconUtils::SetSize( bitmap,TSize(imgSize,imgSize) ); - TSize size = bitmap->SizeInPixels(); - - CleanupStack::PopAndDestroy(bitmap); - bitmap = new(ELeave) CFbsBitmap(); - CleanupStack::PushL(bitmap); - err = bitmap->Create(size, EColor16M); - } - - - CGulIcon* icon = CGulIcon::NewL( bitmap, mask ); - icon->SetBitmapsOwnedExternally( EFalse ); - - CleanupStack::Pop( bitmap ); // bitmap, mask - CleanupStack::Pop( mask ); // bitmap, mask - bitmap = NULL; - mask = NULL; - - return icon; - } - -void CUPnPNaviPaneContainer::DeleteIcon( TAnimationFrames aAnimationState ) - { - switch ( aAnimationState ) - { - case EFrame1: - { - delete iIcon1; - iIcon1 = NULL; - break; - } - case EFrame2: - { - delete iIcon2; - iIcon2 = NULL; - break; - } - case EFrame3: - { - delete iIcon3; - iIcon3 = NULL; - break; - } - case EFrame4: - { - delete iIcon4; - iIcon4 = NULL; - break; - } - case EFrame5: - { - delete iIcon5; - iIcon5 = NULL; - break; - } - case EFrame6: - { - delete iIcon6; - iIcon6 = NULL; - break; - } - case EFrame7: - { - delete iIcon7; - iIcon7 = NULL; - break; - } - case EFrame8: - { - delete iIcon8; - iIcon8 = NULL; - break; - } - case EFrame9: - { - if (iIcon9) - { - delete iIcon9; - iIcon9 = NULL; - } - break; - } - default: - break; - } - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::UpdateAnimation -// -------------------------------------------------------------------------- -// - -TBool CUPnPNaviPaneContainer::UpdateAnimationL( TAny* aDlg ) - { - CUPnPNaviPaneContainer* dlg = - static_cast( aDlg ); - - if ( !dlg->iFirstDrawDelayWaited ) - { - dlg->iFirstDrawDelayWaited = ETrue; - } - - switch ( dlg->iAnimationIndex++ % 9 ) - { - case 0: - { - dlg->iNavipaneIcon = dlg->iIcon1; - break; - } - case 1: - { - dlg->iNavipaneIcon = dlg->iIcon2; - break; - } - case 2: - { - dlg->iNavipaneIcon = dlg->iIcon3; - break; - } - case 3: - { - dlg->iNavipaneIcon = dlg->iIcon4; - break; - } - case 4: - { - dlg->iNavipaneIcon = dlg->iIcon5; - break; - } - case 5: - { - dlg->iNavipaneIcon = dlg->iIcon6; - break; - } - case 6: - { - dlg->iNavipaneIcon = dlg->iIcon7; - break; - } - case 7: - { - dlg->iNavipaneIcon = dlg->iIcon8; - break; - } - case 8: - { - dlg->iNavipaneIcon = dlg->iIcon9; - break; - } - default: - { - // error - break; - } - } - - if (dlg->iAnimationIndex >= 9) - { - dlg->iAnimationIndex = 0; - } - - dlg->DrawAnimation(); - - return ETrue; - } - -// -------------------------------------------------------------------------- -// CUPnPNaviPaneContainer::DrawAnimation -// -------------------------------------------------------------------------- -// - -void CUPnPNaviPaneContainer::DrawAnimation() - { - TPoint imagePosition; - imagePosition.iX = iPosition.iX; - imagePosition.iY = iPosition.iY; - CWindowGc& gc = SystemGc(); - RDrawableWindow* drawWindow = DrawableWindow(); - gc.Activate( *drawWindow ); - Draw( Rect() ); - gc.Deactivate(); - } - - -// End of file