Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
cxfa_ffnumericedit.cpp
Go to the documentation of this file.
1
// Copyright 2017 The PDFium Authors
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
"xfa/fxfa/cxfa_ffnumericedit.h"
8
9
#
include
"core/fxcrt/check.h"
10
#
include
"xfa/fwl/cfwl_edit.h"
11
#
include
"xfa/fwl/cfwl_eventvalidate.h"
12
#
include
"xfa/fwl/cfwl_notedriver.h"
13
#
include
"xfa/fxfa/cxfa_ffdoc.h"
14
#
include
"xfa/fxfa/parser/cxfa_localevalue.h"
15
#
include
"xfa/fxfa/parser/cxfa_node.h"
16
#
include
"xfa/fxfa/parser/xfa_utils.h"
17
18
CXFA_FFNumericEdit::
CXFA_FFNumericEdit
(
CXFA_Node
* pNode)
19
:
CXFA_FFTextEdit
(
pNode
)
{}
20
21
CXFA_FFNumericEdit::~
CXFA_FFNumericEdit
() =
default
;
22
23
bool
CXFA_FFNumericEdit::
LoadWidget
() {
24
DCHECK
(!IsLoaded());
25
26
CFWL_Edit
* pWidget = cppgc::MakeGarbageCollected<CFWL_Edit>(
27
GetFWLApp()->GetHeap()->GetAllocationHandle(), GetFWLApp(),
28
CFWL_Widget::Properties(),
nullptr
);
29
SetNormalWidget
(pWidget);
30
pWidget
->
SetAdapterIface
(
this
);
31
32
CFWL_NoteDriver* pNoteDriver = pWidget
->
GetFWLApp
()->GetNoteDriver();
33
pNoteDriver
->
RegisterEventTarget
(pWidget, pWidget);
34
m_pOldDelegate = pWidget->GetDelegate();
35
pWidget
->
SetDelegate
(
this
);
36
37
{
38
CFWL_Widget
::
ScopedUpdateLock
update_lock(pWidget);
39
pWidget
->
SetText
(m_pNode->GetValue(XFA_ValuePicture::kDisplay));
40
UpdateWidgetProperty
(
)
;
41
}
42
43
return
CXFA_FFField
::
LoadWidget
();
44
}
45
46
void
CXFA_FFNumericEdit::
UpdateWidgetProperty
() {
47
CFWL_Edit
* pWidget =
static_cast
<
CFWL_Edit
*>(GetNormalWidget());
48
if
(!pWidget)
49
return
;
50
51
uint32_t dwExtendedStyle =
52
FWL_STYLEEXT_EDT_ShowScrollbarFocus
|
FWL_STYLEEXT_EDT_OuterScrollbar
|
53
FWL_STYLEEXT_EDT_Validate
|
FWL_STYLEEXT_EDT_Number
;
54
dwExtendedStyle |=
UpdateUIProperty
();
55
if
(!m_pNode->IsHorizontalScrollPolicyOff())
56
dwExtendedStyle |=
FWL_STYLEEXT_EDT_AutoHScroll
;
57
58
std
::optional<int32_t> numCells = m_pNode->GetNumberOfCells();
59
if
(numCells.has_value() && numCells.value() > 0) {
60
dwExtendedStyle |=
FWL_STYLEEXT_EDT_CombText
;
61
pWidget
->
SetLimit
(
numCells.value()
)
;
62
}
63
dwExtendedStyle |=
GetAlignment
();
64
if
(!m_pNode->IsOpenAccess() || !GetDoc()->GetXFADoc()->IsInteractive())
65
dwExtendedStyle |=
FWL_STYLEEXT_EDT_ReadOnly
;
66
67
GetNormalWidget()->ModifyStyleExts(dwExtendedStyle, 0xFFFFFFFF);
68
}
69
70
void
CXFA_FFNumericEdit::
OnProcessEvent
(
CFWL_Event
* pEvent) {
71
if
(pEvent
->
GetType
(
)
==
CFWL_Event
::
Type
::
Validate
) {
72
CFWL_EventValidate* event =
static_cast
<CFWL_EventValidate*>(pEvent);
73
event
->
SetValidate
(
OnValidate(GetNormalWidget(), event
->
GetInsert
(
)
)
)
;
74
return
;
75
}
76
CXFA_FFTextEdit
::
OnProcessEvent
(pEvent);
77
}
78
79
bool
CXFA_FFNumericEdit::OnValidate(
CFWL_Widget
* pWidget,
80
const
WideString
& wsText) {
81
WideString
wsPattern = m_pNode->GetPictureContent(XFA_ValuePicture::kEdit);
82
if
(!wsPattern.IsEmpty())
83
return
true
;
84
85
WideString
wsFormat;
86
CXFA_LocaleValue
widgetValue = XFA_GetLocaleValue(m_pNode.Get());
87
widgetValue
.
GetNumericFormat
(wsFormat, m_pNode->GetLeadDigits(),
88
m_pNode->GetFracDigits());
89
return
widgetValue
.
ValidateNumericTemp
(wsText, wsFormat,
90
m_pNode->GetLocale());
91
}
FWL_STYLEEXT_EDT_ShowScrollbarFocus
#define FWL_STYLEEXT_EDT_ShowScrollbarFocus
Definition
cfwl_edit.h:42
FWL_STYLEEXT_EDT_OuterScrollbar
#define FWL_STYLEEXT_EDT_OuterScrollbar
Definition
cfwl_edit.h:43
FWL_STYLEEXT_EDT_AutoHScroll
#define FWL_STYLEEXT_EDT_AutoHScroll
Definition
cfwl_edit.h:26
FWL_STYLEEXT_EDT_ReadOnly
#define FWL_STYLEEXT_EDT_ReadOnly
Definition
cfwl_edit.h:23
FWL_STYLEEXT_EDT_Validate
#define FWL_STYLEEXT_EDT_Validate
Definition
cfwl_edit.h:28
FWL_STYLEEXT_EDT_Number
#define FWL_STYLEEXT_EDT_Number
Definition
cfwl_edit.h:30
FWL_STYLEEXT_EDT_CombText
#define FWL_STYLEEXT_EDT_CombText
Definition
cfwl_edit.h:31
DCHECK
#define DCHECK
Definition
check.h:33
CXFA_FFField
Definition
cxfa_fffield.h:18
CXFA_FFField::LoadWidget
bool LoadWidget() override
Definition
cxfa_fffield.cpp:139
CXFA_FFField::SetNormalWidget
void SetNormalWidget(CFWL_Widget *widget)
Definition
cxfa_fffield.cpp:131
CXFA_FFField::UpdateUIProperty
uint32_t UpdateUIProperty()
Definition
cxfa_fffield.cpp:350
CXFA_FFNumericEdit::CXFA_FFNumericEdit
CXFA_FFNumericEdit(CXFA_Node *pNode)
Definition
cxfa_ffnumericedit.cpp:18
CXFA_FFNumericEdit::LoadWidget
bool LoadWidget() override
Definition
cxfa_ffnumericedit.cpp:23
CXFA_FFNumericEdit::~CXFA_FFNumericEdit
~CXFA_FFNumericEdit() override
CXFA_FFNumericEdit::OnProcessEvent
void OnProcessEvent(pdfium::CFWL_Event *pEvent) override
Definition
cxfa_ffnumericedit.cpp:70
CXFA_FFNumericEdit::UpdateWidgetProperty
void UpdateWidgetProperty() override
Definition
cxfa_ffnumericedit.cpp:46
CXFA_FFTextEdit
Definition
cxfa_fftextedit.h:24
CXFA_FFTextEdit::GetAlignment
uint32_t GetAlignment()
Definition
cxfa_fftextedit.cpp:232
CXFA_FFTextEdit::OnProcessEvent
void OnProcessEvent(pdfium::CFWL_Event *pEvent) override
Definition
cxfa_fftextedit.cpp:340
CXFA_FFTextEdit::CXFA_FFTextEdit
CXFA_FFTextEdit(CXFA_Node *pNode)
Definition
cxfa_fftextedit.cpp:34
CXFA_LocaleValue
Definition
cxfa_localevalue.h:21
CXFA_LocaleValue::GetNumericFormat
void GetNumericFormat(WideString &wsFormat, int32_t nIntLen, int32_t nDecLen)
Definition
cxfa_localevalue.cpp:642
CXFA_LocaleValue::ValidateNumericTemp
bool ValidateNumericTemp(const WideString &wsNumeric, const WideString &wsFormat, GCedLocaleIface *pLocale)
Definition
cxfa_localevalue.cpp:682
CXFA_Node
Definition
cxfa_node.h:94
pdfium::CFWL_Edit
Definition
cfwl_edit.h:49
pdfium::CFWL_Edit::SetLimit
void SetLimit(int32_t nLimit)
Definition
cfwl_edit.cpp:194
pdfium::CFWL_Edit::SetText
virtual void SetText(const WideString &wsText)
Definition
cfwl_edit.cpp:150
pdfium::CFWL_EventValidate::GetInsert
WideString GetInsert() const
Definition
cfwl_eventvalidate.h:20
pdfium::CFWL_EventValidate::SetValidate
void SetValidate(bool bValidate)
Definition
cfwl_eventvalidate.h:22
pdfium::CFWL_Event
Definition
cfwl_event.h:17
pdfium::CFWL_Event::Type
Type
Definition
cfwl_event.h:21
pdfium::CFWL_Event::Type::Validate
@ Validate
Definition
cfwl_event.h:33
pdfium::CFWL_Event::GetType
Type GetType() const
Definition
cfwl_event.h:41
pdfium::CFWL_NoteDriver::RegisterEventTarget
void RegisterEventTarget(CFWL_Widget *pListener, CFWL_Widget *pEventSource)
Definition
cfwl_notedriver.cpp:52
pdfium::CFWL_Widget::ScopedUpdateLock
Definition
cfwl_widget.h:89
pdfium::CFWL_Widget
Definition
cfwl_widget.h:70
pdfium::CFWL_Widget::SetDelegate
void SetDelegate(IFWL_WidgetDelegate *delegate)
Definition
cfwl_widget.h:143
pdfium::CFWL_Widget::SetAdapterIface
void SetAdapterIface(AdapterIface *pItem)
Definition
cfwl_widget.h:156
pdfium::CFWL_Widget::GetFWLApp
CFWL_App * GetFWLApp() const
Definition
cfwl_widget.h:151
std
[33]
Definition
src_corelib_tools_qhash.cpp:421
WideString
fxcrt::WideString WideString
Definition
widestring.h:207
qtwebengine
src
3rdparty
chromium
third_party
pdfium
xfa
fxfa
cxfa_ffnumericedit.cpp
Generated on
for Qt by
1.18.0