messagingappbase/msgeditor/viewsrc/MsgBaseControl.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgeditor/viewsrc/MsgBaseControl.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,417 @@
+/*
+* Copyright (c) 2002-2006 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:  MsgBaseControl implementation
+*
+*/
+
+
+
+// ========== INCLUDE FILES ================================
+
+#include <eikenv.h>                        // for CEikonEnv
+#include <AknUtils.h>                      // for AknUtils
+#include <aknenv.h>                        // for CAknEnv
+
+#include <applayout.cdl.h>
+
+#include "MsgEditorCommon.h"               //
+#include "MsgBaseControl.h"                // for CMsgBaseControl
+#include "MsgBaseControlObserver.h"        // for MMsgBaseControlObserver
+#include "MsgEditorPanic.h"                // for CMsgEditor panics
+
+// ========== EXTERNAL DATA STRUCTURES =====================
+
+// ========== EXTERNAL FUNCTION PROTOTYPES =================
+
+// ========== CONSTANTS ====================================
+
+// ========== MACROS =======================================
+
+// ========== LOCAL CONSTANTS AND MACROS ===================
+
+// ========== MODULE DATA STRUCTURES =======================
+
+// ========== LOCAL FUNCTION PROTOTYPES ====================
+
+// ========== LOCAL FUNCTIONS ==============================
+
+// ========== MEMBER FUNCTIONS =============================
+
+// ---------------------------------------------------------
+// CMsgBaseControl::CMsgBaseControl
+//
+// Constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CMsgBaseControl::CMsgBaseControl( MMsgBaseControlObserver& aBaseControlObserver ) : 
+    iBaseControlObserver( &aBaseControlObserver ),
+    iLineHeight( MsgEditorCommons::MsgBaseLineDelta() ),
+    iMaxBodyHeight( MsgEditorCommons::MaxBodyHeight() )
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::CMsgBaseControl
+//
+// Constructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CMsgBaseControl::CMsgBaseControl() :
+    iLineHeight( MsgEditorCommons::MsgBaseLineDelta() ),
+    iMaxBodyHeight( MsgEditorCommons::MaxBodyHeight() )
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::~CMsgBaseControl
+//
+// Destructor.
+// ---------------------------------------------------------
+//
+EXPORT_C CMsgBaseControl::~CMsgBaseControl()
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::ConstructFromResourceL
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::ConstructFromResourceL( TInt /*aResourceId*/ )
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::NotifyViewEvent
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::NotifyViewEvent( TMsgViewEvent /*aEvent*/, 
+                                                TInt /*aParam*/ )
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::Reset
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::Reset()
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetModified
+//
+// Sets the modified flag of the control.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetModified( TBool aModified )
+    {
+    if ( aModified )
+        {
+        iControlModeFlags |= EMsgControlModeModified;
+        }
+    else
+        {
+        iControlModeFlags &= ~EMsgControlModeModified;
+        }
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::IsModified
+//
+// Return ETrue if contents of control has been modified.
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CMsgBaseControl::IsModified() const
+    {
+    return iControlModeFlags & EMsgControlModeModified;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetReadOnly
+//
+// Sets the control read only or not. Before setting the read only flag on or
+// off, calls virtual PrepareForReadOnly function.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetReadOnly( TBool aReadOnly )
+    {
+    PrepareForReadOnly( aReadOnly );
+
+    if ( aReadOnly )
+        {
+        iControlModeFlags |= EMsgControlModeReadOnly;
+        }
+    else
+        {
+        iControlModeFlags &= ~EMsgControlModeReadOnly;
+        }
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::IsReadOnly
+//
+// Returns the read only status of the control.
+// ---------------------------------------------------------
+//
+EXPORT_C TBool CMsgBaseControl::IsReadOnly() const
+    {
+    return iControlModeFlags & EMsgControlModeReadOnly;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::ControlId
+//
+// Returns the control id.
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::ControlId() const
+    {
+    return iControlId;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetControlId
+//
+// Sets the control id.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetControlId( TInt aControlId )
+    {
+    iControlId = aControlId;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::DistanceFromComponentAbove
+//
+// Returns a distance from above to this control in pixels.
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::DistanceFromComponentAbove() const
+    {
+    return iDistanceFromComponentAbove;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetDistanceFromComponentAbove
+//
+// Sets a distance from above control in pixels.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetDistanceFromComponentAbove( TInt aDistance )
+    {
+    iDistanceFromComponentAbove = aDistance;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::Margins
+//
+// Returns the margins of the control.
+// ---------------------------------------------------------
+//
+EXPORT_C TMargins CMsgBaseControl::Margins() const
+    {
+    return iMargins;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetMargins
+//
+// Sets margins for the control.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetMargins( const TMargins& aMargins )
+    {
+    iMargins = aMargins;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SetBaseControlObserver
+//
+// Sets base control observer.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetBaseControlObserver( 
+                                    MMsgBaseControlObserver& aBaseControlObserver )
+    {
+    iBaseControlObserver = &aBaseControlObserver;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::VirtualHeight
+//
+// Returns approximate height of the control.
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::VirtualHeight()
+    {
+    return iSize.iHeight;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::VirtualVisibleTop
+//
+// Returns a topmost visible text position.
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::VirtualVisibleTop()
+    {
+    return 0;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::BaseConstructL
+//
+// Sets default margins for the control.
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::BaseConstructL()
+    {
+    iMargins.iLeft = 0;
+    iMargins.iRight = 0;
+    iMargins.iTop = 0;
+    iMargins.iBottom = 0;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::NormalTextFontL
+//
+// Returns a pointer to the normal text font.
+// ---------------------------------------------------------
+//
+EXPORT_C const CFont* CMsgBaseControl::NormalTextFontL() const
+    {
+    //TODO: Should this be read from LAF?
+    const CFont* font = iEikonEnv->NormalFont();
+    return font;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::LabelFontL
+//
+// Returns a pointer to the normal label font.
+// ---------------------------------------------------------
+//
+EXPORT_C const CFont* CMsgBaseControl::LabelFontL() const
+    {
+    TRect msgPane = MsgEditorCommons::MsgMainPane();
+    TAknLayoutText labelLayout;
+    labelLayout.LayoutText(
+        msgPane,
+        AppLayout::Message_writing_texts_Line_1( 0 ) );
+    return labelLayout.Font();
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::CountComponentControls
+//
+// Returns a number of controls.
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::CountComponentControls() const
+    {
+    __ASSERT_DEBUG( EFalse, Panic( EMsgInheritedFunctionIsMissing ) );
+    return 0;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::ComponentControl
+//
+// Returns a control of index aIndex.
+// ---------------------------------------------------------
+//
+EXPORT_C CCoeControl* CMsgBaseControl::ComponentControl( TInt /*aIndex*/ ) const
+    {
+    __ASSERT_DEBUG( EFalse, Panic( EMsgInheritedFunctionIsMissing ) );
+    return NULL;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::SizeChanged
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SizeChanged()
+    {
+    __ASSERT_DEBUG( EFalse, Panic( EMsgInheritedFunctionIsMissing ) );
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::FocusChanged
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::FocusChanged( TDrawNow /*aDrawNow*/ )
+    {
+    __ASSERT_DEBUG( EFalse, Panic( EMsgInheritedFunctionIsMissing ) );
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::ItemFinder
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C CItemFinder* CMsgBaseControl::ItemFinder()
+	{
+	return NULL;
+	}
+	
+// ---------------------------------------------------------
+// CMsgBaseControl::SetupAutomaticFindAfterFocusChangeL
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::SetupAutomaticFindAfterFocusChangeL( TBool /*aBeginning */ )
+    {
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::ScrollL
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C TInt CMsgBaseControl::ScrollL( TInt /*aPixelsToScroll*/, 
+                                        TMsgScrollDirection /*aDirection*/ )
+    {
+    return 0;
+    }
+
+// ---------------------------------------------------------
+// CMsgBaseControl::HandleResourceChange
+//
+// nop
+// ---------------------------------------------------------
+//
+EXPORT_C void CMsgBaseControl::HandleResourceChange( TInt aType )
+    {
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        iLineHeight = MsgEditorCommons::MsgBaseLineDelta();
+        iMaxBodyHeight = MsgEditorCommons::MaxBodyHeight();
+        }
+    
+    CCoeControl::HandleResourceChange( aType );
+    }
+
+//  End of File