--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlsrc/AknToolbarItem.cpp Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,303 @@
+/*
+* 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: Toolbar item
+*
+*/
+
+
+#include <AknsUtils.h>
+#include <barsread.h>
+#include <aknbutton.h>
+#include <e32std.h>
+#include <e32property.h>
+#include <avkondomainpskeys.h>
+
+
+#include "akntoolbaritem.h"
+#include "touchtoolbardata.h"
+
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::CAknToolbarItem
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+CAknToolbarItem::CAknToolbarItem()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::CAknToolbarItem
+// Constructor
+// -----------------------------------------------------------------------------
+//
+CAknToolbarItem::CAknToolbarItem( CCoeControl* aControl, TInt aType,
+ TInt aId, TInt aFlags )
+ : iControl( aControl ), iControlType( aType ),
+ iCommandId( aId ), iFlags( aFlags )
+ {
+ SetKeyRefuse();
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CAknToolbarItem::~CAknToolbarItem()
+ {
+ AknsUtils::DeregisterControlPosition( iControl );
+ delete iControl;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::ConstructFromResourceL
+// Constructs one item from resource file
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::ConstructFromResourceL( TResourceReader& aReader )
+ {
+ iControlType = aReader.ReadInt16();
+ iCommandId = aReader.ReadInt16();
+ iFlags = aReader.ReadInt16();
+ aReader.ReadInt16(); // length, not used
+
+ iControl = EikControlFactory::CreateByTypeL( iControlType ).iControl;
+
+ if ( iControl )
+ {
+ iControl->ConstructFromResourceL( aReader );
+ }
+
+ SetKeyRefuse();
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::Control
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CAknToolbarItem::Control() const
+ {
+ return iControl;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::ControlType
+// -----------------------------------------------------------------------------
+//
+TInt CAknToolbarItem::ControlType() const
+ {
+ return iControlType;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::CommandId
+// -----------------------------------------------------------------------------
+//
+TInt CAknToolbarItem::CommandId() const
+ {
+ return iCommandId;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::Flags
+// -----------------------------------------------------------------------------
+//
+TInt CAknToolbarItem::Flags() const
+ {
+ return iFlags;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::IsSelected
+// -----------------------------------------------------------------------------
+//
+TBool CAknToolbarItem::IsSelected() const
+ {
+ return iIsSelected;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::SetIsSelectedL
+// -----------------------------------------------------------------------------
+//
+TBool CAknToolbarItem::SetIsSelectedL( TBool aIsSelected )
+ {
+ // Toolbar items containing buttons are not set to selected state
+ if ( Control() && ( ControlType() == EAknCtButton ||
+ ControlType() == EAknCtToolbarExtension ) )
+ {
+ return EFalse;
+ }
+
+ iIsSelected = aIsSelected;
+
+ // Set item focused, when selected
+ Control()->SetFocus( aIsSelected );
+ if ( aIsSelected )
+ {
+ CEikonEnv::Static()->EikAppUi()->AddToStackL( Control(), ECoeStackPriorityDefault,
+ 0 );
+ }
+ else
+ {
+ CEikonEnv::Static()->EikAppUi()->RemoveFromStack( Control() );
+ }
+
+ return ETrue;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::SetCloseOnCommand
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::SetCloseOnCommand( const TBool aCloseOnCommand )
+ {
+ if ( Control() && ( ControlType() == EAknCtButton ||
+ ControlType() == EAknCtToolbarExtension ) )
+ {
+ static_cast<CAknButton*>( Control() )->SetRequestExit( aCloseOnCommand );
+ }
+ } //lint !e1762
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::SetHighlightRect
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::SetHighlightRect( const TRect& aRect )
+ {
+ iHighlightRect = aRect;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::HighlightRect
+// -----------------------------------------------------------------------------
+//
+TRect CAknToolbarItem::HighlightRect() const
+ {
+ return iHighlightRect;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::SetFocusL
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::SetFocusL( TBool aFocus, TBool aPrepareControl,
+ TDrawNow aDrawNow, const CCoeControl* aParent )
+ {
+ // Editor is set focused, when it is selected, not here.
+ if ( iControl && ( iControlType == EAknCtButton ) )
+ {
+ if ( aPrepareControl )
+ {
+ if ( aFocus )
+ {
+ TInt state = 0;
+ CTouchToolbarData* data =
+ (CTouchToolbarData*) CAknTransitionUtils::GetData(
+ (TInt) aParent );
+ if ( data )
+ {
+ RProperty::Get( KPSUidAvkonDomain,
+ KAknTfxServerRedirectionStatus,
+ state );
+ data->SetFocusedItem( state ? iControl : NULL );
+ }
+ if ( state == 0 )
+ {
+ iControl->PrepareForFocusGainL();
+ }
+ }
+ else
+ {
+ iControl->PrepareForFocusLossL();
+ }
+ }
+
+ iControl->SetFocus( aFocus, aDrawNow );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::RegisterPosition
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::RegisterPosition( const TPoint& aParentPosition ) const
+ {
+ AknsUtils::RegisterControlPosition( iControl, aParentPosition +
+ iControl->Position() );
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::IsHidden
+// -----------------------------------------------------------------------------
+//
+TBool CAknToolbarItem::IsHidden() const
+ {
+ return iHidden;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::SetHidden
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::SetHidden( TBool aHidden )
+ {
+ iHidden = aHidden;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::RefusesKeys
+// -----------------------------------------------------------------------------
+//
+TBool CAknToolbarItem::RefusesKeys() const
+ {
+ return iRefusesKeys;
+ }
+
+// -----------------------------------------------------------------------------
+// CAknToolbarItem::RefusesKeys
+// -----------------------------------------------------------------------------
+//
+void CAknToolbarItem::SetKeyRefuse()
+ {
+ switch ( iControlType )
+ {
+ case EEikCtEdwin: // fallback done on purpose
+ case EEikCtRichTextEditor:
+ case EEikCtSecretEd:
+ case EEikCtFileNameEd:
+ case EEikCtFolderNameEd:
+ case EEikCtFlPtEd:
+ case EEikCtFxPtEd:
+ case EEikCtTwipsEd:
+ case EEikCtNumberEditor:
+ case EEikCtRangeEditor:
+ case EEikCtTimeEditor:
+ case EEikCtDateEditor:
+ case EEikCtTimeAndDateEditor:
+ case EEikCtDurationEditor:
+ case EEikCtTimeOffsetEditor:
+ case EEikCtGlobalTextEditor:
+ case EAknCtIpFieldEditor:
+ case EEikCtRangeRefEditor:
+ case EEikCtTelephoneNumberEditor:
+ case EAknCtLocationEditor:
+ case EAknCtUnitEditor:
+ iRefusesKeys = ETrue;
+ break;
+
+ default:
+ iRefusesKeys = EFalse;
+ }
+ }