summaryrefslogtreecommitdiff
path: root/xfa/fxfa/app/xfa_fftextedit.h
blob: d7c666743551428fdb2e4f829bec6c33dfd2d72d (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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// 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 XFA_FXFA_APP_XFA_FFTEXTEDIT_H_
#define XFA_FXFA_APP_XFA_FFTEXTEDIT_H_

#include <vector>

#include "xfa/fxfa/app/xfa_fffield.h"

class CXFA_FFTextEdit : public CXFA_FFField {
 public:
  CXFA_FFTextEdit(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc);
  ~CXFA_FFTextEdit() override;

  // CXFA_FFField
  FX_BOOL LoadWidget() override;
  void UpdateWidgetProperty() override;
  FX_BOOL OnLButtonDown(uint32_t dwFlags, FX_FLOAT fx, FX_FLOAT fy) override;
  FX_BOOL OnRButtonDown(uint32_t dwFlags, FX_FLOAT fx, FX_FLOAT fy) override;
  FX_BOOL OnRButtonUp(uint32_t dwFlags, FX_FLOAT fx, FX_FLOAT fy) override;
  FX_BOOL OnSetFocus(CXFA_FFWidget* pOldWidget) override;
  FX_BOOL OnKillFocus(CXFA_FFWidget* pNewWidget) override;
  FX_BOOL CanUndo() override;
  FX_BOOL CanRedo() override;
  FX_BOOL Undo() override;
  FX_BOOL Redo() override;
  FX_BOOL CanCopy() override;
  FX_BOOL CanCut() override;
  FX_BOOL CanPaste() override;
  FX_BOOL CanSelectAll() override;
  FX_BOOL Copy(CFX_WideString& wsCopy) override;
  FX_BOOL Cut(CFX_WideString& wsCut) override;
  FX_BOOL Paste(const CFX_WideString& wsPaste) override;
  FX_BOOL SelectAll() override;
  FX_BOOL Delete() override;
  FX_BOOL DeSelect() override;
  FX_BOOL GetSuggestWords(CFX_PointF pointf,
                          std::vector<CFX_ByteString>& sSuggest) override;
  FX_BOOL ReplaceSpellCheckWord(CFX_PointF pointf,
                                const CFX_ByteStringC& bsReplace) override;
  void OnProcessMessage(CFWL_Message* pMessage) override;
  void OnProcessEvent(CFWL_Event* pEvent) override;
  void OnDrawWidget(CFX_Graphics* pGraphics,
                    const CFX_Matrix* pMatrix = NULL) override;

  void OnTextChanged(IFWL_Widget* pWidget,
                     const CFX_WideString& wsChanged,
                     const CFX_WideString& wsPrevText);
  void OnTextFull(IFWL_Widget* pWidget);
  FX_BOOL CheckWord(const CFX_ByteStringC& sWord);
  FX_BOOL GetSuggestWords(const CFX_ByteStringC& sWord,
                          std::vector<CFX_ByteString>& sSuggest);

 protected:
  FX_BOOL CommitData() override;
  FX_BOOL UpdateFWLData() override;
  FX_BOOL IsDataChanged() override;

  uint32_t GetAlignment();
  void ValidateNumberField(const CFX_WideString& wsText);

  IFWL_WidgetDelegate* m_pOldDelegate;
};

class CXFA_FFNumericEdit : public CXFA_FFTextEdit {
 public:
  CXFA_FFNumericEdit(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc);
  ~CXFA_FFNumericEdit() override;

  // CXFA_FFTextEdit
  FX_BOOL LoadWidget() override;
  void UpdateWidgetProperty() override;
  void OnProcessEvent(CFWL_Event* pEvent) override;

 public:
  FX_BOOL OnValidate(IFWL_Widget* pWidget, CFX_WideString& wsText);
};

class CXFA_FFPasswordEdit : public CXFA_FFTextEdit {
 public:
  CXFA_FFPasswordEdit(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc);
  ~CXFA_FFPasswordEdit() override;

  // CXFA_FFTextEdit
  FX_BOOL LoadWidget() override;
  void UpdateWidgetProperty() override;

 protected:
};

enum XFA_DATETIMETYPE {
  XFA_DATETIMETYPE_Date = 0,
  XFA_DATETIMETYPE_Time,
  XFA_DATETIMETYPE_DateAndTime
};

class CXFA_FFDateTimeEdit : public CXFA_FFTextEdit {
 public:
  CXFA_FFDateTimeEdit(CXFA_FFPageView* pPageView, CXFA_WidgetAcc* pDataAcc);
  ~CXFA_FFDateTimeEdit() override;

  // CXFA_FFTextEdit
  FX_BOOL GetBBox(CFX_RectF& rtBox,
                  uint32_t dwStatus,
                  FX_BOOL bDrawFocus = FALSE) override;
  FX_BOOL LoadWidget() override;
  void UpdateWidgetProperty() override;

  FX_BOOL CanUndo() override;
  FX_BOOL CanRedo() override;
  FX_BOOL Undo() override;
  FX_BOOL Redo() override;
  FX_BOOL CanCopy() override;
  FX_BOOL CanCut() override;
  FX_BOOL CanPaste() override;
  FX_BOOL CanSelectAll() override;
  FX_BOOL Copy(CFX_WideString& wsCopy) override;
  FX_BOOL Cut(CFX_WideString& wsCut) override;
  FX_BOOL Paste(const CFX_WideString& wsPaste) override;
  FX_BOOL SelectAll() override;
  FX_BOOL Delete() override;
  FX_BOOL DeSelect() override;
  void OnProcessEvent(CFWL_Event* pEvent) override;

  void OnSelectChanged(IFWL_Widget* pWidget,
                       int32_t iYear,
                       int32_t iMonth,
                       int32_t iDay);

 protected:
  FX_BOOL PtInActiveRect(FX_FLOAT fx, FX_FLOAT fy) override;
  FX_BOOL CommitData() override;
  FX_BOOL UpdateFWLData() override;
  FX_BOOL IsDataChanged() override;

  uint32_t GetAlignment();
};

#endif  // XFA_FXFA_APP_XFA_FFTEXTEDIT_H_