diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/akncompamode/inc/akncompakb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/akncompamode/inc/akncompakb.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2007-2008 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: Compatibility mode keyboard UI component +* +*/ + + +#ifndef __AKNCOMPAKB_H__ +#define __AKNCOMPAKB_H__ + +#include + +#include "akncompautils.h" +#include "akncompasrvclient.h" +#include "akncompabutton.h" + +class CAknCompaSide; +class CAknsBasicBackgroundControlContext; +class TAknWindowComponentLayout; +class TAknLayoutScalableParameterLimits; +class CRepository; + +/** + * Compatibility mode keyboard component. + * + * The component is used by CAknAppUiBase to present a keyboard + * for compatibility mode application. + * + * @lib compamode.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS(CAknCompaKb) : public CAknControl, + public MCoeForegroundObserver + { + enum + { + EButtonsGranularity = 24, + }; + +public: // constructors and destructor + + static CAknCompaKb* NewL(TInt aCompaScreenMode, TBool aMakeVisible); + + ~CAknCompaKb(); + +public: // new functions + + void SimulateKeyPressL(TInt aScanCode, TBool aDown); + + void SetPenButtonUpL(); + + void SetButtonsUpL(); + + TBool IsForeground(); + + void DisaTransEffects(bool aDisable); + +private: // new functions + + CAknCompaKb(TInt aCompaScreenMode); + + void ConstructL(TBool aMakeVisible); + + void SkinChanged(); + + TRect RectFromLayout(const TRect& aParent, + const TAknWindowComponentLayout& aComponentLayout); + + void LayoutControl(); + + void LayoutButtonControls(); + + void LayoutButtonGrid(TRect aParentRect, TInt& aButtonCount, + TInt aRows, TInt aColumns); + + void SetSkinBackground(); + + TBool InCompaScreenMode(); +private: // from CCoeControl + + TInt CountComponentControls() const; + + CCoeControl* ComponentControl(TInt aIndex) const; + + void Draw(const TRect& aRect) const; + + void HandleResourceChange(TInt aType); + + void ActivateL(); + + void MakeVisible(TBool aVisible); + +private: // from MCoeForegroundObserver + + void HandleGainingForeground(); + void HandleLosingForeground(); + +private: // data + + TRgb iSkinColor; + CFbsBitGc* iBitGc; + + CFbsBitmapDevice* iBitmapDevice; + + TRect iCompaRect; + + // Background bitmap, owned + CFbsBitmap* iSkinBmp; + + // Background context + CAknsBasicBackgroundControlContext* iBgContext; + + TInt iCompaScreenMode; + TInt iRockerGridSize; + // Button controls. Owned + RPointerArray iButtons; + TInt iPenButtonIndex; // button array index of pen button + + // Controls to fill sides of compa-mode window + CAknCompaSide* iLeftSide; + CAknCompaSide* iRightSide; + + RAknCompaSrvSession iCompaSrvSession; + + CRepository* iThemesCenRep; // repository controlling transition effects + struct + { + bool iInEikSrv:1; // running in eikon server + bool iInAknCapSrv:1; // running in AknCap server + bool iInGlobalUiSrv:1; // running in akncapserver/aknnfysrv/eiksrv + bool iLayoutDone:1; // control size/position has been set + bool iEffectsDisa:1; // transition effects are disabled + bool iForeground:1; // application is foreground + } iFlags; + }; + +#endif // __AKNCOMPAKB_H__