mmsharing/mmshindicator/src/musindicatordsa.cpp
branchRCL_3
changeset 33 bc78a40cd63c
parent 32 73a1feb507fb
child 35 6c57ef9392d2
--- a/mmsharing/mmshindicator/src/musindicatordsa.cpp	Tue Aug 31 15:12:07 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-/*
-* Copyright (c) 2007 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:  MusIndicatorApi provides means to show notes and indicate
-*                availability of videosharing to user.
-*
-*/
-
-
-#include "musindicatordsa.h"
-#include "muslogger.h"
-#include "musresourceutil.h"
-#include "musresourcefinderutil.h"
-#include <e32cmn.h>
-#include <e32std.h>
-#include <musindicator.rsg>
-#include <eikenv.h>
-#include <coefontprovider.h>
-#include <AknsDrawUtils.h>
-#include <eikappui.h>
-#include <musindicatoricons.mbg>
-#include <AknUtils.h>
-
-// constants
-// Size and positions
-
-const TInt KMusIndicatorWindowHeight = 50;
-const TInt KMusIndicatorWindowShrink = 2;
-const TInt KMusSpaceBetweenImageAndText = 5;
-
-// appereance
-const TInt KMusIndicatorBorderRoundedCorners = 6;
-const TInt KMusIndicatorBorderSize = 1;
-//const TInt KMusIndicatorFontPenSize = 1;
-
-
-
-
-CMusIndicatorDsa* CMusIndicatorDsa::NewL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::NewL" )
-    CMusIndicatorDsa* self = new (ELeave) CMusIndicatorDsa();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::NewL" )
-    return self;
-    }
-
-
-CMusIndicatorDsa::CMusIndicatorDsa()
-    : iActivateCallBack( CMusIndicatorDsa::TryActivate, this ),
-      iRedrawCallBack( CMusIndicatorDsa::DoHandleResourceChange, this )
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::CMusIndicatorDsa" )
-        
-    iBorderColor = KRgbBlack;
-    iBorderBgColor = KRgbWhite;
-    iFontColor = KRgbBlack;
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::CMusIndicatorDsa" )
-    }
-
-
-CMusIndicatorDsa::~CMusIndicatorDsa()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::~CMusIndicatorDsa" )
-    
-    StopPeriodicTimer();    
-    delete iPeriodic;
-
-    delete iIcon;
-    delete iIconMask;
-    
-    delete iText;
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::~CMusIndicatorDsa" )
-    }
-
-
-const CFont& CMusIndicatorDsa::Font() const
-    {
-    TCoeFont coeFont = TCoeFont::NormalFont();
-    TZoomFactor zoomFactor = AccumulatedZoom();
-    return FindFontProvider().Font(coeFont, zoomFactor);
-    }
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::ConstructL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::ConstructL" )
-
-    iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
-    
-    LoadResourceStringL();
-    LoadImageL();
-    CreateWindowL();
-    
-    Initialize();
-    TryActivateL();
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::ConstructL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::TryActivateL()
-    {
-    MAknsControlContext* cc = 
-        AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
-
-    if ( cc )
-        {
-        StopPeriodicTimer();
-        ActivateL();
-        }
-    else
-        {
-        StartPeriodicTimer( iActivateCallBack );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::Draw( const TRect& aRect ) const
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Draw" )
-    MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iTl.iX, aRect.iTl.iY )
-    MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iBr.iX, aRect.iBr.iY )
-    
-    CWindowGc& gc = SystemGc();
-    
-    TSize screenSizeNow = ControlEnv()->ScreenDevice()->SizeInPixels();
-    
-    if ( screenSizeNow != iScreenSize )
-        {
-        StartPeriodicTimer( iRedrawCallBack );
-        }
-    
-    MAknsControlContext* cc = 
-        AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
-    MUS_LOG1( "mus: [MUSIND] : cc = %d", cc )
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MUS_LOG1( "mus: [MUSIND] : skin = %d", skin )
-
-    TRgb fontColor;
-    AknsUtils::GetCachedColor( skin, fontColor, 
-                               KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-    TRgb borderColor = fontColor;
-    
-    TBool backgroundWithBitmap = 
-                ( skin && !cc ) ? 
-                 EFalse :
-                 AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault );
-    
-    if( !backgroundWithBitmap )
-        {
-        MUS_LOG( "mus: [MUSIND] : Clearing rect with null brush") 
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        gc.Clear( aRect );
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND] : rect was cleared with bitmap") 
-        }
-    
-    gc.UseFont( &Font() );
-    
-    // Border initialization                   
-    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-
-    // Draw border
-    MUS_LOG( "mus: [MUSIND] : Draw border") 
-    gc.SetPenStyle( CGraphicsContext::ESolidPen );
-    gc.SetPenColor( borderColor );
-    gc.SetPenSize(
-        TSize( KMusIndicatorBorderSize, KMusIndicatorBorderSize ) );
-    gc.DrawRoundRect( iScreenRect,
-                        TSize( KMusIndicatorBorderRoundedCorners,
-                               KMusIndicatorBorderRoundedCorners ) );
-    
-    /* 
-    // Draw smaller border with other color
-    MUS_LOG( "mus: [MUSIND] : Draw smaller border with other color") 
-    gc.SetPenColor( iBorderBgColor );
-    TRect smallerRect = iScreenRect;
-    smallerRect.Shrink( KMusIndicatorBorderSize, KMusIndicatorBorderSize );
-    gc.DrawRoundRect( smallerRect,
-                        TSize( KMusIndicatorBorderRoundedCorners,
-                               KMusIndicatorBorderRoundedCorners ) );
-                              
-    // Font outline initialization
-    
-    MUS_LOG( "mus: [MUSIND] : Draw text outlines") 
-    gc.SetPenColor( iBorderBgColor );
-    gc.SetPenSize( TSize( KMusIndicatorFontPenSize, KMusIndicatorFontPenSize ) );
-
-    // Draw text outlines
-    TPoint outlineTextPos = iTextpos;
-    outlineTextPos -= TPoint( 1, 1 );
-    gc.DrawText( *iText, outlineTextPos );
-    */
-   
-    // Font initialization
-    gc.SetPenColor( fontColor );
-
-    // Draw text
-    MUS_LOG( "mus: [MUSIND] : Draw text") 
-    gc.DrawText( *iText, iTextpos );
-    
-    gc.BitBltMasked( iImagepos, 
-                       iIcon, 
-                       TRect( 0, 0, iImageSize.iWidth, iImageSize.iHeight ),
-                       iIconMask, 
-                       EFalse );
-
-
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Draw" )
-    }
-
-
-//------------------------------------------------------------------------------
-// 
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::HandleResourceChange( TInt aType )
-    {
-    
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        Initialize();
-        DrawDeferred();
-        }
-    
-    StopPeriodicTimer();
-    
-    }
-
-
-
-//------------------------------------------------------------------------------
-// Calculates topleft position of drawn text.
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::Initialize()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Initialize" )
-    
-    TRect clientRect = CEikonEnv::Static()->EikAppUi()->ClientRect();
-    MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iTl.iX, clientRect.iTl.iY )
-    MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iBr.iX, clientRect.iBr.iY )
-    
-    iScreenSize = ControlEnv()->ScreenDevice()->SizeInPixels();
-
-    //test (indicator goes inside options menu area)  
-    //clientRect.iTl.iY = 150;
-    
-    SetPosition( clientRect.iTl );
-    SetSize(
-        TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
-    
-    iScreenRect = TRect(
-        TPoint( 0, 0 ),
-        TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
-    iScreenRect.Shrink( KMusIndicatorWindowShrink, KMusIndicatorWindowShrink );
-    
-    
-    TInt imagePlusTextWidth = Font().TextWidthInPixels( *iText ) + 
-            iImageSize.iWidth + KMusSpaceBetweenImageAndText;
-
-    iImagepos.iX = ( iScreenRect.Width() - imagePlusTextWidth )  >> 1;
-    iImagepos.iY = ( iScreenRect.Height() - iImageSize.iHeight ) >> 1;
-    
-    // Text position
-    iTextpos.iX = iImagepos.iX + iImageSize.iWidth + KMusSpaceBetweenImageAndText;
-
-    iTextpos.iY = ( iScreenRect.Height() >> 1 ) +
-                  ( Font().HeightInPixels() >> 1 ) +
-                    iScreenRect.iTl.iY;
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Initialize" )
-    }
-
-
-
-//------------------------------------------------------------------------------
-// Loads displayed image.
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::LoadImageL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadImageL" )
-    
-    if ( iIcon || iIconMask )
-        {
-        MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
-        return;
-        }
-    
-    _LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musindicatoricons.mbm" );
-    _LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musindicatoricons.mbm" );
-
-    TFileName imageFileName;
-    if ( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) ) 
-        {
-        imageFileName = KMyBitmapRomFile;
-        }
-    else if ( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) ) 
-        {
-        imageFileName = KMyBitmapRamFile;
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND]  Icon File Not Found!" );
-        User::Leave( KErrNotFound );
-        } 
-        
-    iIcon = new ( ELeave ) CFbsBitmap();
-    iIconMask = new ( ELeave ) CFbsBitmap();
-    
-    // Enumerations of mbg file are usable only when vector images
-    // in mif file are used. Those cannot be loaded without UI components.
-    const TInt KMusIndicatorIconIndex = 0;
-    const TInt KMusIndicatorIconMaskIndex = 1;
-    User::LeaveIfError( 
-        iIcon->Load( imageFileName, KMusIndicatorIconIndex ) );
-    User::LeaveIfError( 
-        iIconMask->Load( imageFileName, KMusIndicatorIconMaskIndex ) );
-    
-    iImageSize = iIcon->SizeInPixels();
-    
-    // Crop icon if it is too big
-    if ( iImageSize.iHeight > KMusIndicatorWindowHeight )
-        {
-        TInt newHeight = KMusIndicatorWindowHeight >> 1;
-        TInt newWidth = 
-            TReal( iImageSize.iHeight / iImageSize.iWidth  ) * newHeight;
-        iIcon->Resize( TSize( newHeight, newWidth ) );
-        iIconMask->Resize( TSize( newHeight, newWidth ) );
-        }
-    
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
-    }
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::LoadResourceStringL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadResourceStringL" )
-    delete iText;
-    iText = NULL;
-    iText = MusResourceUtil::ReadResourceString16L(
-        R_MUSINDICATOR_NOTE_VSREADY_TXT,
-        KMusIndicatorResource );
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadResourceStringL" )
-    }
-
-//------------------------------------------------------------------------------
-// Periodic timer completion
-//------------------------------------------------------------------------------
-//
-TInt CMusIndicatorDsa::TryActivate( TAny* aThis )
-    {
-    if ( !aThis )
-        {
-        return KErrArgument;
-        }
-
-    CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
-    
-    TInt error = KErrNone;
-    TRAP( error, handle->TryActivateL() );
-
-    return error;
-    }
-    
-
-//------------------------------------------------------------------------------
-// Periodic timer completion
-//------------------------------------------------------------------------------
-//
-TInt CMusIndicatorDsa::DoHandleResourceChange( TAny* aThis )
-    {
-
-    if ( !aThis )
-        {
-        return KErrArgument;
-        }
-
-    CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
-
-    handle->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
-    
-    return KErrNone;
-    
-    }
-
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::StartPeriodicTimer( const TCallBack& aCallBack) const
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StartPeriodicTimer" )
-    
-    if ( iPeriodic->IsActive() )
-        {
-        return;
-        }
-    
-    TTimeIntervalMicroSeconds32 delay = 
-            aCallBack.iFunction == CMusIndicatorDsa::TryActivate ?
-                                  KMusIndicatorDelay : KMusRedrawDelay;
-    
-    iPeriodic->Start( delay, delay, aCallBack );
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StartPeriodicTimer" )
-    }
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::StopPeriodicTimer()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StopPeriodicTimer" )
-    if( iPeriodic )
-        {
-        iPeriodic->Cancel();
-        }
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StopPeriodicTimer" )
-    }
-
-    
-
-
-
-// End of file
-