uifw/AvKon/akncompamode/inc/akncompakb.h
changeset 0 2f259fa3e83a
--- /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 <AknControl.h>
+
+#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<CAknCompaButton> 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__