summaryrefslogtreecommitdiff
path: root/xfa/fxfa/app/xfa_fftextedit.h
blob: 9b73577aab3c0743c6faf0e85c43b00cc7fc420b (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
// 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;

  // IFWL_WidgetDelegate:
  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:
  uint32_t GetAlignment();
  FX_BOOL CommitData() override;
  FX_BOOL UpdateFWLData() override;
  FX_BOOL IsDataChanged() override;
  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);
  virtual ~CXFA_FFNumericEdit();
  virtual FX_BOOL LoadWidget();
  virtual void UpdateWidgetProperty();
  virtual void OnProcessEvent(CFWL_Event* pEvent);

 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);
  virtual ~CXFA_FFPasswordEdit();
  virtual FX_BOOL LoadWidget();
  virtual void UpdateWidgetProperty();

 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);
  virtual ~CXFA_FFDateTimeEdit();

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

  virtual FX_BOOL CanUndo();
  virtual FX_BOOL CanRedo();
  virtual FX_BOOL Undo();
  virtual FX_BOOL Redo();

  virtual FX_BOOL CanCopy();
  virtual FX_BOOL CanCut();
  virtual FX_BOOL CanPaste();
  virtual FX_BOOL CanSelectAll();
  virtual FX_BOOL Copy(CFX_WideString& wsCopy);
  virtual FX_BOOL Cut(CFX_WideString& wsCut);
  virtual FX_BOOL Paste(const CFX_WideString& wsPaste);
  virtual FX_BOOL SelectAll();
  virtual FX_BOOL Delete();
  virtual FX_BOOL DeSelect();

 protected:
  uint32_t GetAlignment();

  virtual FX_BOOL PtInActiveRect(FX_FLOAT fx, FX_FLOAT fy);
  virtual FX_BOOL CommitData();
  virtual FX_BOOL UpdateFWLData();
  virtual FX_BOOL IsDataChanged();

 public:
  void OnSelectChanged(IFWL_Widget* pWidget,
                       int32_t iYear,
                       int32_t iMonth,
                       int32_t iDay);
  virtual void OnProcessEvent(CFWL_Event* pEvent);
};

#endif  // XFA_FXFA_APP_XFA_FFTEXTEDIT_H_