• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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