messagingappbase/msgeditor/mediacontrolsrc/MsgFrameControl.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgeditor/mediacontrolsrc/MsgFrameControl.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,211 @@
+/*
+* 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:  
+*       MsgEditor Frame control.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "MsgFrameControl.h"
+
+#include <coeutils.h>               // for ConeUtils::FileExists
+#include <MsgEditorCommon.h>
+
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <AknsDrawUtils.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+// ==========================================================
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CMsgFrameControl::CMsgFrameControl
+//
+// Constructor
+// ---------------------------------------------------------
+//
+CMsgFrameControl::CMsgFrameControl()
+    {
+    }
+
+
+// ---------------------------------------------------------
+// CMsgFrameControl::NewL
+//
+// Constructor
+// ---------------------------------------------------------
+//
+CMsgFrameControl* CMsgFrameControl::NewL( const CCoeControl& aParent )
+    {
+    CMsgFrameControl* self = new( ELeave ) CMsgFrameControl;
+    
+    CleanupStack::PushL( self );
+    self->ConstructL( aParent );
+    CleanupStack::Pop( self );
+    
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::ConstructL
+//
+// Constructor
+// ---------------------------------------------------------
+//
+void CMsgFrameControl::ConstructL( const CCoeControl& aParent )
+    {
+    SetContainerWindowL( aParent );
+        
+    SetFrameSize();
+    
+    MakeVisible( EFalse );
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::~CMsgFrameControl
+//
+// Destructor
+// ---------------------------------------------------------
+//
+CMsgFrameControl::~CMsgFrameControl()
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::SetImageSize
+//
+// ---------------------------------------------------------
+//
+void CMsgFrameControl::SetImageSize( const TSize& aSize )
+    {
+    iFrameSize = aSize + iFrameBorderSize;
+    iImageSizeSet = ETrue;
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::FrameSize
+//
+// ---------------------------------------------------------
+//
+TSize CMsgFrameControl::FrameSize() const
+    {
+    return iFrameSize;
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::Draw
+//
+// ---------------------------------------------------------
+//
+void CMsgFrameControl::Draw( const TRect& aRect ) const
+    {
+    if ( !iImageSizeSet )
+        {
+        return;
+        }
+
+    CWindowGc& gc = SystemGc();
+    gc.SetClippingRect( aRect );
+
+    // Center the actual "frameRect" inside the "Rect()"
+    TRect frameRect( Rect().iTl, iFrameSize );
+    frameRect.Move( ( Rect().Width() - iFrameSize.iWidth ) / 2,
+                    ( Rect().Height() - iFrameSize.iHeight ) / 2 );
+
+    TAknLayoutRect tl;
+    tl.LayoutRect( frameRect, AknLayoutScalable_Avkon::input_focus_pane_g2().LayoutLine() );
+    
+    TAknLayoutRect br;
+    br.LayoutRect( frameRect, AknLayoutScalable_Avkon::input_focus_pane_g5().LayoutLine() );
+    
+    TRect innerRect = TRect( frameRect.iTl.iX + tl.Rect().Width(),
+                             frameRect.iTl.iY + tl.Rect().Height(),
+                             frameRect.iBr.iX - br.Rect().Width(),
+                             frameRect.iBr.iY - br.Rect().Height() );
+
+    TBool drawn = AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
+                                            gc,
+                                            frameRect,
+                                            innerRect, 
+                                            KAknsIIDQsnFrInput, 
+                                            KAknsIIDNone );        
+    if ( !drawn )
+        {
+        gc.SetPenColor( KRgbGray );
+        TRect rect = frameRect;
+        rect.iTl.iX += 1;
+        rect.iTl.iY += 1;
+        gc.DrawRect( rect );
+        gc.SetPenColor( KRgbBlack );
+        rect.iTl.iX -= 1;
+        rect.iTl.iY -= 1;
+        rect.iBr.iX -= 1;
+        rect.iBr.iY -= 1;
+        gc.DrawRect( rect );
+        }
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::HandleResourceChange
+// ---------------------------------------------------------
+//
+void CMsgFrameControl::HandleResourceChange( TInt aType )
+    {
+    CCoeControl::HandleResourceChange( aType ); 
+    
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        SetFrameSize();
+        }
+    }
+
+// ---------------------------------------------------------
+// CMsgFrameControl::SetFrameSize
+// ---------------------------------------------------------
+//
+void CMsgFrameControl::SetFrameSize()
+    {
+    TRect dataPane = MsgEditorCommons::MsgDataPane();
+    TAknLayoutRect iconLayout;
+    iconLayout.LayoutRect( dataPane,
+                           AknLayoutScalable_Apps::msg_data_pane_g4().LayoutLine() );
+                           
+    TAknLayoutRect frameLayout;
+    frameLayout.LayoutRect( dataPane,
+                            AknLayoutScalable_Apps::qrid_highlight_pane_cp011( 0 ).LayoutLine() );
+    iFrameBorderSize = TPoint( iconLayout.Rect().iTl - frameLayout.Rect().iTl ).AsSize();
+    // "Multiply" by two:
+    iFrameBorderSize += iFrameBorderSize;
+    }
+
+//  End of File