javauis/eswt_akn/org.eclipse.ercp.swt.s60/native/inc/swthyperlink.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/swthyperlink.h	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+// SwtHyperLink.h
+
+
+#ifndef SWTHYPERLINK_H
+#define SWTHYPERLINK_H
+
+
+#include "eswtmobileextensions.h"
+#include "swtcontrolbase.h"
+
+
+class MTouchFeedback;
+
+
+/**
+ *  The class encapsulating the S60 native implementation of HyperLink.
+ *
+ *  It is a custom control that is a focusable text-only label which,
+ *  when being selected, launches an external handler application according
+ *  to the format construction parameter.
+ *
+ *  @lib eswt.dll
+ */
+NONSHARABLE_CLASS(CSwtHyperLink)
+        : public CAknControl
+        , public ASwtControlBase
+        , public MSwtHyperLink
+{
+
+// New functions
+public:
+    /**
+     * The constructor.  Note that format parameter is passed in by calling SetFormat
+     * right after the construction.
+     * @param aDisplay The Display object
+     * @param aPeer    The Java peer handle
+     * @param aParent  The parent Composite
+     * @param aStyle   Styles passed to the Java constructor (not the format)
+     * @return         New CSwtHyperLink instance
+     */
+    static CSwtHyperLink* NewL(MSwtDisplay& aDisplay,
+    TSwtPeer aPeer,
+    MSwtComposite& aParent,
+    TInt aStyle);
+    /**
+     * The destructor
+     */
+    virtual ~CSwtHyperLink();
+
+private:
+    CSwtHyperLink(MSwtDisplay& aDisplay, TSwtPeer aPeer, MSwtComposite& aParent, TInt aStyle);
+    void ConstructL();
+    void SwtHandleResourceChangeL(TInt aType);
+    void DrawText(CWindowGc& aGc,
+                  const CFont* aFont,
+                  const TDesC& aText,
+                  const TRect& aTextRect,
+                  const CGraphicsContext::TTextAlign& aAlignment) const;
+    void UpdateSkinColor();
+    void UpdateDefaultFontL();
+    void LaunchHandler();
+    TPtrC Scheme();
+
+// From base class CCoeControl
+
+public:
+    TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+    void HandleResourceChange(TInt aType);
+protected:
+    TTypeUid::Ptr   MopSupplyObject(TTypeUid aId);
+    void SizeChanged();
+    void PositionChanged();
+    void FocusChanged(TDrawNow aDrawNow);
+private:
+    void Draw(const TRect& aRect) const;
+
+// From base class MSwtControl
+
+protected:
+    CCoeControl&       CoeControl();
+    const CCoeControl& CoeControl() const;
+    void               ProcessKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
+    void               HandlePointerEventL(const TPointerEvent& aPointerEvent);
+public:
+    void               SetForegroundL(const MSwtColor* aColor);
+    TSize              ComputeSizeL(TInt aWHint, TInt aHHint);
+
+// From base class ASwtControlBase
+
+protected:
+    const MSwtFont& DefaultFont() const;
+    HBufC* MSKLabelL() const;
+    TBool IsKeyUsed(TUint aKeyCode) const;
+
+// From base class MSwtHyperLink
+
+public:
+    MSwtControl*    Control();
+    void            SetTextL(const TDesC& aText);
+    const TDesC*    GetText();
+    void            SetFormat(TInt aFormat);
+
+// Data
+private:
+    /**
+     * The hyperlink text set by HyperLink.setText in the Java API.
+     * This is returned from getText.
+     * Own.
+     */
+    RBuf iOriginalText;
+
+    /**
+     * The hyperlink text that has been formatted.
+     * Own.
+     */
+    RBuf iFormattedText;
+
+    /**
+     * The default font.
+     * Own.
+     */
+    MSwtFont* iDefaultFont;
+
+    /**
+     * Link fragment text color.
+     */
+    TRgb iLinkColor;
+    
+    /**
+     * Link fragment text color when highlighted.
+     */
+    TRgb iHighlightedLinkColor;
+
+    /**
+     * Link fragment back highlight color.
+     */
+    TRgb iHighlightColor;
+
+    /**
+     * True if currently used text color is a color set by the Java application.
+     */
+    TBool iCustomTextColor;
+
+    /**
+     * The format of the hyperlink. Textual formatting done and the handler
+     * to launch depends on this.
+     */
+    MSwtHyperLink::TFormat iFormat;
+
+    /**
+     * Feedback instance.
+     * Not own.
+     */
+    MTouchFeedback* iFeedback;
+    
+    /**
+     * True for as long as pressed by pointer.
+     * Eclipses ASwtControlBase::iPressed!
+     */
+    TBool iPressed;
+};
+
+
+#endif // SWTHYPERLINK_H
+
+
+