| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/app/xfa_fftextedit.h" | 7 #include "xfa/fxfa/app/xfa_fftextedit.h" |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 dwExtendedStyle |= FWL_STYLEEXT_EDT_AutoVScroll; | 68 dwExtendedStyle |= FWL_STYLEEXT_EDT_AutoVScroll; |
| 69 } | 69 } |
| 70 } else if (m_pDataAcc->GetHorizontalScrollPolicy() != XFA_ATTRIBUTEENUM_Off) { | 70 } else if (m_pDataAcc->GetHorizontalScrollPolicy() != XFA_ATTRIBUTEENUM_Off) { |
| 71 dwExtendedStyle |= FWL_STYLEEXT_EDT_AutoHScroll; | 71 dwExtendedStyle |= FWL_STYLEEXT_EDT_AutoHScroll; |
| 72 } | 72 } |
| 73 if (m_pDataAcc->GetAccess() != XFA_ATTRIBUTEENUM_Open || | 73 if (m_pDataAcc->GetAccess() != XFA_ATTRIBUTEENUM_Open || |
| 74 !m_pDataAcc->GetDoc()->GetXFADoc()->IsInteractive()) { | 74 !m_pDataAcc->GetDoc()->GetXFADoc()->IsInteractive()) { |
| 75 dwExtendedStyle |= FWL_STYLEEXT_EDT_ReadOnly; | 75 dwExtendedStyle |= FWL_STYLEEXT_EDT_ReadOnly; |
| 76 dwExtendedStyle |= FWL_STYLEEXT_EDT_MultiLine; | 76 dwExtendedStyle |= FWL_STYLEEXT_EDT_MultiLine; |
| 77 } | 77 } |
| 78 XFA_ELEMENT eType = XFA_ELEMENT_UNKNOWN; | 78 XFA_Element eType = XFA_Element::Unknown; |
| 79 int32_t iMaxChars = m_pDataAcc->GetMaxChars(eType); | 79 int32_t iMaxChars = m_pDataAcc->GetMaxChars(eType); |
| 80 if (eType == XFA_ELEMENT_ExData) { | 80 if (eType == XFA_Element::ExData) { |
| 81 iMaxChars = 0; | 81 iMaxChars = 0; |
| 82 } | 82 } |
| 83 int32_t iNumCells = m_pDataAcc->GetNumberOfCells(); | 83 int32_t iNumCells = m_pDataAcc->GetNumberOfCells(); |
| 84 if (iNumCells == 0) { | 84 if (iNumCells == 0) { |
| 85 dwExtendedStyle |= FWL_STYLEEXT_EDT_CombText; | 85 dwExtendedStyle |= FWL_STYLEEXT_EDT_CombText; |
| 86 pWidget->SetLimit(iMaxChars > 0 ? iMaxChars : 1); | 86 pWidget->SetLimit(iMaxChars > 0 ? iMaxChars : 1); |
| 87 } else if (iNumCells > 0) { | 87 } else if (iNumCells > 0) { |
| 88 dwExtendedStyle |= FWL_STYLEEXT_EDT_CombText; | 88 dwExtendedStyle |= FWL_STYLEEXT_EDT_CombText; |
| 89 pWidget->SetLimit(iNumCells); | 89 pWidget->SetLimit(iNumCells); |
| 90 } else { | 90 } else { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 ((CFWL_Edit*)m_pNormalWidget)->GetText(wsText); | 182 ((CFWL_Edit*)m_pNormalWidget)->GetText(wsText); |
| 183 if (m_pDataAcc->SetValue(wsText, XFA_VALUEPICTURE_Edit)) { | 183 if (m_pDataAcc->SetValue(wsText, XFA_VALUEPICTURE_Edit)) { |
| 184 m_pDataAcc->UpdateUIDisplay(this); | 184 m_pDataAcc->UpdateUIDisplay(this); |
| 185 return TRUE; | 185 return TRUE; |
| 186 } | 186 } |
| 187 ValidateNumberField(wsText); | 187 ValidateNumberField(wsText); |
| 188 return FALSE; | 188 return FALSE; |
| 189 } | 189 } |
| 190 void CXFA_FFTextEdit::ValidateNumberField(const CFX_WideString& wsText) { | 190 void CXFA_FFTextEdit::ValidateNumberField(const CFX_WideString& wsText) { |
| 191 CXFA_WidgetAcc* pAcc = GetDataAcc(); | 191 CXFA_WidgetAcc* pAcc = GetDataAcc(); |
| 192 if (pAcc && pAcc->GetUIType() == XFA_ELEMENT_NumericEdit) { | 192 if (pAcc && pAcc->GetUIType() == XFA_Element::NumericEdit) { |
| 193 IXFA_AppProvider* pAppProvider = GetApp()->GetAppProvider(); | 193 IXFA_AppProvider* pAppProvider = GetApp()->GetAppProvider(); |
| 194 if (pAppProvider) { | 194 if (pAppProvider) { |
| 195 CFX_WideString wsTitle; | 195 CFX_WideString wsTitle; |
| 196 pAppProvider->LoadString(XFA_IDS_AppName, wsTitle); | 196 pAppProvider->LoadString(XFA_IDS_AppName, wsTitle); |
| 197 CFX_WideString wsError; | 197 CFX_WideString wsError; |
| 198 pAppProvider->LoadString(XFA_IDS_ValidateNumberError, wsError); | 198 pAppProvider->LoadString(XFA_IDS_ValidateNumberError, wsError); |
| 199 CFX_WideString wsSomField; | 199 CFX_WideString wsSomField; |
| 200 pAcc->GetNode()->GetSOMExpression(wsSomField); | 200 pAcc->GetNode()->GetSOMExpression(wsSomField); |
| 201 CFX_WideString wsMessage; | 201 CFX_WideString wsMessage; |
| 202 wsMessage.Format(wsError.c_str(), wsText.c_str(), wsSomField.c_str()); | 202 wsMessage.Format(wsError.c_str(), wsText.c_str(), wsSomField.c_str()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 } | 246 } |
| 247 FX_BOOL CXFA_FFTextEdit::UpdateFWLData() { | 247 FX_BOOL CXFA_FFTextEdit::UpdateFWLData() { |
| 248 if (!m_pNormalWidget) { | 248 if (!m_pNormalWidget) { |
| 249 return FALSE; | 249 return FALSE; |
| 250 } | 250 } |
| 251 XFA_VALUEPICTURE eType = XFA_VALUEPICTURE_Display; | 251 XFA_VALUEPICTURE eType = XFA_VALUEPICTURE_Display; |
| 252 if (IsFocused()) { | 252 if (IsFocused()) { |
| 253 eType = XFA_VALUEPICTURE_Edit; | 253 eType = XFA_VALUEPICTURE_Edit; |
| 254 } | 254 } |
| 255 FX_BOOL bUpdate = FALSE; | 255 FX_BOOL bUpdate = FALSE; |
| 256 if (m_pDataAcc->GetUIType() == XFA_ELEMENT_TextEdit && | 256 if (m_pDataAcc->GetUIType() == XFA_Element::TextEdit && |
| 257 m_pDataAcc->GetNumberOfCells() < 0) { | 257 m_pDataAcc->GetNumberOfCells() < 0) { |
| 258 XFA_ELEMENT elementType = XFA_ELEMENT_UNKNOWN; | 258 XFA_Element elementType = XFA_Element::Unknown; |
| 259 int32_t iMaxChars = m_pDataAcc->GetMaxChars(elementType); | 259 int32_t iMaxChars = m_pDataAcc->GetMaxChars(elementType); |
| 260 if (elementType == XFA_ELEMENT_ExData) { | 260 if (elementType == XFA_Element::ExData) { |
| 261 iMaxChars = eType == XFA_VALUEPICTURE_Edit ? iMaxChars : 0; | 261 iMaxChars = eType == XFA_VALUEPICTURE_Edit ? iMaxChars : 0; |
| 262 } | 262 } |
| 263 if (((CFWL_Edit*)m_pNormalWidget)->GetLimit() != iMaxChars) { | 263 if (((CFWL_Edit*)m_pNormalWidget)->GetLimit() != iMaxChars) { |
| 264 ((CFWL_Edit*)m_pNormalWidget)->SetLimit(iMaxChars); | 264 ((CFWL_Edit*)m_pNormalWidget)->SetLimit(iMaxChars); |
| 265 bUpdate = TRUE; | 265 bUpdate = TRUE; |
| 266 } | 266 } |
| 267 } | 267 } |
| 268 if (m_pDataAcc->GetUIType() == XFA_ELEMENT_Barcode) { | 268 if (m_pDataAcc->GetUIType() == XFA_Element::Barcode) { |
| 269 int32_t nDataLen = 0; | 269 int32_t nDataLen = 0; |
| 270 if (eType == XFA_VALUEPICTURE_Edit) | 270 if (eType == XFA_VALUEPICTURE_Edit) |
| 271 m_pDataAcc->GetBarcodeAttribute_DataLength(nDataLen); | 271 m_pDataAcc->GetBarcodeAttribute_DataLength(nDataLen); |
| 272 static_cast<CFWL_Edit*>(m_pNormalWidget)->SetLimit(nDataLen); | 272 static_cast<CFWL_Edit*>(m_pNormalWidget)->SetLimit(nDataLen); |
| 273 bUpdate = TRUE; | 273 bUpdate = TRUE; |
| 274 } | 274 } |
| 275 CFX_WideString wsText; | 275 CFX_WideString wsText; |
| 276 m_pDataAcc->GetValue(wsText, eType); | 276 m_pDataAcc->GetValue(wsText, eType); |
| 277 CFX_WideString wsOldText; | 277 CFX_WideString wsOldText; |
| 278 ((CFWL_Edit*)m_pNormalWidget)->GetText(wsOldText); | 278 ((CFWL_Edit*)m_pNormalWidget)->GetText(wsOldText); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 FX_BOOL CXFA_FFTextEdit::Delete() { | 330 FX_BOOL CXFA_FFTextEdit::Delete() { |
| 331 return ((CFWL_Edit*)m_pNormalWidget)->Delete(); | 331 return ((CFWL_Edit*)m_pNormalWidget)->Delete(); |
| 332 } | 332 } |
| 333 FX_BOOL CXFA_FFTextEdit::DeSelect() { | 333 FX_BOOL CXFA_FFTextEdit::DeSelect() { |
| 334 return ((CFWL_Edit*)m_pNormalWidget)->ClearSelections() == | 334 return ((CFWL_Edit*)m_pNormalWidget)->ClearSelections() == |
| 335 FWL_Error::Succeeded; | 335 FWL_Error::Succeeded; |
| 336 } | 336 } |
| 337 FX_BOOL CXFA_FFTextEdit::GetSuggestWords( | 337 FX_BOOL CXFA_FFTextEdit::GetSuggestWords( |
| 338 CFX_PointF pointf, | 338 CFX_PointF pointf, |
| 339 std::vector<CFX_ByteString>& sSuggest) { | 339 std::vector<CFX_ByteString>& sSuggest) { |
| 340 if (m_pDataAcc->GetUIType() != XFA_ELEMENT_TextEdit) { | 340 if (m_pDataAcc->GetUIType() != XFA_Element::TextEdit) { |
| 341 return FALSE; | 341 return FALSE; |
| 342 } | 342 } |
| 343 FWLToClient(pointf.x, pointf.y); | 343 FWLToClient(pointf.x, pointf.y); |
| 344 return ((CFWL_Edit*)m_pNormalWidget)->GetSuggestWords(pointf, sSuggest); | 344 return ((CFWL_Edit*)m_pNormalWidget)->GetSuggestWords(pointf, sSuggest); |
| 345 } | 345 } |
| 346 FX_BOOL CXFA_FFTextEdit::ReplaceSpellCheckWord( | 346 FX_BOOL CXFA_FFTextEdit::ReplaceSpellCheckWord( |
| 347 CFX_PointF pointf, | 347 CFX_PointF pointf, |
| 348 const CFX_ByteStringC& bsReplace) { | 348 const CFX_ByteStringC& bsReplace) { |
| 349 if (m_pDataAcc->GetUIType() != XFA_ELEMENT_TextEdit) { | 349 if (m_pDataAcc->GetUIType() != XFA_Element::TextEdit) { |
| 350 return FALSE; | 350 return FALSE; |
| 351 } | 351 } |
| 352 FWLToClient(pointf.x, pointf.y); | 352 FWLToClient(pointf.x, pointf.y); |
| 353 return ((CFWL_Edit*)m_pNormalWidget) | 353 return ((CFWL_Edit*)m_pNormalWidget) |
| 354 ->ReplaceSpellCheckWord(pointf, bsReplace); | 354 ->ReplaceSpellCheckWord(pointf, bsReplace); |
| 355 } | 355 } |
| 356 void CXFA_FFTextEdit::OnTextChanged(IFWL_Widget* pWidget, | 356 void CXFA_FFTextEdit::OnTextChanged(IFWL_Widget* pWidget, |
| 357 const CFX_WideString& wsChanged, | 357 const CFX_WideString& wsChanged, |
| 358 const CFX_WideString& wsPrevText) { | 358 const CFX_WideString& wsPrevText) { |
| 359 m_dwStatus |= XFA_WidgetStatus_TextEditValueChanged; | 359 m_dwStatus |= XFA_WidgetStatus_TextEditValueChanged; |
| 360 CXFA_EventParam eParam; | 360 CXFA_EventParam eParam; |
| 361 eParam.m_eType = XFA_EVENT_Change; | 361 eParam.m_eType = XFA_EVENT_Change; |
| 362 eParam.m_wsChange = wsChanged; | 362 eParam.m_wsChange = wsChanged; |
| 363 eParam.m_pTarget = m_pDataAcc; | 363 eParam.m_pTarget = m_pDataAcc; |
| 364 eParam.m_wsPrevText = wsPrevText; | 364 eParam.m_wsPrevText = wsPrevText; |
| 365 CFWL_Edit* pEdit = ((CFWL_Edit*)m_pNormalWidget); | 365 CFWL_Edit* pEdit = ((CFWL_Edit*)m_pNormalWidget); |
| 366 if (m_pDataAcc->GetUIType() == XFA_ELEMENT_DateTimeEdit) { | 366 if (m_pDataAcc->GetUIType() == XFA_Element::DateTimeEdit) { |
| 367 CFWL_DateTimePicker* pDateTime = (CFWL_DateTimePicker*)pEdit; | 367 CFWL_DateTimePicker* pDateTime = (CFWL_DateTimePicker*)pEdit; |
| 368 pDateTime->GetEditText(eParam.m_wsNewText); | 368 pDateTime->GetEditText(eParam.m_wsNewText); |
| 369 int32_t iSels = pDateTime->CountSelRanges(); | 369 int32_t iSels = pDateTime->CountSelRanges(); |
| 370 if (iSels) { | 370 if (iSels) { |
| 371 eParam.m_iSelEnd = pDateTime->GetSelRange(0, eParam.m_iSelStart); | 371 eParam.m_iSelEnd = pDateTime->GetSelRange(0, eParam.m_iSelStart); |
| 372 } | 372 } |
| 373 } else { | 373 } else { |
| 374 pEdit->GetText(eParam.m_wsNewText); | 374 pEdit->GetText(eParam.m_wsNewText); |
| 375 int32_t iSels = pEdit->CountSelRanges(); | 375 int32_t iSels = pEdit->CountSelRanges(); |
| 376 if (iSels) { | 376 if (iSels) { |
| 377 eParam.m_iSelEnd = pEdit->GetSelRange(0, eParam.m_iSelStart); | 377 eParam.m_iSelEnd = pEdit->GetSelRange(0, eParam.m_iSelStart); |
| 378 } | 378 } |
| 379 } | 379 } |
| 380 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Change, &eParam); | 380 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Change, &eParam); |
| 381 } | 381 } |
| 382 void CXFA_FFTextEdit::OnTextFull(IFWL_Widget* pWidget) { | 382 void CXFA_FFTextEdit::OnTextFull(IFWL_Widget* pWidget) { |
| 383 CXFA_EventParam eParam; | 383 CXFA_EventParam eParam; |
| 384 eParam.m_eType = XFA_EVENT_Full; | 384 eParam.m_eType = XFA_EVENT_Full; |
| 385 eParam.m_pTarget = m_pDataAcc; | 385 eParam.m_pTarget = m_pDataAcc; |
| 386 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Full, &eParam); | 386 m_pDataAcc->ProcessEvent(XFA_ATTRIBUTEENUM_Full, &eParam); |
| 387 } | 387 } |
| 388 | 388 |
| 389 FX_BOOL CXFA_FFTextEdit::CheckWord(const CFX_ByteStringC& sWord) { | 389 FX_BOOL CXFA_FFTextEdit::CheckWord(const CFX_ByteStringC& sWord) { |
| 390 if (sWord.IsEmpty() || m_pDataAcc->GetUIType() != XFA_ELEMENT_TextEdit) { | 390 if (sWord.IsEmpty() || m_pDataAcc->GetUIType() != XFA_Element::TextEdit) { |
| 391 return TRUE; | 391 return TRUE; |
| 392 } | 392 } |
| 393 return GetDoc()->GetDocProvider()->CheckWord(GetDoc(), sWord); | 393 return GetDoc()->GetDocProvider()->CheckWord(GetDoc(), sWord); |
| 394 } | 394 } |
| 395 FX_BOOL CXFA_FFTextEdit::GetSuggestWords( | 395 FX_BOOL CXFA_FFTextEdit::GetSuggestWords( |
| 396 const CFX_ByteStringC& sWord, | 396 const CFX_ByteStringC& sWord, |
| 397 std::vector<CFX_ByteString>& sSuggest) { | 397 std::vector<CFX_ByteString>& sSuggest) { |
| 398 if (m_pDataAcc->GetUIType() != XFA_ELEMENT_TextEdit) { | 398 if (m_pDataAcc->GetUIType() != XFA_Element::TextEdit) { |
| 399 return FALSE; | 399 return FALSE; |
| 400 } | 400 } |
| 401 return GetDoc()->GetDocProvider()->GetSuggestWords(GetDoc(), sWord, sSuggest); | 401 return GetDoc()->GetDocProvider()->GetSuggestWords(GetDoc(), sWord, sSuggest); |
| 402 } | 402 } |
| 403 | 403 |
| 404 void CXFA_FFTextEdit::OnProcessMessage(CFWL_Message* pMessage) { | 404 void CXFA_FFTextEdit::OnProcessMessage(CFWL_Message* pMessage) { |
| 405 m_pOldDelegate->OnProcessMessage(pMessage); | 405 m_pOldDelegate->OnProcessMessage(pMessage); |
| 406 } | 406 } |
| 407 | 407 |
| 408 void CXFA_FFTextEdit::OnProcessEvent(CFWL_Event* pEvent) { | 408 void CXFA_FFTextEdit::OnProcessEvent(CFWL_Event* pEvent) { |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); | 593 IFWL_Widget* pIWidget = m_pNormalWidget->GetWidget(); |
| 594 CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); | 594 CFWL_NoteDriver* pNoteDriver = FWL_GetApp()->GetNoteDriver(); |
| 595 pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); | 595 pNoteDriver->RegisterEventTarget(pIWidget, pIWidget); |
| 596 m_pOldDelegate = m_pNormalWidget->SetDelegate(this); | 596 m_pOldDelegate = m_pNormalWidget->SetDelegate(this); |
| 597 m_pNormalWidget->LockUpdate(); | 597 m_pNormalWidget->LockUpdate(); |
| 598 CFX_WideString wsText; | 598 CFX_WideString wsText; |
| 599 m_pDataAcc->GetValue(wsText, XFA_VALUEPICTURE_Display); | 599 m_pDataAcc->GetValue(wsText, XFA_VALUEPICTURE_Display); |
| 600 pWidget->SetEditText(wsText); | 600 pWidget->SetEditText(wsText); |
| 601 if (CXFA_Value value = m_pDataAcc->GetFormValue()) { | 601 if (CXFA_Value value = m_pDataAcc->GetFormValue()) { |
| 602 switch (value.GetChildValueClassID()) { | 602 switch (value.GetChildValueClassID()) { |
| 603 case XFA_ELEMENT_Date: { | 603 case XFA_Element::Date: { |
| 604 if (!wsText.IsEmpty()) { | 604 if (!wsText.IsEmpty()) { |
| 605 CXFA_LocaleValue lcValue = XFA_GetLocaleValue(m_pDataAcc); | 605 CXFA_LocaleValue lcValue = XFA_GetLocaleValue(m_pDataAcc); |
| 606 CFX_Unitime date = lcValue.GetDate(); | 606 CFX_Unitime date = lcValue.GetDate(); |
| 607 if ((FX_UNITIME)date != 0) { | 607 if ((FX_UNITIME)date != 0) { |
| 608 pWidget->SetCurSel(date.GetYear(), date.GetMonth(), date.GetDay()); | 608 pWidget->SetCurSel(date.GetYear(), date.GetMonth(), date.GetDay()); |
| 609 } | 609 } |
| 610 } | 610 } |
| 611 } break; | 611 } break; |
| 612 default: | 612 default: |
| 613 break; | 613 break; |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 792 | 792 |
| 793 void CXFA_FFDateTimeEdit::OnProcessEvent(CFWL_Event* pEvent) { | 793 void CXFA_FFDateTimeEdit::OnProcessEvent(CFWL_Event* pEvent) { |
| 794 if (pEvent->GetClassID() == CFWL_EventType::SelectChanged) { | 794 if (pEvent->GetClassID() == CFWL_EventType::SelectChanged) { |
| 795 CFWL_Event_DtpSelectChanged* event = (CFWL_Event_DtpSelectChanged*)pEvent; | 795 CFWL_Event_DtpSelectChanged* event = (CFWL_Event_DtpSelectChanged*)pEvent; |
| 796 OnSelectChanged(m_pNormalWidget->GetWidget(), event->iYear, event->iMonth, | 796 OnSelectChanged(m_pNormalWidget->GetWidget(), event->iYear, event->iMonth, |
| 797 event->iDay); | 797 event->iDay); |
| 798 return; | 798 return; |
| 799 } | 799 } |
| 800 CXFA_FFTextEdit::OnProcessEvent(pEvent); | 800 CXFA_FFTextEdit::OnProcessEvent(pEvent); |
| 801 } | 801 } |
| OLD | NEW |