Convert all line endings to LF.
[pdfium.git] / fpdfsdk / src / formfiller / FFL_Notify.cpp
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
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
25 CFFL_Notify::~CFFL_Notify()
26 {
27 }
28
29 void CFFL_Notify::BeforeNotify()
30 {
31         m_nNotifyFlag ++;
32 }
33
34
35 void CFFL_Notify::AfterNotify()
36 {
37         m_nNotifyFlag --;
38 }
39
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
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
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
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
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
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
88 FX_BOOL CFFL_Notify::OnCalculate()
89 {
90         return TRUE;
91 }
92
93 FX_BOOL CFFL_Notify::OnFormat(int iCommitKey)
94 {
95         return TRUE;
96 }
97
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
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
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
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
142 FX_BOOL CFFL_Notify::FindAAction(CPDF_AAction::AActionType eAAT,CPDF_Action & action)
143 {
144         return FALSE;
145 }
146
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
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