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 173