--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/calcsoft/inc/CalcFunc.h Mon Jan 18 20:20:33 2010 +0200
@@ -0,0 +1,414 @@
+/*
+* Copyright (c) 2002 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: The Function-Map subpane class, CCalcFuncmapSubPane
+* Derived from CCoeControl.
+* CCalcFuncmapSubPane is container class of CCalcCommandButton.
+*
+*/
+
+
+#ifndef CALCFUNC_H
+#define CALCFUNC_H
+
+
+// INCLUDES
+#include <coecntrl.h>
+#include <e32property.h>
+#include <PtiDefs.h>
+
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
+// CONSTANTS
+const TInt KCountOfButtons(10); // Number of buttons
+const TInt KCountOfButtonsTouch(20); // Number of buttons for touch UI layout
+_LIT(KAllowedNumericChars, "0123456789.,");
+_LIT(KAllowedOperatorPlus, "+");
+_LIT(KAllowedOperatorMinus, "-");
+_LIT(KAllowedOperatorStar, "*");
+_LIT(KAllowedOperatorDivide, "/");
+_LIT(KAllowedOperatorEquals, "=");
+_LIT(KAllowedOperatorPercent, "%");
+_LIT(KAllowedOperatorDecimal, ".");
+const TInt KMaxNumCharsPerCase = 50;
+
+// FORWARD DECLARATIONS
+//class CCalcCommandButton;
+//Use of new AknButtons
+class CAknButton;
+class CCalcContainer;
+class CCalcAppEnv;
+class CPtiEngine;
+class CPtiQwertyKeyMappings;
+class CPtiCoreLanguage;
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+class CPtiHalfQwertyKeyMappings;
+#endif
+
+// CLASS DEFINITIONS
+
+/**
+CCalcFuncmapSubPane : 'FunctionMap Sub-Pane' class
+ : Class also derived from MCoeControlObserver to get events
+ from Avkon buttons
+*/
+class CCalcFuncmapSubPane
+ :public CCoeControl , public MCoeControlObserver
+ {
+ public:
+
+ enum TButtonTID// ButtonIDs for Touch Layout
+ {
+ ECmdTCancel = 0,
+ ECmdTSeven,
+ ECmdTFour,
+ ECmdTOne,
+ ECmdTZero,
+ ECmdTSqrt,
+ ECmdTEight,
+ ECmdTFive,
+ ECmdTTwo,
+ ECmdTSeparator,
+ ECmdTPercent,
+ ECmdTNine,
+ ECmdTSix,
+ ECmdTThree,
+ ECmdTChangeSign,
+ ECmdTDivide,
+ ECmdTMultiply,
+ ECmdTSubtract,
+ ECmdTAdd,
+ ECmdTResult,
+ ECmdTScrollUp,
+ ECmdTScrollDown
+ };
+
+
+
+ enum TButtonID // ButtonID for non touch Layout
+ {
+ EPlusButton, // +
+ EMinusButton, // -
+ EMultiplyButton, // *
+ EDivideButton, // /
+ EChangeSignButton, // +/-
+ EEqualButton, // =
+ ESqrtButton, // sqrt
+ EPercentButton, // %
+ EScrollUp, // <<
+ EScrollDown // >>
+ };
+ public: // Constructors and destructor
+ /**
+ * Two-phased constructor.
+ * @param aContainer : Pointer of CCalcContainer class
+ */
+ static CCalcFuncmapSubPane* NewL(CCalcContainer* aContainer);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCalcFuncmapSubPane();
+
+
+ public: // New functions
+ /**
+ * Redraw scroll up and down button on scrolling enable.
+ */
+ void RedrawScrollButtons();
+
+ /**
+ * Redraw ChangeSign button on ChangeSign enable.
+ * @param aEnable : Flag of ChangeSign enable
+ */
+ void SetChangeSignEnable(TBool aEnable);
+
+ /**
+ * Redraw Sqrt button on Sqrt enable.
+ * @param aEnable : Flag of SqrtEnable enable
+ */
+ void SetSqrtEnable (TBool aEnable);
+
+ /**
+ * Redraw Clear button on Clear enable.
+ * @param aEnable : Flag of ClearEnable enable
+ */
+ void SetClearKeyEnable( TBool aEnable );
+
+ /**
+ * Redraw Sqrt button on Percent enable.
+ * @param aEnable : Flag of PercentEnable enable
+ */
+ void SetPercentEnable(TBool aEnable);
+
+ /**
+ * If no key is pressed until timeout of *-key,
+ * this function is called.
+ */
+ void NotifyTimeoutL();
+
+ /**
+ * Notify any key is released. If pressed button exists.
+ * command which is releated is executed.
+ */
+ void NotifyReleaseKeyL();
+
+ /**
+ * If key other than OK-key is pressed this function is called.
+ */
+ void NotifyOtherThanOkKeyPressed();
+
+ /**
+ * Called if language is changed.
+ * Change layout according to the language.
+ */
+ void NotifyLangChange();
+
+
+ /**
+ * Called to find key pad is Active.
+ *
+ */
+ TInt IsQwertyKeypadActive();
+
+ /**
+ * Called to find Key is long Pressed.
+ *
+ */
+ TBool IsKeyLongPressed();
+
+
+ public: // Functions from base classes
+
+ /**
+ * From MCoeControlObserver.
+ * Handles events from Avkon Buttons
+ */
+ void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+ /**
+ * From CCoeControl ?member_description.
+ * @param aKeyEvent : Key event details
+ * @param aType : EEventKeyDown || EEventKey || EEventKeyUp
+ * @return EKeyWasConsumed : Key event was used
+ * EKeyWasNotConsumed : Key event was not used
+ */
+ TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+
+ /**
+ *Refresh with latest button Icons when the skin change event has occured.
+ */
+ void RefreshButtonIcons();
+
+ /**
+ * CCalcFuncmapSubPane::GetButtonBitmapControl
+ * This function is called when the size changes.
+ *
+ */
+ CAknButton* GetButtonBitmapControl(TInt aIndex); //Return iButtons
+
+ /**
+ * From CCoeControl : Handling pointer event
+ * Handles all pen input events on function pane.
+ *
+ */
+ void HandlePointerEventL
+ ( const TPointerEvent& aKeyEvent );
+ /**
+ * FunctionPaneRect
+ * Gets the layout of function pane.
+ */
+ TRect FunctionPaneRect();
+
+ /**
+ * HandleMiddleSoftKeyOREKeyOK
+ * Called to handle MSK or EKeyOk
+ */
+ void HandleMiddleSoftKeyOREKeyOKL();
+
+ /**
+ * GetChangeSignButtonState
+ * Gets the state of the Sign Button
+ */
+ TBool GetChangeSignButtonState();
+
+
+ /**
+ * GetSqrtButtonState
+ * Gets the state of the Squareroot Button
+ */
+ TBool GetSqrtButtonState();
+
+
+ /**
+ * GetSqrtButtonState
+ * Gets the state of the Percent Button
+ */
+ TBool GetPercentButtonState();
+
+ /**
+ * GetClearButtonState
+ * Gets the state of the Clear Button
+ */
+ TBool GetClearButtonState();
+
+ /**
+ * GetSelectedButtonId
+ * returns the id of current button
+ */
+ TInt GetSelectedButtonId();
+
+ /**
+ * SetHighlightButton
+ * set highlight button
+ */
+ void SetHighlightButton( TUint aOldId, TUint aNewId );
+
+ /**
+ * GetKeyboardType
+ * returns the type of keyboard
+ */
+ TInt GetKeyboardType();
+
+ private: // New functions
+ /**
+ * C++ default constructor.
+ */
+ CCalcFuncmapSubPane();
+
+ /**
+ * Second-phase constructor
+ * @param aContainer : Pointer of CCalcContainer class
+ */
+ void ConstructL(CCalcContainer* aContainer);
+
+ /**
+ * Redraw scroll-up button on scrolling enable.
+ * @param aEnable : Flag of scroll-up enable
+ */
+ void SetScrollupEnable(TBool aEnable);
+
+ /**
+ * Redraw scroll-down button on scrolling enable.
+ * @param aEnable : Flag of scroll-down enable
+ */
+ void SetScrolldownEnable(TBool aEnable);
+
+ /**
+ * Set next cursor position whwn pressing uparrow key.
+ */
+ void SetNextCursorPosForUpArrow(TInt aOldPos);
+
+ /**
+ * Set next cursor position whwn pressing downarrow key.
+ */
+ void SetNextCursorPosForDownArrow(TInt aOldPos);
+
+ /**
+ * An old highlight rectangle and
+ * a new highlight rectangle are redrawn.
+ * @param aOldId : The button chosen before
+ * @param aNewId : The button chosen newly
+ */
+ void RedrawHighlight(TUint aOldId, TUint aNewId) const;
+
+ /**
+ * Set functionmap button layout.
+ */
+ void SetLayout();
+ /**
+ * MapNumericChar.
+ */
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ TBool MapNumericCharL( TKeyEvent aKeyEvent );
+ TBool MapNumerics( TKeyEvent aKeyEvent );
+#else
+ TBool MapNumericCharL(TPtiKey aKey, TPtiTextCase aCase);
+ TBool MapNumerics(TPtiKey aKey, TPtiTextCase aCase);
+#endif
+
+ /**
+ * MapDataForChrShiftKey.
+ */
+ void MapDataForChrShiftKey( TDes& aOperators, TInt& aFirstOperator, TInt& aSecondOperator);
+
+ /**
+ * MapOperators.
+ */
+ TBool MapOperators( TUint16 aOperator, TInt& aResult);
+
+
+ private: // Functions from base classes
+ /**
+ * From CCoeControl : Return count of controls contained
+ * in a compound control.
+ * @return Count of buttons in FunctionMap Subpane
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl : Get the components of a compound control
+ * @param aIndex
+ * @return Control of argument aIndex
+ */
+ CCoeControl* ComponentControl(TInt aIndex) const;
+
+ /**
+ * From CCoeControl : This is called when control size is changed.
+ */
+ void SizeChanged();
+
+ /**
+ * From CCoeControl : This is called when control size is changed.
+ */
+ TInt CalculatingCorrectButton(const TPointerEvent& aPointerEvent);
+
+ private: // Data
+ CAknButton* iButtons[KCountOfButtonsTouch]; // Array of buttons
+ TInt iSelected; // Index of the selected button
+
+ TBool iDecimalPoint;
+
+ TUint iLastKeyCode; // The key code inputted at the last.
+ CCalcContainer* iContainer; // Pointer of CCalcContainer class
+ CCalcAppEnv* iCalcAppEnv; // Not own
+ RProperty iQwertyModeStatusProperty; // To check the Qwerty keypad active
+
+ TPtiTextCase iShiftKeyPressed;
+ CPtiEngine* iEngine;
+ CRepository* iCRKey;
+ CPtiCoreLanguage* iCoreLanguage;
+ CPtiQwertyKeyMappings* iQwertyKeyMappings;
+#ifdef RD_INTELLIGENT_TEXT_INPUT
+ CPtiHalfQwertyKeyMappings* iHalfQwertyKeyMappings;
+#endif
+
+ TInt iLanguage;
+ TInt iUiLanguage;
+ TInt iShiftKey;
+ TBool iValue;
+ TInt iCountOfButtons; //keeps track of the count of buttons
+ TInt iButtonsInRow; //Number of buttons in the row
+ TInt iButtonsInColumn; //Number of buttons in the Column
+ TBool iIsSqrtDimmed; //Holds the state of the squareroot button
+ TBool iIsPercentDimmed; //Holds the state of the percent button
+ TBool iIsChangeSignDimmed; //Checks if the change sign button is dimmed or not
+ TBool iIsOfferKeyEvent; //checks if the event on select is from Offer key or pointer
+ TBool iIsClearKeyEnabled; //Checks if the Clear button is Enabled or not
+ TBool iIsKeyLongPress; //Checks if the button is Long Pressed or not
+ TInt iKeyboardType;
+ TBool iIsShiftKeyPressed;
+ };
+
+#endif // CALCFUNC_H
+
+// End of File