cfwl_spinbutton.h revision 5ae9d0c6fd838a2967cca72aa5751b51dadc2769
1// Copyright 2014 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7#ifndef XFA_FWL_CFWL_SPINBUTTON_H_ 8#define XFA_FWL_CFWL_SPINBUTTON_H_ 9 10#include <memory> 11 12#include "xfa/fwl/cfwl_timer.h" 13#include "xfa/fwl/cfwl_widget.h" 14#include "xfa/fxfa/cxfa_eventparam.h" 15 16#define FWL_STYLEEXE_SPB_Vert (1L << 0) 17 18class CFWL_MessageMouse; 19class CFWL_WidgetProperties; 20 21class CFWL_SpinButton : public CFWL_Widget { 22 public: 23 CFWL_SpinButton(const CFWL_App* app, 24 std::unique_ptr<CFWL_WidgetProperties> properties); 25 ~CFWL_SpinButton() override; 26 27 // CFWL_Widget 28 FWL_Type GetClassID() const override; 29 void Update() override; 30 FWL_WidgetHit HitTest(const CFX_PointF& point) override; 31 void DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) override; 32 void OnProcessMessage(CFWL_Message* pMessage) override; 33 void OnDrawWidget(CFX_Graphics* pGraphics, 34 const CFX_Matrix* pMatrix) override; 35 36 private: 37 class Timer : public CFWL_Timer { 38 public: 39 explicit Timer(CFWL_SpinButton* pToolTip); 40 ~Timer() override {} 41 42 void Run(CFWL_TimerInfo* pTimerInfo) override; 43 }; 44 friend class CFWL_SpinButton::Timer; 45 46 void DisableButton(); 47 bool IsUpButtonEnabled(); 48 bool IsDownButtonEnabled(); 49 void DrawUpButton(CFX_Graphics* pGraphics, 50 IFWL_ThemeProvider* pTheme, 51 const CFX_Matrix* pMatrix); 52 void DrawDownButton(CFX_Graphics* pGraphics, 53 IFWL_ThemeProvider* pTheme, 54 const CFX_Matrix* pMatrix); 55 void OnFocusChanged(CFWL_Message* pMsg, bool bSet); 56 void OnLButtonDown(CFWL_MessageMouse* pMsg); 57 void OnLButtonUp(CFWL_MessageMouse* pMsg); 58 void OnMouseMove(CFWL_MessageMouse* pMsg); 59 void OnMouseLeave(CFWL_MessageMouse* pMsg); 60 void OnKeyDown(CFWL_MessageKey* pMsg); 61 62 CFX_RectF m_rtClient; 63 CFX_RectF m_rtUpButton; 64 CFX_RectF m_rtDnButton; 65 uint32_t m_dwUpState; 66 uint32_t m_dwDnState; 67 int32_t m_iButtonIndex; 68 bool m_bLButtonDwn; 69 CFWL_TimerInfo* m_pTimerInfo; 70 CFWL_SpinButton::Timer m_Timer; 71}; 72 73#endif // XFA_FWL_CFWL_SPINBUTTON_H_ 74