javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swtbutton.h
branchRCL_3
changeset 19 04becd199f91
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swtbutton.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,247 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Nokia Corporation - S60 implementation
+ *******************************************************************************/
+
+
+#ifndef SWTBUTTON_H
+#define SWTBUTTON_H
+
+
+#include <AknIconUtils.h>
+#include "swtcontrolbase.h"
+
+
+class CSwtButtonProxy;
+class CSwtFont;
+#ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+class MTouchFeedback;
+#endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+
+/**
+ * CSwtButton
+ * @lib eswt
+ */
+NONSHARABLE_CLASS(CSwtButton)
+        : public CAknControl
+        , public ASwtControlBase
+        , public MSwtButton
+        , public MCoeControlObserver
+{
+// Own methods
+public:
+    /**
+     * Two phase constructor
+     * @param aDisplay  parent display
+     * @param aPeer     java peer of this class
+     * @param aParent   composite parent
+     * @param aStyle    control style
+     * @return pointer to an object of this class
+     */
+    static CSwtButton* NewL(
+        MSwtDisplay& aDisplay,
+        TSwtPeer aPeer,
+        MSwtComposite& aParent,
+        TInt aStyle);
+
+protected:
+    /**
+     * First phase constructor.
+     * @param aDisplay  parent display
+     * @param aPeer     java peer of this class
+     * @param aParent   composite parent
+     * @param aStyle    control style
+     */
+    CSwtButton(
+        MSwtDisplay& aDisplay,
+        TSwtPeer aPeer,
+        MSwtComposite& aParent,
+        TInt aStyle);
+
+    /**
+     * Destructor
+     */
+    ~CSwtButton();
+
+    /**
+     * Second phase constructor
+     */
+    void ConstructL();
+
+private:
+    /**
+     * Create button with a text.
+     * @param aText the text to set.
+     */
+    void CreateButtonL(const TDesC& aText);
+
+    /**
+     * Change the button state (selected or not).
+     * @param aState the new state.
+     */
+    void ChangeStateL(TBool aState);
+
+    /**
+     * Create the button icon (selected or not, inactive)
+     * according with its state.
+     * @param aState the button state.
+     * @param aStyle the button style (Only can be check or radio).
+     * @return pointer to icon
+     */
+    CGulIcon* CreateCheckOrRadioIconL(TBool aState, TInt aStyle) const;
+
+    /**
+     * Change the button icon (for check or radio styles) according with its state.
+     * @param aState the button state.
+     */
+    void ChangeCheckOrRadioIconL(TBool aState);
+
+    /**
+     * Set size on a icon.
+     * @param aIcon The icon.
+     * @param aSize The size.
+     * @param aScaleMode The applied scale mode.
+     */
+    void SetIconSize(
+        const CGulIcon* aIcon,
+        const TSize& aSize,
+        TScaleMode aScaleMode = EAspectRatioPreserved) const;
+
+    /**
+     * Get the size of icon for CHECK or RADIO style.
+     * @param aSize the returned size of icon.
+     */
+    void GetSizeOfCheckOrRadioIcon(TSize& aSize) const;
+
+    /**
+     * Update the control size.
+     */
+    void UpdateControlSize();
+
+    /**
+     * Resource change leaving helper
+     */
+    void SwtHandleResourceChangeL(TInt aType);
+
+    /**
+     * Update default font.
+     */
+    void RetrieveDefaultFontL();
+
+    void ProcessFontUpdate();
+    
+#ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+    /**
+     * Returns ETrue when tactile feedback is needed on touch down
+     */
+    TBool IsFeedbackOnTouchDownNeeded(
+            const TPointerEvent& aPointerEvent) const;
+
+    /**
+     * Returns ETrue when tactile feedback is needed on touch release
+     */
+    TBool IsFeedbackOnTouchReleaseNeeded(
+            const TPointerEvent& aPointerEvent) const;
+#endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+
+// From CCoeControl
+public:
+    CCoeControl* ComponentControl(TInt aIndex) const;
+    TInt CountComponentControls() const;
+    void MakeVisible(TBool aVisible);
+    void SetDimmed(TBool aDimmed);
+    TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+    void HandleResourceChange(TInt aType);
+
+protected:
+    void PositionChanged();
+    void SizeChanged();
+    void FocusChanged(TDrawNow aDrawNow);
+    TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+// From ASwtControlBase
+public:
+    void SetFontL(const MSwtFont* aFont);
+    void SetForegroundL(const MSwtColor* aColor);
+    HBufC* MSKLabelL() const;
+protected:
+    const MSwtFont& DefaultFont() const;
+
+// From MSwtControl
+public:
+    CCoeControl& CoeControl();
+    const CCoeControl& CoeControl() const;
+    void ProcessKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+#ifdef RD_SCALABLE_UI_V2
+    void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+#endif // RD_SCALABLE_UI_V2
+    TBool IsKeyUsed(TUint aKeyCode) const;
+    TSize ComputeSizeL(TInt aWHint, TInt aHHint);
+    MSwtButton* ButtonInterface();
+    TInt FocusBackgroundPolicy() const;
+
+// From MSwtButton
+public:
+    MSwtControl* Control();
+    TBool GetSelection() const;
+    void SetSelection(TBool aState);
+    TInt GetAlignment() const;
+    void SetAlignment(TInt aAlignment);
+    void SetImageL(const MSwtImage* aImage);
+    void SetTextL(const TDesC& aText);
+    void SetDefault(TBool aDefault);
+    TBool IsDefault() const;
+    void ClickL();
+
+// From MCoeControlObserver
+public:
+    void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
+
+// Data
+private:
+    /**
+     * The button.
+     * Own
+     */
+    CSwtButtonProxy* iButton;
+
+    /**
+     * The button image. May be NULL.
+     * Own
+     */
+    const MSwtImage* iImage;
+
+    /**
+     * The default font of text (NULL if no text set).
+     * Own
+     */
+    MSwtFont* iDefaultFont;
+
+    /**
+     * Informs if the button is set to default.
+     */
+    TBool iIsDefault;
+
+    /**
+     * Informs if the button is selected.
+     */
+    TBool iSelected;
+
+    /**
+     * Icon for CHECK or RADIO styles.
+     */
+    CGulIcon* iCustomIcon;
+    CSwtFont* iDupFont;
+
+#ifdef RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+    MTouchFeedback *iFeedback;
+#endif //RD_JAVA_ADVANCED_TACTILE_FEEDBACK
+};
+
+#endif // SWTBUTTON_H