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 // #include "../../include/formfiller/FormFiller.h"
8 #include "../../include/formfiller/FFL_FormFiller.h"
9 #include "../../include/formfiller/FFL_Notify.h"
10 // #include "../../include/formfiller/FFL_ComboBox.h"
11 // #include "../../include/formfiller/FFL_Module.h"
12
13 /* -------------------------------- CFFL_Notify ------------------------------ */
14
15 //#pragma warning(disable: 4800)
16
CFFL_Notify(CFFL_FormFiller * pFormFiller)17 CFFL_Notify::CFFL_Notify(CFFL_FormFiller * pFormFiller) :
18 m_pFormFiller(pFormFiller),
19 m_bDoActioning(FALSE),
20 m_nNotifyFlag(0)
21 {
22 ASSERT(m_pFormFiller != NULL);
23 }
24
~CFFL_Notify()25 CFFL_Notify::~CFFL_Notify()
26 {
27 }
28
BeforeNotify()29 void CFFL_Notify::BeforeNotify()
30 {
31 m_nNotifyFlag ++;
32 }
33
34
AfterNotify()35 void CFFL_Notify::AfterNotify()
36 {
37 m_nNotifyFlag --;
38 }
39
OnMouseUp(FX_BOOL & bExit)40 FX_BOOL CFFL_Notify::OnMouseUp(FX_BOOL & bExit)
41 {
42 BeforeNotify();
43 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::ButtonUp, bExit);
44 AfterNotify();
45 return bRet;
46 }
47
OnMouseDown(FX_BOOL & bExit)48 FX_BOOL CFFL_Notify::OnMouseDown(FX_BOOL & bExit)
49 {
50 BeforeNotify();
51 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::ButtonDown, bExit);
52 AfterNotify();
53 return bRet;
54 }
55
OnMouseEnter(FX_BOOL & bExit)56 FX_BOOL CFFL_Notify::OnMouseEnter(FX_BOOL & bExit)
57 {
58 BeforeNotify();
59 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::CursorEnter, bExit);
60 AfterNotify();
61 return bRet;
62 }
63
OnMouseExit(FX_BOOL & bExit)64 FX_BOOL CFFL_Notify::OnMouseExit(FX_BOOL & bExit)
65 {
66 BeforeNotify();
67 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::CursorExit, bExit);
68 AfterNotify();
69 return bRet;
70 }
71
OnSetFocus(FX_BOOL & bExit)72 FX_BOOL CFFL_Notify::OnSetFocus(FX_BOOL & bExit)
73 {
74 BeforeNotify();
75 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::GetFocus, bExit);
76 AfterNotify();
77 return bRet;
78 }
79
OnKillFocus(FX_BOOL & bExit)80 FX_BOOL CFFL_Notify::OnKillFocus(FX_BOOL & bExit)
81 {
82 BeforeNotify();
83 FX_BOOL bRet = FALSE;//DoAAction(CPDF_AAction::AActionType::LoseFocus, bExit);
84 AfterNotify();
85 return bRet;
86 }
87
OnCalculate()88 FX_BOOL CFFL_Notify::OnCalculate()
89 {
90 return TRUE;
91 }
92
OnFormat(int iCommitKey)93 FX_BOOL CFFL_Notify::OnFormat(int iCommitKey)
94 {
95 return TRUE;
96 }
97
OnKeyStroke(CPDF_FormField * pFormField,int nCommitKey,CFX_WideString & strValue,CFX_WideString & strChange,const CFX_WideString & strChangeEx,FX_BOOL bKeyDown,FX_BOOL bModifier,FX_BOOL bShift,FX_BOOL bWillCommit,FX_BOOL bFieldFull,int & nSelStart,int & nSelEnd,FX_BOOL & bRC)98 FX_BOOL CFFL_Notify::OnKeyStroke(CPDF_FormField* pFormField, int nCommitKey, CFX_WideString& strValue, CFX_WideString& strChange,
99 const CFX_WideString& strChangeEx, FX_BOOL bKeyDown, FX_BOOL bModifier,
100 FX_BOOL bShift, FX_BOOL bWillCommit, FX_BOOL bFieldFull,
101 int& nSelStart, int& nSelEnd, FX_BOOL& bRC)
102 {
103 return TRUE;
104 }
105
OnValidate(CPDF_FormField * pFormField,CFX_WideString & strValue,CFX_WideString & strChange,const CFX_WideString & strChangeEx,FX_BOOL bKeyDown,FX_BOOL bModifier,FX_BOOL bShift,FX_BOOL & bRC)106 FX_BOOL CFFL_Notify::OnValidate(CPDF_FormField* pFormField, CFX_WideString& strValue, CFX_WideString & strChange,
107 const CFX_WideString& strChangeEx, FX_BOOL bKeyDown, FX_BOOL bModifier,
108 FX_BOOL bShift, FX_BOOL & bRC)
109 {
110 return TRUE;
111 }
112
DoAAction(CPDF_AAction::AActionType eAAT,FX_BOOL & bExit)113 FX_BOOL CFFL_Notify::DoAAction(CPDF_AAction::AActionType eAAT, FX_BOOL & bExit)
114 {
115 if (this->m_bDoActioning) return FALSE;
116
117 CPDF_Action action;
118 if (!FindAAction(eAAT,action)) return FALSE;
119
120 this->m_bDoActioning = TRUE;
121 ExecuteActionTree(eAAT,action,bExit);
122 this->m_bDoActioning = FALSE;
123 return TRUE;
124 }
125
ExecuteActionTree(CPDF_AAction::AActionType eAAT,CPDF_Action & action,FX_BOOL & bExit)126 FX_BOOL CFFL_Notify::ExecuteActionTree(CPDF_AAction::AActionType eAAT,CPDF_Action & action, FX_BOOL& bExit)
127 {
128 if (!ExecuteAction(eAAT,action,bExit)) return FALSE;
129 if (bExit) return TRUE;
130
131 for (FX_INT32 i=0,sz=action.GetSubActionsCount(); i<sz; i++)
132 {
133 CPDF_Action subaction = action.GetSubAction(i);
134 if (!ExecuteActionTree(eAAT,subaction,bExit)) return FALSE;
135 if (bExit) break;
136 }
137
138 return TRUE;
139 }
140
141
FindAAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action)142 FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action)
143 {
144 return FALSE;
145 }
146
FindAAction(CPDF_AAction aaction,CPDF_AAction::AActionType eAAT,CPDF_Action & action)147 FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction aaction,CPDF_AAction::AActionType eAAT,CPDF_Action & action)
148 {
149 CPDF_Action MyAction;
150
151 if (aaction.ActionExist(eAAT))
152 {
153 MyAction = aaction.GetAction(eAAT);
154 }
155 else
156 return FALSE;
157
158
159 if (MyAction.GetType() == CPDF_Action::Unknown)
160 return FALSE;
161
162 action = MyAction;
163
164 return TRUE;
165 }
166
ExecuteAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action,FX_BOOL & bExit)167 FX_BOOL CFFL_Notify::ExecuteAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action,FX_BOOL& bExit)
168 {
169 return FALSE;
170 }
171 //#pragma warning(default: 4800)
172
173