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