summaryrefslogtreecommitdiff
path: root/xfa/src/fwl/src/basewidget/include/fwl_spinbuttonimp.h
blob: 808903c1d0ac59eabed215b8f1eb1dba5bb48347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef _FWL_SPINBUTTON_IMP_H
#define _FWL_SPINBUTTON_IMP_H
class CFWL_WidgetImp;
class CFWL_WidgetImpProperties;
class CFWL_WidgetImpDelegate;
class IFWL_Widget;
class IFWL_Timer;
class CFWL_SpinButtonImp;
class CFWL_SpinButtonImpDelegate;
class CFWL_SpinButtonImp : public CFWL_WidgetImp, public IFWL_Timer
{
public:
    CFWL_SpinButtonImp(IFWL_Widget *pOuter = NULL);
    CFWL_SpinButtonImp(const CFWL_WidgetImpProperties &properties, IFWL_Widget *pOuter = NULL);
    ~CFWL_SpinButtonImp();
    virtual FWL_ERR		GetClassName(CFX_WideString &wsClass) const;
    virtual FX_DWORD    GetClassID() const;
    virtual FWL_ERR		Initialize();
    virtual FWL_ERR		Finalize();
    virtual FWL_ERR		GetWidgetRect(CFX_RectF &rect, FX_BOOL bAutoSize = FALSE);
    virtual FWL_ERR	    Update();
    virtual FX_DWORD	HitTest(FX_FLOAT fx, FX_FLOAT fy);
    virtual FWL_ERR		DrawWidget(CFX_Graphics *pGraphics, const CFX_Matrix *pMatrix = NULL);
    virtual int32_t	Run(FWL_HTIMER hTimer);
    FWL_ERR		EnableButton(FX_BOOL bEnable, FX_BOOL bUp = TRUE);
    FX_BOOL		IsButtonEnable(FX_BOOL bUp = TRUE);
protected:
    void        DrawUpButton(CFX_Graphics *pGraphics, IFWL_ThemeProvider *pTheme, const CFX_Matrix *pMatrix);
    void        DrawDownButton(CFX_Graphics *pGraphics, IFWL_ThemeProvider *pTheme, const CFX_Matrix *pMatrix);
    CFX_RectF	m_rtClient;
    CFX_RectF	m_rtUpButton;
    CFX_RectF	m_rtDnButton;
    FX_DWORD    m_dwUpState;
    FX_DWORD    m_dwDnState;
    int32_t	m_iButtonIndex;
    FX_BOOL     m_bLButtonDwn;
    FWL_HTIMER	m_hTimer;
    friend class CFWL_SpinButtonImpDelegate;
};
class CFWL_SpinButtonImpDelegate : public CFWL_WidgetImpDelegate
{
public:
    CFWL_SpinButtonImpDelegate(CFWL_SpinButtonImp *pOwner);
    virtual int32_t	OnProcessMessage(CFWL_Message *pMessage);
    virtual FWL_ERR		OnProcessEvent(CFWL_Event *pEvent);
    virtual FWL_ERR		OnDrawWidget(CFX_Graphics *pGraphics, const CFX_Matrix *pMatrix = NULL);
protected:
    void	OnFocusChanged(CFWL_Message *pMsg, FX_BOOL bSet = TRUE);
    void	OnLButtonDown(CFWL_MsgMouse *pMsg);
    void	OnLButtonUp(CFWL_MsgMouse *pMsg);
    void	OnMouseMove(CFWL_MsgMouse *pMsg);
    void	OnMouseLeave(CFWL_MsgMouse *pMsg);
    void	OnKeyDown(CFWL_MsgKey *pMsg);
    CFWL_SpinButtonImp *m_pOwner;
};
#endif