williamr@4: /* williamr@4: * Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: #if !defined(__EIKBTPAN_H__) williamr@4: #define __EIKBTPAN_H__ williamr@4: williamr@4: #if !defined(__EIKBTGRP_H__) williamr@4: #include williamr@4: #endif williamr@4: williamr@4: #include williamr@4: williamr@4: #if !defined(__COECOBS_H__) williamr@4: #include williamr@4: #endif williamr@4: williamr@4: #if !defined(__EIKLBBUT_H__) williamr@4: #include williamr@4: #endif williamr@4: williamr@4: #include williamr@4: williamr@4: class MEikCommandObserver; williamr@4: williamr@4: /** williamr@4: * @internal williamr@4: * Internal to Symbian williamr@4: */ williamr@4: class CEikButtonPanel : public CAknControl, public MCoeControlObserver, public MEikButtonGroup williamr@4: { williamr@4: public: // new functions williamr@4: IMPORT_C CEikButtonPanel(); williamr@4: IMPORT_C ~CEikButtonPanel(); williamr@4: IMPORT_C void ConstructL(); williamr@4: IMPORT_C void AddButtonL(CEikLabeledButton* aButton,TInt aId); williamr@4: IMPORT_C void AddButtonL(CEikLabeledButton* aButton,TInt aId, TInt aRow); williamr@4: IMPORT_C void SetHorizontal(); williamr@4: IMPORT_C TInt ButtonId(CCoeControl* aControl) const; williamr@4: IMPORT_C CEikCommandButtonBase* ButtonById(TInt aButtonId) const; williamr@4: IMPORT_C CEikLabeledButton* LabeledButtonById(TInt aButtonId) const; williamr@4: IMPORT_C void MakeButtonVisible(TInt aButtonId,TBool aVisible); williamr@4: IMPORT_C CEikCommandButtonBase* ButtonForKey(TInt aChar,TInt& aButtonId) const; williamr@4: IMPORT_C void ResetMinimumSize(); williamr@4: IMPORT_C void SetMinButtonWidth(TInt aWidth); williamr@4: IMPORT_C void SetCommandObserver(MEikCommandObserver* aCommandObserver); williamr@4: void UpdateHotKeyL(TInt aCommandId,CEikLabeledButton::TFlags aFlags,TInt aKeyCode); williamr@4: public: // from CCoeControl williamr@4: IMPORT_C void ConstructFromResourceL(TResourceReader& aReader); williamr@4: IMPORT_C TSize MinimumSize(); williamr@4: IMPORT_C void GetColorUseListL(CArrayFix& aColorUseList) const; // not available before Release 005u williamr@4: IMPORT_C void HandleResourceChange(TInt aType); // not available before Release 005u williamr@4: IMPORT_C TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); williamr@4: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@4: protected: // from CCoeControl williamr@4: IMPORT_C void WriteInternalStateL(RWriteStream& aWriteStream) const; williamr@4: public: // from MCoeControlObserver williamr@4: IMPORT_C void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); williamr@4: private: // from MEikButtonGroup williamr@4: void SetCommandL(TInt aPosition,TInt aCommandId,const TDesC* aText,const CFbsBitmap* aBitmap,const CFbsBitmap* aMask); williamr@4: void SetCommandL(TInt aPosition,TInt aResourceId); williamr@4: void SetCommandSetL(TInt aResourceId); williamr@4: void AddCommandL(TInt aPosition,TInt aCommandId,const TDesC* aText,const CFbsBitmap* aBitmap,const CFbsBitmap* aMask); williamr@4: void AddCommandToStackL(TInt aPosition,TInt aCommandId,const TDesC* aText,const CFbsBitmap* aBitmap,const CFbsBitmap* aMask); williamr@4: void AddCommandToStackL(TInt aPosition,TInt aResourceId); williamr@4: void AddCommandSetToStackL(TInt aResourceId); williamr@4: void SetDefaultCommand(TInt aCommandId); williamr@4: TSize CalcMinimumSizeL(TInt aResourceId); williamr@4: void RemoveCommandFromStack(TInt aPosition,TInt aCommandId); williamr@4: TInt CommandPos(TInt aCommandId) const; williamr@4: void DimCommand(TInt aCommandId,TBool aDimmed); williamr@4: TBool IsCommandDimmed(TInt aCommandId) const; williamr@4: void MakeCommandVisible(TInt aCommandId,TBool aVisible); williamr@4: TBool IsCommandVisible(TInt aCommandId) const; williamr@4: CCoeControl* AsControl(); williamr@4: const CCoeControl* AsControl() const; williamr@4: void SetBoundingRect(const TRect& aBoundingRect); williamr@4: void ReduceRect(TRect& aBoundingRect) const; williamr@4: CCoeControl* GroupControlById(TInt aCommandId) const; williamr@4: CEikCommandButton* GroupControlAsButton(TInt aCommandId) const; williamr@4: TInt CommandId(TInt aCommandPos) const; williamr@4: TInt ButtonCount() const; williamr@4: TUint ButtonGroupFlags() const; williamr@4: williamr@4: void SetMSKCommandObserver(MEikCommandObserver* aCommandObserver); williamr@4: void DimCommandByPosition(TInt aPosition,TBool aDimmed); williamr@4: TBool IsCommandDimmedByPosition(TInt aPosition) const; williamr@4: void MakeCommandVisibleByPosition(TInt aPosition,TBool aVisible); williamr@4: TBool IsCommandVisibleByPosition(TInt aPosition) const; williamr@4: void AnimateCommandByPosition(TInt aPosition); williamr@4: private: // from CCoeControl williamr@4: IMPORT_C void ActivateL(); williamr@4: IMPORT_C TInt CountComponentControls() const; williamr@4: IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const; williamr@4: IMPORT_C void SizeChanged(); williamr@4: IMPORT_C void Reserved_2(); williamr@4: private: williamr@4: /** williamr@4: * From CAknControl williamr@4: */ williamr@4: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@4: private: // new functions williamr@4: TInt RelativePosition(TInt aCommandPos, TInt& aGroupIndex) const; williamr@4: TBool ButtonsConsumedKeyL(TInt aCode); williamr@4: void AppendNewLineL(); williamr@4: CEikLabeledButton* LabeledButtonByPosition(TInt aPosition, TInt& aGroupIndex) const; williamr@4: CEikLabeledButton* LabeledButtonByPosition(TInt aPosition) const; williamr@4: void AdjustMarginsToFit(TInt8& aLeftBorder, TInt8& aRightBorder, TInt& aGapBetweenButtons); williamr@4: void SetButtonWidths(); williamr@4: private: williamr@4: CArrayPtrFlat* iControlGroups; williamr@4: TSize iMinSize; williamr@4: TInt iButWidth; williamr@4: TInt iMinButWidth; williamr@4: TInt iCount; // for efficiency williamr@4: MEikCommandObserver* iCommandObserver; williamr@4: TInt iSpare; williamr@4: }; williamr@4: williamr@4: #endif