uifw/eikctl/src/EIKDLGTB.CPP
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/eikctl/src/EIKDLGTB.CPP	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 1997-1999 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:
+*
+*/
+
+
+#include <barsread.h>
+#include <coemain.h>
+#include <coeccntx.h>
+#include "eikdlgtb.h"
+#include <eikcmobs.h>
+#include <eikfctry.h>
+#include <eikpanic.h>
+#include <gulcolor.h>
+#include <eikenv.h>
+
+EXPORT_C CEikDialogToolBar::~CEikDialogToolBar()
+	{
+	delete iBrushAndPenContext;
+	}	
+
+EXPORT_C CEikDialogToolBar::CEikDialogToolBar()
+	{
+	__DECLARE_NAME(_S("CEikDialogToolBar"));
+	}
+
+EXPORT_C void CEikDialogToolBar::BaseConstructL()
+	{
+	__ASSERT_DEBUG(Observer(),Panic(EEikPanicDialogToolBarNoObserver));
+	CEikControlGroup::ConstructL(CEikControlGroup::EFromTopLeft,CEikControlGroup::ELayHorizontally);
+	RWindow& window=Window();
+	window.SetBackgroundColor(iEikonEnv->ControlColor(EColorDialogBackground,*this));
+	window.SetPointerGrab(ETrue);
+	window.SetShadowDisabled(ETrue);
+	EnableDragEvents();
+	iBrushAndPenContext=CCoeBrushAndPenContext::NewL();
+	iBrushAndPenContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
+	iBrushAndPenContext->SetBrushColor(iEikonEnv->ControlColor(EColorDialogBackground,*this));
+	iBrushAndPenContext->SetPenColor(iEikonEnv->ControlColor(EColorDialogText,*this));
+	SetControlContext(iBrushAndPenContext);
+	}
+
+EXPORT_C void CEikDialogToolBar::ConstructFromResourceL(TResourceReader& aReader)
+	{
+	BaseConstructL();
+	const TInt width=aReader.ReadInt16();
+	if (width)
+		SetLengthInPixels(width);
+	const TInt count=aReader.ReadInt16();
+	for (TInt ii=0;ii<count;++ii)
+		{
+		const TInt ctrlType=aReader.ReadInt16();
+		CCoeControl* ctrl=EikControlFactory::CreateByTypeL(ctrlType).iControl;
+//		if (!ctrl)
+//			ctrl=iCommandObserver->CreateCustomCommandControlL(ctrlType);
+		__ASSERT_DEBUG(ctrl, Panic(EEikPanicToolBarNullControl));
+		ctrl->SetContainerWindowL(*this);
+		ctrl->SetNonFocusing();
+		CleanupStack::PushL(ctrl);
+		const TInt id=aReader.ReadInt16();
+		const TInt length=aReader.ReadInt16();
+		TEikGroupControl groupCtrl(ctrl,id,aReader.ReadInt16(),length);
+		AddControlL(groupCtrl); //ownership now taken by array
+		CleanupStack::Pop();
+		ctrl->ConstructFromResourceL(aReader);
+		}
+	}
+
+EXPORT_C TKeyResponse CEikDialogToolBar::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
+	{
+	const TInt count=iControlArray->Count();
+	for (TInt ii=0;ii<count;ii++)
+		{
+		if ((*iControlArray)[ii].iControl->OfferKeyEventL(aKeyEvent,aType)==EKeyWasConsumed)
+			return EKeyWasConsumed;
+		}
+	return EKeyWasNotConsumed;
+	}
+
+EXPORT_C void CEikDialogToolBar::AddControlL(TEikGroupControl& aGroupControl)
+	{
+	CEikControlGroup::AddControlL(aGroupControl);
+	aGroupControl.iControl->SetObserver(this);
+	}
+
+void CEikDialogToolBar::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)
+	{
+	if (aEventType==MCoeControlObserver::EEventStateChanged)
+		{
+		iStateChangeControl=aControl;
+		ReportEventL(aEventType);
+		}
+	}
+
+EXPORT_C CCoeControl* CEikDialogToolBar::StateChangeControl() const
+	{
+	return iStateChangeControl;
+	}
+
+EXPORT_C TInt CEikDialogToolBar::StateChangeControlId() const
+	{
+	if (!iStateChangeControl)
+		return KErrNotFound;
+	return ControlId(iStateChangeControl);
+	}
+
+/**
+ * Gets the list of logical colors employed in the drawing of the control,
+ * paired with an explanation of how they are used. Appends the list to aColorUseList.
+ *
+ * @since ER5U 
+ */
+EXPORT_C void CEikDialogToolBar::GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const
+	{
+	CEikControlGroup::GetColorUseListL(aColorUseList);
+
+	TInt commonAttributes = TCoeColorUse::ESurrounds|TCoeColorUse::EActive|TCoeColorUse::ENormal|TCoeColorUse::ENeutral;
+	TCoeColorUse colorUse;
+
+	colorUse.SetLogicalColor(EColorToolbarText);
+	colorUse.SetUse(TCoeColorUse::EFore|commonAttributes);
+	aColorUseList.AppendL(colorUse);
+
+	colorUse.SetLogicalColor(EColorToolbarBackground);
+	colorUse.SetUse(TCoeColorUse::EBack|commonAttributes);
+	aColorUseList.AppendL(colorUse);
+	}
+
+/**
+ * Handles a change to the control's resources of type aType
+ * which are shared across the environment, e.g. colors or fonts.
+ *
+ * @since ER5U 
+ */
+EXPORT_C void CEikDialogToolBar::HandleResourceChange(TInt aType)
+	{
+	CEikControlGroup::HandleResourceChange(aType);
+
+	if(aType==KEikColorResourceChange)
+		{
+		iBrushAndPenContext->SetBrushColor(iEikonEnv->ControlColor(EColorToolbarBackground,*this));
+		iBrushAndPenContext->SetPenColor(iEikonEnv->ControlColor(EColorToolbarText,*this));
+		Window().SetBackgroundColor(iEikonEnv->ControlColor(EColorToolbarBackground,*this));
+		}
+	}