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 _FWL_DATETIMEPICKER_H 8#define _FWL_DATETIMEPICKER_H 9class CFWL_WidgetImpProperties; 10class IFWL_Widget; 11class IFWL_DateTimePickerDP; 12class IFWL_DateTimePicker; 13#define FWL_CLASS_DateTimePicker L"FWL_DATETIMEPICKER" 14#define FWL_CLASSHASH_DateTimePicker 3851176257 15#define FWL_STYLEEXT_DTP_AllowEdit (1L << 0) 16#define FWL_STYLEEXT_DTP_LongDateFormat (0L << 1) 17#define FWL_STYLEEXT_DTP_ShortDateFormat (1L << 1) 18#define FWL_STYLEEXT_DTP_TimeFormat (2L << 1) 19#define FWL_STYLEEXT_DTP_Spin (1L << 3) 20#define FWL_STYLEEXT_DTP_EditHNear (0L << 4) 21#define FWL_STYLEEXT_DTP_EditHCenter (1L << 4) 22#define FWL_STYLEEXT_DTP_EditHFar (2L << 4) 23#define FWL_STYLEEXT_DTP_EditVNear (0L << 6) 24#define FWL_STYLEEXT_DTP_EditVCenter (1L << 6) 25#define FWL_STYLEEXT_DTP_EditVFar (2L << 6) 26#define FWL_STYLEEXT_DTP_EditJustified (1L << 8) 27#define FWL_STYLEEXT_DTP_EditDistributed (2L << 8) 28#define FWL_STYLEEXT_DTP_EditHAlignMask (3L << 4) 29#define FWL_STYLEEXT_DTP_EditVAlignMask (3L << 6) 30#define FWL_STYLEEXT_DTP_EditHAlignModeMask (3L << 8) 31#define FWL_PART_DTP_Border 1 32#define FWL_PART_DTP_Edge 2 33#define FWL_PART_DTP_Background 3 34#define FWL_PART_DTP_DropDownButton 4 35#define FWL_PARTSTATE_DTP_Normal (0L << 0) 36#define FWL_PARTSTATE_DTP_Hovered (1L << 0) 37#define FWL_PARTSTATE_DTP_Pressed (2L << 0) 38#define FWL_PARTSTATE_DTP_Disabled (3L << 0) 39#define FWL_EVT_DTP_DropDown L"FWL_EVENT_DTP_DropDown" 40#define FWL_EVTHASH_DTP_DropDown 264728733 41#define FWL_EVT_DTP_CloseUp L"FWL_EVENT_DTP_CloseUp" 42#define FWL_EVTHASH_DTP_CloseUp 4280973803 43#define FWL_EVT_DTP_EditChanged L"FWL_EVENT_DTP_EditChanged" 44#define FWL_EVTHASH_DTP_EditChanged 4009610944 45#define FWL_EVT_DTP_HoverChanged L"FWL_EVENT_DTP_HoverChanged" 46#define FWL_EVTHASH_DTP_HoverChanged 686674750 47#define FWL_EVT_DTP_SelectChanged L"FWL_EVENT_DTP_SelectChanged" 48#define FWL_EVTHASH_DTP_SelectChanged 1589616858 49BEGIN_FWL_EVENT_DEF(CFWL_Event_DtpDropDown, FWL_EVTHASH_DTP_DropDown) 50END_FWL_EVENT_DEF 51BEGIN_FWL_EVENT_DEF(CFWL_Event_DtpCloseUp, FWL_EVTHASH_DTP_CloseUp) 52END_FWL_EVENT_DEF 53BEGIN_FWL_EVENT_DEF(CFWL_Event_DtpEditChanged, FWL_EVTHASH_DTP_EditChanged) 54CFX_WideString m_wsText; 55END_FWL_EVENT_DEF 56BEGIN_FWL_EVENT_DEF(CFWL_Event_DtpHoverChanged, FWL_EVTHASH_DTP_HoverChanged) 57int32_t hoverday; 58END_FWL_EVENT_DEF 59BEGIN_FWL_EVENT_DEF(CFWL_Event_DtpSelectChanged, FWL_EVTHASH_DTP_SelectChanged) 60int32_t iYear; 61int32_t iMonth; 62int32_t iDay; 63END_FWL_EVENT_DEF 64class IFWL_DateTimePickerDP : public IFWL_DataProvider { 65 public: 66 virtual FWL_ERR GetToday(IFWL_Widget* pWidget, 67 int32_t& iYear, 68 int32_t& iMonth, 69 int32_t& iDay) = 0; 70}; 71class IFWL_DateTimePicker : public IFWL_Widget { 72 public: 73 static IFWL_DateTimePicker* Create(const CFWL_WidgetImpProperties& properties, 74 IFWL_Widget* pOuter); 75 76 FWL_ERR GetCurSel(int32_t& iYear, int32_t& iMonth, int32_t& iDay); 77 FWL_ERR SetCurSel(int32_t iYear, int32_t iMonth, int32_t iDay); 78 FWL_ERR SetEditText(const CFX_WideString& wsText); 79 FWL_ERR GetEditText(CFX_WideString& wsText, 80 int32_t nStart = 0, 81 int32_t nCount = -1) const; 82 int32_t CountSelRanges(); 83 int32_t GetSelRange(int32_t nIndex, int32_t& nStart); 84 FX_BOOL CanUndo(); 85 FX_BOOL CanRedo(); 86 FX_BOOL Undo(); 87 FX_BOOL Redo(); 88 FX_BOOL CanCopy(); 89 FX_BOOL CanCut(); 90 FX_BOOL CanSelectAll(); 91 FX_BOOL Copy(CFX_WideString& wsCopy); 92 FX_BOOL Cut(CFX_WideString& wsCut); 93 FX_BOOL Paste(const CFX_WideString& wsPaste); 94 FX_BOOL SelectAll(); 95 FX_BOOL Delete(); 96 FX_BOOL DeSelect(); 97 FWL_ERR GetBBox(CFX_RectF& rect); 98 FWL_ERR SetEditLimit(int32_t nLimit); 99 FWL_ERR ModifyEditStylesEx(FX_DWORD dwStylesExAdded, 100 FX_DWORD dwStylesExRemoved); 101 102 protected: 103 IFWL_DateTimePicker(); 104}; 105#endif 106