Index: core/src/fpdfdoc/doc_formfield.cpp |
diff --git a/core/src/fpdfdoc/doc_formfield.cpp b/core/src/fpdfdoc/doc_formfield.cpp |
index 087eba8aa490fc1a8c80b7c383eea84a53cb7e90..8541d9c1448042de88931fcc61157b0dca0aaf82 100644 |
--- a/core/src/fpdfdoc/doc_formfield.cpp |
+++ b/core/src/fpdfdoc/doc_formfield.cpp |
@@ -7,1100 +7,1068 @@ |
#include "../../include/fpdfdoc/fpdf_doc.h" |
#include "doc_utils.h" |
-FX_BOOL PDF_FormField_IsUnison(CPDF_FormField *pField) |
-{ |
- FX_BOOL bUnison = FALSE; |
- if (pField->GetType() == CPDF_FormField::CheckBox) { |
- bUnison = TRUE; |
+FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { |
+ FX_BOOL bUnison = FALSE; |
+ if (pField->GetType() == CPDF_FormField::CheckBox) { |
+ bUnison = TRUE; |
+ } else { |
+ FX_DWORD dwFlags = pField->GetFieldFlags(); |
+ bUnison = ((dwFlags & 0x2000000) != 0); |
+ } |
+ return bUnison; |
+} |
+CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) { |
+ m_pDict = pDict; |
+ m_Type = Unknown; |
+ m_pForm = pForm; |
+ m_pFont = NULL; |
+ m_FontSize = 0; |
+ SyncFieldFlags(); |
+} |
+CPDF_FormField::~CPDF_FormField() {} |
+void CPDF_FormField::SyncFieldFlags() { |
+ CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") |
+ ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() |
+ : CFX_ByteString(); |
+ FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff") |
+ ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() |
+ : 0; |
+ m_Flags = 0; |
+ if (flags & 1) { |
+ m_Flags |= FORMFIELD_READONLY; |
+ } |
+ if (flags & 2) { |
+ m_Flags |= FORMFIELD_REQUIRED; |
+ } |
+ if (flags & 4) { |
+ m_Flags |= FORMFIELD_NOEXPORT; |
+ } |
+ if (type_name == "Btn") { |
+ if (flags & 0x8000) { |
+ m_Type = RadioButton; |
+ if (flags & 0x4000) { |
+ m_Flags |= FORMRADIO_NOTOGGLEOFF; |
+ } |
+ if (flags & 0x2000000) { |
+ m_Flags |= FORMRADIO_UNISON; |
+ } |
+ } else if (flags & 0x10000) { |
+ m_Type = PushButton; |
} else { |
- FX_DWORD dwFlags = pField->GetFieldFlags(); |
- bUnison = ((dwFlags & 0x2000000) != 0); |
+ m_Type = CheckBox; |
} |
- return bUnison; |
-} |
-CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) |
-{ |
- m_pDict = pDict; |
- m_Type = Unknown; |
- m_pForm = pForm; |
- m_pFont = NULL; |
- m_FontSize = 0; |
- SyncFieldFlags(); |
+ } else if (type_name == "Tx") { |
+ if (flags & 0x100000) { |
+ m_Type = File; |
+ } else if (flags & 0x2000000) { |
+ m_Type = RichText; |
+ } else { |
+ m_Type = Text; |
+ if (flags & 0x1000) { |
+ m_Flags |= FORMTEXT_MULTILINE; |
+ } |
+ if (flags & 0x2000) { |
+ m_Flags |= FORMTEXT_PASSWORD; |
+ } |
+ if (flags & 0x800000) { |
+ m_Flags |= FORMTEXT_NOSCROLL; |
+ } |
+ if (flags & 0x100000) { |
+ m_Flags |= FORMTEXT_COMB; |
+ } |
+ } |
+ LoadDA(); |
+ } else if (type_name == "Ch") { |
+ if (flags & 0x20000) { |
+ m_Type = ComboBox; |
+ if (flags & 0x40000) { |
+ m_Flags |= FORMCOMBO_EDIT; |
+ } |
+ } else { |
+ m_Type = ListBox; |
+ if (flags & 0x200000) { |
+ m_Flags |= FORMLIST_MULTISELECT; |
+ } |
+ } |
+ LoadDA(); |
+ } else if (type_name == "Sig") { |
+ m_Type = Sign; |
+ } |
} |
-CPDF_FormField::~CPDF_FormField() |
-{ |
+CFX_WideString CPDF_FormField::GetFullName() { |
+ return ::GetFullName(m_pDict); |
} |
-void CPDF_FormField::SyncFieldFlags() |
-{ |
- CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() : CFX_ByteString(); |
- FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff")? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() : 0; |
- m_Flags = 0; |
- if (flags & 1) { |
- m_Flags |= FORMFIELD_READONLY; |
- } |
- if (flags & 2) { |
- m_Flags |= FORMFIELD_REQUIRED; |
- } |
- if (flags & 4) { |
- m_Flags |= FORMFIELD_NOEXPORT; |
- } |
- if (type_name == "Btn") { |
- if (flags & 0x8000) { |
- m_Type = RadioButton; |
- if (flags & 0x4000) { |
- m_Flags |= FORMRADIO_NOTOGGLEOFF; |
- } |
- if (flags & 0x2000000) { |
- m_Flags |= FORMRADIO_UNISON; |
- } |
- } else if (flags & 0x10000) { |
- m_Type = PushButton; |
+FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { |
+ switch (m_Type) { |
+ case CPDF_FormField::CheckBox: |
+ case CPDF_FormField::RadioButton: { |
+ CFX_ByteArray statusArray; |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ SaveCheckedFieldStatus(this, statusArray); |
+ } |
+ int iCount = CountControls(); |
+ if (iCount) { |
+ if (PDF_FormField_IsUnison(this)) { |
+ for (int i = 0; i < iCount; i++) { |
+ CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); |
+ } |
} else { |
- m_Type = CheckBox; |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pControl = GetControl(i); |
+ FX_BOOL bChecked = pControl->IsDefaultChecked(); |
+ CheckControl(i, bChecked, FALSE); |
+ } |
} |
- } else if (type_name == "Tx") { |
- if (flags & 0x100000) { |
- m_Type = File; |
- } else if (flags & 0x2000000) { |
- m_Type = RichText; |
- } else { |
- m_Type = Text; |
- if (flags & 0x1000) { |
- m_Flags |= FORMTEXT_MULTILINE; |
- } |
- if (flags & 0x2000) { |
- m_Flags |= FORMTEXT_PASSWORD; |
- } |
- if (flags & 0x800000) { |
- m_Flags |= FORMTEXT_NOSCROLL; |
- } |
- if (flags & 0x100000) { |
- m_Flags |= FORMTEXT_COMB; |
- } |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
+ } |
+ } break; |
+ case CPDF_FormField::ComboBox: { |
+ CFX_WideString csValue; |
+ ClearSelection(); |
+ int iIndex = GetDefaultSelectedItem(); |
+ if (iIndex >= 0) { |
+ csValue = GetOptionLabel(iIndex); |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
+ if (iRet < 0) { |
+ return FALSE; |
} |
- LoadDA(); |
- } else if (type_name == "Ch") { |
- if (flags & 0x20000) { |
- m_Type = ComboBox; |
- if (flags & 0x40000) { |
- m_Flags |= FORMCOMBO_EDIT; |
- } |
- } else { |
- m_Type = ListBox; |
- if (flags & 0x200000) { |
- m_Flags |= FORMLIST_MULTISELECT; |
- } |
+ } |
+ SetItemSelection(iIndex, TRUE); |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ } break; |
+ case CPDF_FormField::ListBox: { |
+ CFX_WideString csValue; |
+ ClearSelection(); |
+ int iIndex = GetDefaultSelectedItem(); |
+ if (iIndex >= 0) { |
+ csValue = GetOptionLabel(iIndex); |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
+ if (iRet < 0) { |
+ return FALSE; |
} |
- LoadDA(); |
- } else if (type_name == "Sig") { |
- m_Type = Sign; |
- } |
-} |
-CFX_WideString CPDF_FormField::GetFullName() |
-{ |
- return ::GetFullName(m_pDict); |
-} |
-FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) |
-{ |
- switch (m_Type) { |
- case CPDF_FormField::CheckBox: |
- case CPDF_FormField::RadioButton: { |
- CFX_ByteArray statusArray; |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- SaveCheckedFieldStatus(this, statusArray); |
- } |
- int iCount = CountControls(); |
- if (iCount) { |
- if (PDF_FormField_IsUnison(this)) { |
- for(int i = 0; i < iCount; i++) { |
- CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); |
- } |
- } else { |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pControl = GetControl(i); |
- FX_BOOL bChecked = pControl->IsDefaultChecked(); |
- CheckControl(i, bChecked, FALSE); |
- } |
- } |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
- } |
- } |
- break; |
- case CPDF_FormField::ComboBox: { |
- CFX_WideString csValue; |
- ClearSelection(); |
- int iIndex = GetDefaultSelectedItem(); |
- if (iIndex >= 0) { |
- csValue = GetOptionLabel(iIndex); |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- SetItemSelection(iIndex, TRUE); |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
- } |
- } |
- break; |
- case CPDF_FormField::ListBox: { |
- CFX_WideString csValue; |
- ClearSelection(); |
- int iIndex = GetDefaultSelectedItem(); |
- if (iIndex >= 0) { |
- csValue = GetOptionLabel(iIndex); |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- SetItemSelection(iIndex, TRUE); |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
- } |
- } |
- break; |
- case CPDF_FormField::Text: |
- case CPDF_FormField::RichText: |
- case CPDF_FormField::File: |
- default: { |
- CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); |
- CFX_WideString csDValue; |
- if (pDV != NULL) { |
- csDValue = pDV->GetUnicodeText(); |
- } |
- CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); |
- CFX_WideString csValue; |
- if (pV != NULL) { |
- csValue = pV->GetUnicodeText(); |
- } |
- CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); |
- if (!pRV && (csDValue == csValue)) { |
- return FALSE; |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- if (pDV == NULL) { |
- m_pDict->RemoveAt("V"); |
- m_pDict->RemoveAt("RV"); |
- } else { |
- CPDF_Object* pClone = pDV->Clone(); |
- if (pClone == NULL) { |
- return FALSE; |
- } |
- m_pDict->SetAt("V", pClone); |
- if(pRV) { |
- CPDF_Object* pCloneR = pDV->Clone(); |
- m_pDict->SetAt("RV", pCloneR); |
- } |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- } |
- break; |
- } |
- return TRUE; |
-} |
-int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) |
-{ |
- if (pControl == NULL) { |
- return -1; |
- } |
- int iCount = m_ControlList.GetSize(); |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pFind = (CPDF_FormControl*)m_ControlList.GetAt(i); |
- if (pFind == pControl) { |
- return i; |
+ } |
+ SetItemSelection(iIndex, TRUE); |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ } break; |
+ case CPDF_FormField::Text: |
+ case CPDF_FormField::RichText: |
+ case CPDF_FormField::File: |
+ default: { |
+ CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); |
+ CFX_WideString csDValue; |
+ if (pDV != NULL) { |
+ csDValue = pDV->GetUnicodeText(); |
+ } |
+ CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); |
+ CFX_WideString csValue; |
+ if (pV != NULL) { |
+ csValue = pV->GetUnicodeText(); |
+ } |
+ CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); |
+ if (!pRV && (csDValue == csValue)) { |
+ return FALSE; |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); |
+ if (iRet < 0) { |
+ return FALSE; |
} |
- } |
+ } |
+ if (pDV == NULL) { |
+ m_pDict->RemoveAt("V"); |
+ m_pDict->RemoveAt("RV"); |
+ } else { |
+ CPDF_Object* pClone = pDV->Clone(); |
+ if (pClone == NULL) { |
+ return FALSE; |
+ } |
+ m_pDict->SetAt("V", pClone); |
+ if (pRV) { |
+ CPDF_Object* pCloneR = pDV->Clone(); |
+ m_pDict->SetAt("RV", pCloneR); |
+ } |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ } break; |
+ } |
+ return TRUE; |
+} |
+int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) { |
+ if (pControl == NULL) { |
return -1; |
+ } |
+ int iCount = m_ControlList.GetSize(); |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pFind = (CPDF_FormControl*)m_ControlList.GetAt(i); |
+ if (pFind == pControl) { |
+ return i; |
+ } |
+ } |
+ return -1; |
} |
-int CPDF_FormField::GetFieldType() |
-{ |
- switch (m_Type) { |
- case PushButton: |
- return FIELDTYPE_PUSHBUTTON; |
- case CheckBox: |
- return FIELDTYPE_CHECKBOX; |
- case RadioButton: |
- return FIELDTYPE_RADIOBUTTON; |
- case ComboBox: |
- return FIELDTYPE_COMBOBOX; |
- case ListBox: |
- return FIELDTYPE_LISTBOX; |
- case Text: |
- case RichText: |
- case File: |
- return FIELDTYPE_TEXTFIELD; |
- case Sign: |
- return FIELDTYPE_SIGNATURE; |
- default: |
- break; |
- } |
- return FIELDTYPE_UNKNOWN; |
+int CPDF_FormField::GetFieldType() { |
+ switch (m_Type) { |
+ case PushButton: |
+ return FIELDTYPE_PUSHBUTTON; |
+ case CheckBox: |
+ return FIELDTYPE_CHECKBOX; |
+ case RadioButton: |
+ return FIELDTYPE_RADIOBUTTON; |
+ case ComboBox: |
+ return FIELDTYPE_COMBOBOX; |
+ case ListBox: |
+ return FIELDTYPE_LISTBOX; |
+ case Text: |
+ case RichText: |
+ case File: |
+ return FIELDTYPE_TEXTFIELD; |
+ case Sign: |
+ return FIELDTYPE_SIGNATURE; |
+ default: |
+ break; |
+ } |
+ return FIELDTYPE_UNKNOWN; |
} |
-CPDF_AAction CPDF_FormField::GetAdditionalAction() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); |
- if (pObj == NULL) { |
- return NULL; |
- } |
- return pObj->GetDict(); |
+CPDF_AAction CPDF_FormField::GetAdditionalAction() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); |
+ if (pObj == NULL) { |
+ return NULL; |
+ } |
+ return pObj->GetDict(); |
} |
-CFX_WideString CPDF_FormField::GetAlternateName() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); |
- if (pObj == NULL) { |
- return L""; |
- } |
- return pObj->GetUnicodeText(); |
+CFX_WideString CPDF_FormField::GetAlternateName() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); |
+ if (pObj == NULL) { |
+ return L""; |
+ } |
+ return pObj->GetUnicodeText(); |
} |
-CFX_WideString CPDF_FormField::GetMappingName() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); |
- if (pObj == NULL) { |
- return L""; |
- } |
- return pObj->GetUnicodeText(); |
+CFX_WideString CPDF_FormField::GetMappingName() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); |
+ if (pObj == NULL) { |
+ return L""; |
+ } |
+ return pObj->GetUnicodeText(); |
} |
-FX_DWORD CPDF_FormField::GetFieldFlags() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); |
- if (pObj == NULL) { |
- return 0; |
- } |
- return pObj->GetInteger(); |
+FX_DWORD CPDF_FormField::GetFieldFlags() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); |
+ if (pObj == NULL) { |
+ return 0; |
+ } |
+ return pObj->GetInteger(); |
} |
-CFX_ByteString CPDF_FormField::GetDefaultStyle() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); |
- if (pObj == NULL) { |
- return ""; |
- } |
- return pObj->GetString(); |
+CFX_ByteString CPDF_FormField::GetDefaultStyle() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); |
+ if (pObj == NULL) { |
+ return ""; |
+ } |
+ return pObj->GetString(); |
} |
-CFX_WideString CPDF_FormField::GetRichTextString() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); |
- if (pObj == NULL) { |
- return L""; |
- } |
- return pObj->GetUnicodeText(); |
+CFX_WideString CPDF_FormField::GetRichTextString() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); |
+ if (pObj == NULL) { |
+ return L""; |
+ } |
+ return pObj->GetUnicodeText(); |
} |
-CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) |
-{ |
- if (GetType() == CheckBox || GetType() == RadioButton) { |
- return GetCheckValue(bDefault); |
+CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) { |
+ if (GetType() == CheckBox || GetType() == RadioButton) { |
+ return GetCheckValue(bDefault); |
+ } |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); |
+ if (pValue == NULL) { |
+ if (!bDefault) { |
+ if (m_Type == RichText) { |
+ pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+ } |
+ if (pValue == NULL && m_Type != Text) { |
+ pValue = FPDF_GetFieldAttr(m_pDict, "DV"); |
+ } |
} |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); |
if (pValue == NULL) { |
- if (!bDefault) { |
- if (m_Type == RichText) { |
- pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
- } |
- if (pValue == NULL && m_Type != Text) { |
- pValue = FPDF_GetFieldAttr(m_pDict, "DV"); |
- } |
- } |
- if (pValue == NULL) { |
- return CFX_WideString(); |
- } |
- } |
- switch (pValue->GetType()) { |
- case PDFOBJ_STRING: |
- case PDFOBJ_STREAM: |
- return pValue->GetUnicodeText(); |
- case PDFOBJ_ARRAY: |
- pValue = ((CPDF_Array*)pValue)->GetElementValue(0); |
- if (pValue) { |
- return pValue->GetUnicodeText(); |
- } |
- break; |
- } |
- return CFX_WideString(); |
+ return CFX_WideString(); |
+ } |
+ } |
+ switch (pValue->GetType()) { |
+ case PDFOBJ_STRING: |
+ case PDFOBJ_STREAM: |
+ return pValue->GetUnicodeText(); |
+ case PDFOBJ_ARRAY: |
+ pValue = ((CPDF_Array*)pValue)->GetElementValue(0); |
+ if (pValue) { |
+ return pValue->GetUnicodeText(); |
+ } |
+ break; |
+ } |
+ return CFX_WideString(); |
} |
-CFX_WideString CPDF_FormField::GetValue() |
-{ |
- return GetValue(FALSE); |
+CFX_WideString CPDF_FormField::GetValue() { |
+ return GetValue(FALSE); |
} |
-CFX_WideString CPDF_FormField::GetDefaultValue() |
-{ |
- return GetValue(TRUE); |
+CFX_WideString CPDF_FormField::GetDefaultValue() { |
+ return GetValue(TRUE); |
} |
-FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify) |
-{ |
- switch (m_Type) { |
- case CheckBox: |
- case RadioButton: { |
- SetCheckValue(value, bDefault, bNotify); |
- return TRUE; |
- } |
- case File: |
- case RichText: |
- case Text: |
- case ComboBox: { |
- CFX_WideString csValue = value; |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- int iIndex = FindOptionValue(csValue); |
- if (iIndex < 0) { |
- CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); |
- m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); |
- if (m_Type == RichText && !bDefault) { |
- m_pDict->SetAtString("RV", bsEncodeText); |
- } |
- m_pDict->RemoveAt("I"); |
- } else { |
- m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); |
- if (bDefault) { |
- } else { |
- ClearSelection(); |
- SetItemSelection(iIndex, TRUE); |
- } |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- } |
- break; |
- case ListBox: { |
- int iIndex = FindOptionValue(value); |
- if (iIndex < 0) { |
- return FALSE; |
- } |
- if (bDefault && iIndex == GetDefaultSelectedItem()) { |
- return FALSE; |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- CFX_WideString csValue = value; |
- int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- if (bDefault) { |
- } else { |
- ClearSelection(); |
- SetItemSelection(iIndex, TRUE); |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- break; |
- } |
- default: |
- break; |
- } |
- if (CPDF_InterForm::m_bUpdateAP) { |
- UpdateAP(NULL); |
- } |
- return TRUE; |
-} |
-FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) |
-{ |
- return SetValue(value, FALSE, bNotify); |
-} |
-int CPDF_FormField::GetMaxLen() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen"); |
- if (pObj == NULL) { |
- int iCount = m_ControlList.GetSize(); |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pControl = (CPDF_FormControl*)m_ControlList.GetAt(i); |
- if (pControl == NULL) { |
- continue; |
- } |
- CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; |
- if (pWidgetDict->KeyExist("MaxLen")) { |
- return pWidgetDict->GetInteger("MaxLen"); |
- } |
+FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, |
+ FX_BOOL bDefault, |
+ FX_BOOL bNotify) { |
+ switch (m_Type) { |
+ case CheckBox: |
+ case RadioButton: { |
+ SetCheckValue(value, bDefault, bNotify); |
+ return TRUE; |
+ } |
+ case File: |
+ case RichText: |
+ case Text: |
+ case ComboBox: { |
+ CFX_WideString csValue = value; |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
+ if (iRet < 0) { |
+ return FALSE; |
} |
- return 0; |
- } |
- return pObj->GetInteger(); |
-} |
-int CPDF_FormField::CountSelectedItems() |
-{ |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
- if (pValue == NULL) { |
- pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pValue == NULL) { |
- return 0; |
+ } |
+ int iIndex = FindOptionValue(csValue); |
+ if (iIndex < 0) { |
+ CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); |
+ m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); |
+ if (m_Type == RichText && !bDefault) { |
+ m_pDict->SetAtString("RV", bsEncodeText); |
} |
- } |
- if (pValue->GetType() == PDFOBJ_STRING) { |
- if (pValue->GetString().IsEmpty()) { |
- return 0; |
+ m_pDict->RemoveAt("I"); |
+ } else { |
+ m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); |
+ if (bDefault) { |
+ } else { |
+ ClearSelection(); |
+ SetItemSelection(iIndex, TRUE); |
} |
- return 1; |
- } |
- if (pValue->GetType() == PDFOBJ_NUMBER) { |
- if (pValue->GetString().IsEmpty()) { |
- return 0; |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ } break; |
+ case ListBox: { |
+ int iIndex = FindOptionValue(value); |
+ if (iIndex < 0) { |
+ return FALSE; |
+ } |
+ if (bDefault && iIndex == GetDefaultSelectedItem()) { |
+ return FALSE; |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ CFX_WideString csValue = value; |
+ int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
+ if (iRet < 0) { |
+ return FALSE; |
} |
- return 1; |
- } |
- if (pValue->GetType() != PDFOBJ_ARRAY) { |
- return 0; |
- } |
- return ((CPDF_Array*)pValue)->GetCount(); |
+ } |
+ if (bDefault) { |
+ } else { |
+ ClearSelection(); |
+ SetItemSelection(iIndex, TRUE); |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ break; |
+ } |
+ default: |
+ break; |
+ } |
+ if (CPDF_InterForm::m_bUpdateAP) { |
+ UpdateAP(NULL); |
+ } |
+ return TRUE; |
} |
-int CPDF_FormField::GetSelectedIndex(int index) |
-{ |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) { |
+ return SetValue(value, FALSE, bNotify); |
+} |
+int CPDF_FormField::GetMaxLen() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen"); |
+ if (pObj == NULL) { |
+ int iCount = m_ControlList.GetSize(); |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pControl = (CPDF_FormControl*)m_ControlList.GetAt(i); |
+ if (pControl == NULL) { |
+ continue; |
+ } |
+ CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; |
+ if (pWidgetDict->KeyExist("MaxLen")) { |
+ return pWidgetDict->GetInteger("MaxLen"); |
+ } |
+ } |
+ return 0; |
+ } |
+ return pObj->GetInteger(); |
+} |
+int CPDF_FormField::CountSelectedItems() { |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+ if (pValue == NULL) { |
+ pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
if (pValue == NULL) { |
- pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pValue == NULL) { |
- return -1; |
- } |
- } |
- if (pValue->GetType() == PDFOBJ_NUMBER) { |
- return pValue->GetInteger(); |
- } |
- CFX_WideString sel_value; |
- if (pValue->GetType() == PDFOBJ_STRING) { |
- if (index != 0) { |
- return -1; |
- } |
- sel_value = pValue->GetUnicodeText(); |
- } else { |
- if (pValue->GetType() != PDFOBJ_ARRAY) { |
- return -1; |
- } |
- if (index < 0) { |
- return -1; |
- } |
- CPDF_Object* elementValue = ((CPDF_Array*)pValue)->GetElementValue(index); |
- sel_value = elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); |
- } |
- if (index < CountSelectedOptions()) { |
- int iOptIndex = GetSelectedOptionIndex(index); |
- CFX_WideString csOpt = GetOptionValue(iOptIndex); |
- if (csOpt == sel_value) { |
- return iOptIndex; |
- } |
- } |
- int nOpts = CountOptions(); |
- for (int i = 0; i < nOpts; i ++) { |
- if (sel_value == GetOptionValue(i)) { |
- return i; |
- } |
- } |
- return -1; |
+ return 0; |
+ } |
+ } |
+ if (pValue->GetType() == PDFOBJ_STRING) { |
+ if (pValue->GetString().IsEmpty()) { |
+ return 0; |
+ } |
+ return 1; |
+ } |
+ if (pValue->GetType() == PDFOBJ_NUMBER) { |
+ if (pValue->GetString().IsEmpty()) { |
+ return 0; |
+ } |
+ return 1; |
+ } |
+ if (pValue->GetType() != PDFOBJ_ARRAY) { |
+ return 0; |
+ } |
+ return ((CPDF_Array*)pValue)->GetCount(); |
} |
-FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) |
-{ |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = 0; |
- CFX_WideString csValue; |
- int iIndex = GetSelectedIndex(0); |
- if (iIndex >= 0) { |
- csValue = GetOptionLabel(iIndex); |
- } |
- if (GetType() == ListBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
- } |
- if (GetType() == ComboBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
- } |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- m_pDict->RemoveAt("V"); |
- m_pDict->RemoveAt("I"); |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- if (GetType() == ListBox) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
- } |
- if (GetType() == ComboBox) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
- } |
- } |
- if (CPDF_InterForm::m_bUpdateAP) { |
- UpdateAP(NULL); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
+int CPDF_FormField::GetSelectedIndex(int index) { |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+ if (pValue == NULL) { |
+ pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
+ if (pValue == NULL) { |
+ return -1; |
+ } |
+ } |
+ if (pValue->GetType() == PDFOBJ_NUMBER) { |
+ return pValue->GetInteger(); |
+ } |
+ CFX_WideString sel_value; |
+ if (pValue->GetType() == PDFOBJ_STRING) { |
+ if (index != 0) { |
+ return -1; |
+ } |
+ sel_value = pValue->GetUnicodeText(); |
+ } else { |
+ if (pValue->GetType() != PDFOBJ_ARRAY) { |
+ return -1; |
+ } |
+ if (index < 0) { |
+ return -1; |
+ } |
+ CPDF_Object* elementValue = ((CPDF_Array*)pValue)->GetElementValue(index); |
+ sel_value = |
+ elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); |
+ } |
+ if (index < CountSelectedOptions()) { |
+ int iOptIndex = GetSelectedOptionIndex(index); |
+ CFX_WideString csOpt = GetOptionValue(iOptIndex); |
+ if (csOpt == sel_value) { |
+ return iOptIndex; |
+ } |
+ } |
+ int nOpts = CountOptions(); |
+ for (int i = 0; i < nOpts; i++) { |
+ if (sel_value == GetOptionValue(i)) { |
+ return i; |
+ } |
+ } |
+ return -1; |
} |
-FX_BOOL CPDF_FormField::IsItemSelected(int index) |
-{ |
- ASSERT(GetType() == ComboBox || GetType() == ListBox); |
- if (index < 0 || index >= CountOptions()) { |
- return FALSE; |
- } |
- if (IsOptionSelected(index)) { |
- return TRUE; |
- } |
- CFX_WideString opt_value = GetOptionValue(index); |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) { |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = 0; |
+ CFX_WideString csValue; |
+ int iIndex = GetSelectedIndex(0); |
+ if (iIndex >= 0) { |
+ csValue = GetOptionLabel(iIndex); |
+ } |
+ if (GetType() == ListBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
+ } |
+ if (GetType() == ComboBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
+ } |
+ if (iRet < 0) { |
+ return FALSE; |
+ } |
+ } |
+ m_pDict->RemoveAt("V"); |
+ m_pDict->RemoveAt("I"); |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ if (GetType() == ListBox) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ if (GetType() == ComboBox) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ } |
+ if (CPDF_InterForm::m_bUpdateAP) { |
+ UpdateAP(NULL); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
+} |
+FX_BOOL CPDF_FormField::IsItemSelected(int index) { |
+ ASSERT(GetType() == ComboBox || GetType() == ListBox); |
+ if (index < 0 || index >= CountOptions()) { |
+ return FALSE; |
+ } |
+ if (IsOptionSelected(index)) { |
+ return TRUE; |
+ } |
+ CFX_WideString opt_value = GetOptionValue(index); |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+ if (pValue == NULL) { |
+ pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
if (pValue == NULL) { |
- pValue = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pValue == NULL) { |
- return FALSE; |
- } |
- } |
- if (pValue->GetType() == PDFOBJ_STRING) { |
- if (pValue->GetUnicodeText() == opt_value) { |
- return TRUE; |
- } |
- return FALSE; |
+ return FALSE; |
} |
- if (pValue->GetType() == PDFOBJ_NUMBER) { |
- if (pValue->GetString().IsEmpty()) { |
- return FALSE; |
- } |
- if (pValue->GetInteger() == index) { |
- return TRUE; |
- } |
- return FALSE; |
+ } |
+ if (pValue->GetType() == PDFOBJ_STRING) { |
+ if (pValue->GetUnicodeText() == opt_value) { |
+ return TRUE; |
} |
- if (pValue->GetType() != PDFOBJ_ARRAY) { |
- return FALSE; |
+ return FALSE; |
+ } |
+ if (pValue->GetType() == PDFOBJ_NUMBER) { |
+ if (pValue->GetString().IsEmpty()) { |
+ return FALSE; |
} |
- CPDF_Array* pArray = (CPDF_Array*)pValue; |
- int iPos = -1; |
- for (int j = 0; j < CountSelectedOptions(); j ++) { |
- if (GetSelectedOptionIndex(j) == index) { |
- iPos = j; |
- break; |
- } |
+ if (pValue->GetInteger() == index) { |
+ return TRUE; |
} |
- for (FX_DWORD i = 0; i < pArray->GetCount(); i ++) |
- if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && (int)i == iPos) { |
- return TRUE; |
- } |
return FALSE; |
+ } |
+ if (pValue->GetType() != PDFOBJ_ARRAY) { |
+ return FALSE; |
+ } |
+ CPDF_Array* pArray = (CPDF_Array*)pValue; |
+ int iPos = -1; |
+ for (int j = 0; j < CountSelectedOptions(); j++) { |
+ if (GetSelectedOptionIndex(j) == index) { |
+ iPos = j; |
+ break; |
+ } |
+ } |
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) |
+ if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && |
+ (int)i == iPos) { |
+ return TRUE; |
+ } |
+ return FALSE; |
} |
-FX_BOOL CPDF_FormField::SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) |
-{ |
- ASSERT(GetType() == ComboBox || GetType() == ListBox); |
- if (index < 0 || index >= CountOptions()) { |
- return FALSE; |
+FX_BOOL CPDF_FormField::SetItemSelection(int index, |
+ FX_BOOL bSelected, |
+ FX_BOOL bNotify) { |
+ ASSERT(GetType() == ComboBox || GetType() == ListBox); |
+ if (index < 0 || index >= CountOptions()) { |
+ return FALSE; |
+ } |
+ CFX_WideString opt_value = GetOptionValue(index); |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = 0; |
+ if (GetType() == ListBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); |
} |
- CFX_WideString opt_value = GetOptionValue(index); |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = 0; |
- if (GetType() == ListBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); |
- } |
- if (GetType() == ComboBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); |
- } |
- if (iRet < 0) { |
- return FALSE; |
- } |
+ if (GetType() == ComboBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); |
} |
- if (!bSelected) { |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
- if (pValue != NULL) { |
- if (m_Type == ListBox) { |
- SelectOption(index, FALSE); |
- if (pValue->GetType() == PDFOBJ_STRING) { |
- if (pValue->GetUnicodeText() == opt_value) { |
- m_pDict->RemoveAt("V"); |
- } |
- } else if (pValue->GetType() == PDFOBJ_ARRAY) { |
- CPDF_Array* pArray = CPDF_Array::Create(); |
- if (pArray == NULL) { |
- return FALSE; |
- } |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i ++) { |
- if (i != index) { |
- if (IsItemSelected(i)) { |
- opt_value = GetOptionValue(i); |
- pArray->AddString(PDF_EncodeText(opt_value)); |
- } |
- } |
- } |
- if (pArray->GetCount() < 1) { |
- pArray->Release(); |
- } else { |
- m_pDict->SetAt("V", pArray); |
- } |
- } |
- } else if (m_Type == ComboBox) { |
- m_pDict->RemoveAt("V"); |
- m_pDict->RemoveAt("I"); |
- } |
- } |
- } else { |
- if (m_Type == ListBox) { |
- SelectOption(index, TRUE); |
- if (!(m_Flags & FORMLIST_MULTISELECT)) { |
- m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); |
- } else { |
- CPDF_Array* pArray = CPDF_Array::Create(); |
- if (pArray == NULL) { |
- return FALSE; |
- } |
- FX_BOOL bSelected; |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i ++) { |
- if (i != index) { |
- bSelected = IsItemSelected(i); |
- } else { |
- bSelected = TRUE; |
- } |
- if (bSelected) { |
- opt_value = GetOptionValue(i); |
- pArray->AddString(PDF_EncodeText(opt_value)); |
- } |
- } |
- m_pDict->SetAt("V", pArray); |
- } |
- } else if (m_Type == ComboBox) { |
- m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); |
- CPDF_Array* pI = CPDF_Array::Create(); |
- if (pI == NULL) { |
- return FALSE; |
+ if (iRet < 0) { |
+ return FALSE; |
+ } |
+ } |
+ if (!bSelected) { |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); |
+ if (pValue != NULL) { |
+ if (m_Type == ListBox) { |
+ SelectOption(index, FALSE); |
+ if (pValue->GetType() == PDFOBJ_STRING) { |
+ if (pValue->GetUnicodeText() == opt_value) { |
+ m_pDict->RemoveAt("V"); |
+ } |
+ } else if (pValue->GetType() == PDFOBJ_ARRAY) { |
+ CPDF_Array* pArray = CPDF_Array::Create(); |
+ if (pArray == NULL) { |
+ return FALSE; |
+ } |
+ int iCount = CountOptions(); |
+ for (int i = 0; i < iCount; i++) { |
+ if (i != index) { |
+ if (IsItemSelected(i)) { |
+ opt_value = GetOptionValue(i); |
+ pArray->AddString(PDF_EncodeText(opt_value)); |
+ } |
} |
- pI->AddInteger(index); |
- m_pDict->SetAt("I", pI); |
+ } |
+ if (pArray->GetCount() < 1) { |
+ pArray->Release(); |
+ } else { |
+ m_pDict->SetAt("V", pArray); |
+ } |
} |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- if (GetType() == ListBox) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } else if (m_Type == ComboBox) { |
+ m_pDict->RemoveAt("V"); |
+ m_pDict->RemoveAt("I"); |
+ } |
+ } |
+ } else { |
+ if (m_Type == ListBox) { |
+ SelectOption(index, TRUE); |
+ if (!(m_Flags & FORMLIST_MULTISELECT)) { |
+ m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); |
+ } else { |
+ CPDF_Array* pArray = CPDF_Array::Create(); |
+ if (pArray == NULL) { |
+ return FALSE; |
} |
- if (GetType() == ComboBox) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
+ FX_BOOL bSelected; |
+ int iCount = CountOptions(); |
+ for (int i = 0; i < iCount; i++) { |
+ if (i != index) { |
+ bSelected = IsItemSelected(i); |
+ } else { |
+ bSelected = TRUE; |
+ } |
+ if (bSelected) { |
+ opt_value = GetOptionValue(i); |
+ pArray->AddString(PDF_EncodeText(opt_value)); |
+ } |
} |
- } |
- if (CPDF_InterForm::m_bUpdateAP) { |
- UpdateAP(NULL); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
-} |
-FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) |
-{ |
- ASSERT(GetType() == ComboBox || GetType() == ListBox); |
- if (index < 0 || index >= CountOptions()) { |
+ m_pDict->SetAt("V", pArray); |
+ } |
+ } else if (m_Type == ComboBox) { |
+ m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); |
+ CPDF_Array* pI = CPDF_Array::Create(); |
+ if (pI == NULL) { |
return FALSE; |
- } |
- int iDVIndex = GetDefaultSelectedItem(); |
- if (iDVIndex < 0) { |
- return FALSE; |
- } |
- return (iDVIndex == index); |
+ } |
+ pI->AddInteger(index); |
+ m_pDict->SetAt("I", pI); |
+ } |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ if (GetType() == ListBox) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ if (GetType() == ComboBox) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ } |
+ if (CPDF_InterForm::m_bUpdateAP) { |
+ UpdateAP(NULL); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
} |
-int CPDF_FormField::GetDefaultSelectedItem() |
-{ |
- ASSERT(GetType() == ComboBox || GetType() == ListBox); |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); |
- if (pValue == NULL) { |
- return -1; |
- } |
- CFX_WideString csDV = pValue->GetUnicodeText(); |
- if (csDV.IsEmpty()) { |
- return -1; |
- } |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i ++) { |
- if (csDV == GetOptionValue(i)) { |
- return i; |
- } |
- } |
+FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) { |
+ ASSERT(GetType() == ComboBox || GetType() == ListBox); |
+ if (index < 0 || index >= CountOptions()) { |
+ return FALSE; |
+ } |
+ int iDVIndex = GetDefaultSelectedItem(); |
+ if (iDVIndex < 0) { |
+ return FALSE; |
+ } |
+ return (iDVIndex == index); |
+} |
+int CPDF_FormField::GetDefaultSelectedItem() { |
+ ASSERT(GetType() == ComboBox || GetType() == ListBox); |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); |
+ if (pValue == NULL) { |
+ return -1; |
+ } |
+ CFX_WideString csDV = pValue->GetUnicodeText(); |
+ if (csDV.IsEmpty()) { |
return -1; |
+ } |
+ int iCount = CountOptions(); |
+ for (int i = 0; i < iCount; i++) { |
+ if (csDV == GetOptionValue(i)) { |
+ return i; |
+ } |
+ } |
+ return -1; |
} |
-void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) |
-{ |
- if (m_Type == PushButton) { |
- return; |
- } |
- if (m_Type == RadioButton || m_Type == CheckBox) { |
- return; |
- } |
- if (!m_pForm->m_bGenerateAP) { |
- return; |
- } |
- for (int i = 0; i < CountControls(); i ++) { |
- CPDF_FormControl* pControl = GetControl(i); |
- FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); |
- } |
+void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) { |
+ if (m_Type == PushButton) { |
+ return; |
+ } |
+ if (m_Type == RadioButton || m_Type == CheckBox) { |
+ return; |
+ } |
+ if (!m_pForm->m_bGenerateAP) { |
+ return; |
+ } |
+ for (int i = 0; i < CountControls(); i++) { |
+ CPDF_FormControl* pControl = GetControl(i); |
+ FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); |
+ } |
} |
-int CPDF_FormField::CountOptions() |
-{ |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); |
- if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { |
- return 0; |
- } |
- return ((CPDF_Array*)pValue)->GetCount(); |
+int CPDF_FormField::CountOptions() { |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); |
+ if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { |
+ return 0; |
+ } |
+ return ((CPDF_Array*)pValue)->GetCount(); |
} |
-CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) |
-{ |
- CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); |
- if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { |
- return CFX_WideString(); |
- } |
- CPDF_Object* pOption = ((CPDF_Array*)pValue)->GetElementValue(index); |
- if (pOption == NULL) { |
- return CFX_WideString(); |
- } |
- if (pOption->GetType() == PDFOBJ_ARRAY) { |
- pOption = ((CPDF_Array*)pOption)->GetElementValue(sub_index); |
- } |
- if (pOption == NULL || pOption->GetType() != PDFOBJ_STRING) { |
- return CFX_WideString(); |
- } |
- return ((CPDF_String*)pOption)->GetUnicodeText(); |
-} |
-CFX_WideString CPDF_FormField::GetOptionLabel(int index) |
-{ |
- return GetOptionText(index, 1); |
+CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) { |
+ CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); |
+ if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { |
+ return CFX_WideString(); |
+ } |
+ CPDF_Object* pOption = ((CPDF_Array*)pValue)->GetElementValue(index); |
+ if (pOption == NULL) { |
+ return CFX_WideString(); |
+ } |
+ if (pOption->GetType() == PDFOBJ_ARRAY) { |
+ pOption = ((CPDF_Array*)pOption)->GetElementValue(sub_index); |
+ } |
+ if (pOption == NULL || pOption->GetType() != PDFOBJ_STRING) { |
+ return CFX_WideString(); |
+ } |
+ return ((CPDF_String*)pOption)->GetUnicodeText(); |
} |
-CFX_WideString CPDF_FormField::GetOptionValue(int index) |
-{ |
- return GetOptionText(index, 0); |
+CFX_WideString CPDF_FormField::GetOptionLabel(int index) { |
+ return GetOptionText(index, 1); |
} |
-int CPDF_FormField::FindOption(CFX_WideString csOptLabel) |
-{ |
- int iCount = CountOptions(); |
- for (int i = 0; i < iCount; i ++) { |
- CFX_WideString csValue = GetOptionValue(i); |
- if (csValue == csOptLabel) { |
- return i; |
- } |
- } |
- return -1; |
+CFX_WideString CPDF_FormField::GetOptionValue(int index) { |
+ return GetOptionText(index, 0); |
} |
-int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex) |
-{ |
- if (iStartIndex < 0) { |
- iStartIndex = 0; |
- } |
- int iCount = CountOptions(); |
- for (; iStartIndex < iCount; iStartIndex ++) { |
- CFX_WideString csValue = GetOptionValue(iStartIndex); |
- if (csValue == csOptValue) { |
- return iStartIndex; |
- } |
- } |
- return -1; |
+int CPDF_FormField::FindOption(CFX_WideString csOptLabel) { |
+ int iCount = CountOptions(); |
+ for (int i = 0; i < iCount; i++) { |
+ CFX_WideString csValue = GetOptionValue(i); |
+ if (csValue == csOptLabel) { |
+ return i; |
+ } |
+ } |
+ return -1; |
} |
-FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify) |
-{ |
- ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
- CPDF_FormControl* pControl = GetControl(iControlIndex); |
- if (pControl == NULL) { |
- return FALSE; |
- } |
- if (!bChecked && pControl->IsChecked() == bChecked) { |
- return FALSE; |
- } |
- CFX_ByteArray statusArray; |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- SaveCheckedFieldStatus(this, statusArray); |
- } |
- CFX_WideString csWExport = pControl->GetExportValue(); |
- CFX_ByteString csBExport = PDF_EncodeText(csWExport); |
- int iCount = CountControls(); |
- FX_BOOL bUnison = PDF_FormField_IsUnison(this); |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pCtrl = GetControl(i); |
- if (bUnison) { |
- CFX_WideString csEValue = pCtrl->GetExportValue(); |
- if (csEValue == csWExport) { |
- if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { |
- pCtrl->CheckControl(bChecked); |
- } else if (bChecked) { |
- pCtrl->CheckControl(FALSE); |
- } |
- } else if (bChecked) { |
- pCtrl->CheckControl(FALSE); |
- } |
- } else { |
- if (i == iControlIndex) { |
- pCtrl->CheckControl(bChecked); |
- } else if (bChecked) { |
- pCtrl->CheckControl(FALSE); |
- } |
- } |
- } |
- CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); |
- if (pOpt == NULL || pOpt->GetType() != PDFOBJ_ARRAY) { |
- if (bChecked) { |
- m_pDict->SetAtName("V", csBExport); |
- } else { |
- CFX_ByteString csV; |
- CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); |
- if (pV != NULL) { |
- csV = pV->GetString(); |
- } |
- if (csV == csBExport) { |
- m_pDict->SetAtName("V", "Off"); |
- } |
- } |
- } else if (bChecked) { |
- CFX_ByteString csIndex; |
- csIndex.Format("%d", iControlIndex); |
- m_pDict->SetAtName("V", csIndex); |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
- } |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
+int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, |
+ int iStartIndex) { |
+ if (iStartIndex < 0) { |
+ iStartIndex = 0; |
+ } |
+ int iCount = CountOptions(); |
+ for (; iStartIndex < iCount; iStartIndex++) { |
+ CFX_WideString csValue = GetOptionValue(iStartIndex); |
+ if (csValue == csOptValue) { |
+ return iStartIndex; |
+ } |
+ } |
+ return -1; |
} |
-CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) |
-{ |
- ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
- CFX_WideString csExport = L"Off"; |
- FX_BOOL bChecked; |
- int iCount = CountControls(); |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pControl = GetControl(i); |
- if (bDefault) { |
- bChecked = pControl->IsDefaultChecked(); |
- } else { |
- bChecked = pControl->IsChecked(); |
- } |
- if (bChecked) { |
- csExport = pControl->GetExportValue(); |
- break; |
+FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, |
+ FX_BOOL bChecked, |
+ FX_BOOL bNotify) { |
+ ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
+ CPDF_FormControl* pControl = GetControl(iControlIndex); |
+ if (pControl == NULL) { |
+ return FALSE; |
+ } |
+ if (!bChecked && pControl->IsChecked() == bChecked) { |
+ return FALSE; |
+ } |
+ CFX_ByteArray statusArray; |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ SaveCheckedFieldStatus(this, statusArray); |
+ } |
+ CFX_WideString csWExport = pControl->GetExportValue(); |
+ CFX_ByteString csBExport = PDF_EncodeText(csWExport); |
+ int iCount = CountControls(); |
+ FX_BOOL bUnison = PDF_FormField_IsUnison(this); |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pCtrl = GetControl(i); |
+ if (bUnison) { |
+ CFX_WideString csEValue = pCtrl->GetExportValue(); |
+ if (csEValue == csWExport) { |
+ if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { |
+ pCtrl->CheckControl(bChecked); |
+ } else if (bChecked) { |
+ pCtrl->CheckControl(FALSE); |
} |
- } |
- return csExport; |
+ } else if (bChecked) { |
+ pCtrl->CheckControl(FALSE); |
+ } |
+ } else { |
+ if (i == iControlIndex) { |
+ pCtrl->CheckControl(bChecked); |
+ } else if (bChecked) { |
+ pCtrl->CheckControl(FALSE); |
+ } |
+ } |
+ } |
+ CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); |
+ if (pOpt == NULL || pOpt->GetType() != PDFOBJ_ARRAY) { |
+ if (bChecked) { |
+ m_pDict->SetAtName("V", csBExport); |
+ } else { |
+ CFX_ByteString csV; |
+ CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); |
+ if (pV != NULL) { |
+ csV = pV->GetString(); |
+ } |
+ if (csV == csBExport) { |
+ m_pDict->SetAtName("V", "Off"); |
+ } |
+ } |
+ } else if (bChecked) { |
+ CFX_ByteString csIndex; |
+ csIndex.Format("%d", iControlIndex); |
+ m_pDict->SetAtName("V", csIndex); |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
} |
-FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify) |
-{ |
- ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
- CFX_ByteArray statusArray; |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- SaveCheckedFieldStatus(this, statusArray); |
- } |
- int iCount = CountControls(); |
- for (int i = 0; i < iCount; i ++) { |
- CPDF_FormControl* pControl = GetControl(i); |
- CFX_WideString csExport = pControl->GetExportValue(); |
- if (csExport == value) { |
- if (bDefault) { |
- } else { |
- CheckControl(GetControlIndex(pControl), TRUE); |
- } |
- break; |
- } else { |
- if (bDefault) { |
- } else { |
- CheckControl(GetControlIndex(pControl), FALSE); |
- } |
- } |
+CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { |
+ ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
+ CFX_WideString csExport = L"Off"; |
+ FX_BOOL bChecked; |
+ int iCount = CountControls(); |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pControl = GetControl(i); |
+ if (bDefault) { |
+ bChecked = pControl->IsDefaultChecked(); |
+ } else { |
+ bChecked = pControl->IsChecked(); |
} |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
+ if (bChecked) { |
+ csExport = pControl->GetExportValue(); |
+ break; |
} |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
+ } |
+ return csExport; |
} |
-int CPDF_FormField::GetTopVisibleIndex() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); |
- if (pObj == NULL) { |
- return 0; |
- } |
- return pObj->GetInteger(); |
+FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, |
+ FX_BOOL bDefault, |
+ FX_BOOL bNotify) { |
+ ASSERT(GetType() == CheckBox || GetType() == RadioButton); |
+ CFX_ByteArray statusArray; |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ SaveCheckedFieldStatus(this, statusArray); |
+ } |
+ int iCount = CountControls(); |
+ for (int i = 0; i < iCount; i++) { |
+ CPDF_FormControl* pControl = GetControl(i); |
+ CFX_WideString csExport = pControl->GetExportValue(); |
+ if (csExport == value) { |
+ if (bDefault) { |
+ } else { |
+ CheckControl(GetControlIndex(pControl), TRUE); |
+ } |
+ break; |
+ } else { |
+ if (bDefault) { |
+ } else { |
+ CheckControl(GetControlIndex(pControl), FALSE); |
+ } |
+ } |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
} |
-int CPDF_FormField::CountSelectedOptions() |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pObj == NULL) { |
- return 0; |
- } |
- CPDF_Array* pArray = pObj->GetArray(); |
- if (pArray == NULL) { |
- return 0; |
- } |
- return (int)pArray->GetCount(); |
+int CPDF_FormField::GetTopVisibleIndex() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); |
+ if (pObj == NULL) { |
+ return 0; |
+ } |
+ return pObj->GetInteger(); |
} |
-int CPDF_FormField::GetSelectedOptionIndex(int index) |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pObj == NULL) { |
- return -1; |
- } |
- CPDF_Array* pArray = pObj->GetArray(); |
- if (pArray == NULL) { |
- return -1; |
- } |
- int iCount = (int)pArray->GetCount(); |
- if (iCount > 0 && index < iCount) { |
- return pArray->GetInteger(index); |
- } |
+int CPDF_FormField::CountSelectedOptions() { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
+ if (pObj == NULL) { |
+ return 0; |
+ } |
+ CPDF_Array* pArray = pObj->GetArray(); |
+ if (pArray == NULL) { |
+ return 0; |
+ } |
+ return (int)pArray->GetCount(); |
+} |
+int CPDF_FormField::GetSelectedOptionIndex(int index) { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
+ if (pObj == NULL) { |
+ return -1; |
+ } |
+ CPDF_Array* pArray = pObj->GetArray(); |
+ if (pArray == NULL) { |
return -1; |
+ } |
+ int iCount = (int)pArray->GetCount(); |
+ if (iCount > 0 && index < iCount) { |
+ return pArray->GetInteger(index); |
+ } |
+ return -1; |
} |
-FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) |
-{ |
- CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
- if (pObj == NULL) { |
- return FALSE; |
- } |
- CPDF_Array* pArray = pObj->GetArray(); |
- if (pArray == NULL) { |
- return FALSE; |
- } |
- int iCount = (int)pArray->GetCount(); |
- for (int i = 0; i < iCount; i ++) { |
- if (pArray->GetInteger(i) == iOptIndex) { |
- return TRUE; |
- } |
- } |
+FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { |
+ CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); |
+ if (pObj == NULL) { |
return FALSE; |
+ } |
+ CPDF_Array* pArray = pObj->GetArray(); |
+ if (pArray == NULL) { |
+ return FALSE; |
+ } |
+ int iCount = (int)pArray->GetCount(); |
+ for (int i = 0; i < iCount; i++) { |
+ if (pArray->GetInteger(i) == iOptIndex) { |
+ return TRUE; |
+ } |
+ } |
+ return FALSE; |
} |
-FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, FX_BOOL bSelected, FX_BOOL bNotify) |
-{ |
- CPDF_Array* pArray = m_pDict->GetArray("I"); |
- if (pArray == NULL) { |
- if (!bSelected) { |
- return TRUE; |
- } |
- pArray = CPDF_Array::Create(); |
- if (pArray == NULL) { |
- return FALSE; |
- } |
- m_pDict->SetAt("I", pArray); |
- } |
- FX_BOOL bReturn = FALSE; |
- for (int i = 0; i < (int)pArray->GetCount(); i ++) { |
- int iFind = pArray->GetInteger(i); |
- if (iFind == iOptIndex) { |
- if (bSelected) { |
- return TRUE; |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = 0; |
- CFX_WideString csValue = GetOptionLabel(iOptIndex); |
- if (GetType() == ListBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
- } |
- if (GetType() == ComboBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
- } |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- pArray->RemoveAt(i); |
- bReturn = TRUE; |
- break; |
- } else if (iFind > iOptIndex) { |
- if (!bSelected) { |
- continue; |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- int iRet = 0; |
- CFX_WideString csValue = GetOptionLabel(iOptIndex); |
- if (GetType() == ListBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
- } |
- if (GetType() == ComboBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
- } |
- if (iRet < 0) { |
- return FALSE; |
- } |
- } |
- CPDF_Number* pNum = CPDF_Number::Create(iOptIndex); |
- if (pNum == NULL) { |
- return FALSE; |
- } |
- pArray->InsertAt(i, pNum); |
- bReturn = TRUE; |
- break; |
- } |
- } |
- if (!bReturn) { |
- if (bSelected) { |
- pArray->AddInteger(iOptIndex); |
- } |
- if (pArray->GetCount() == 0) { |
- m_pDict->RemoveAt("I"); |
- } |
- } |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
- if (GetType() == ListBox) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
- } |
- if (GetType() == ComboBox) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
- } |
+FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, |
+ FX_BOOL bSelected, |
+ FX_BOOL bNotify) { |
+ CPDF_Array* pArray = m_pDict->GetArray("I"); |
+ if (pArray == NULL) { |
+ if (!bSelected) { |
+ return TRUE; |
} |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
-} |
-FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) |
-{ |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ pArray = CPDF_Array::Create(); |
+ if (pArray == NULL) { |
+ return FALSE; |
+ } |
+ m_pDict->SetAt("I", pArray); |
+ } |
+ FX_BOOL bReturn = FALSE; |
+ for (int i = 0; i < (int)pArray->GetCount(); i++) { |
+ int iFind = pArray->GetInteger(i); |
+ if (iFind == iOptIndex) { |
+ if (bSelected) { |
+ return TRUE; |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
int iRet = 0; |
- CFX_WideString csValue; |
- int iIndex = GetSelectedIndex(0); |
- if (iIndex >= 0) { |
- csValue = GetOptionLabel(iIndex); |
- } |
+ CFX_WideString csValue = GetOptionLabel(iOptIndex); |
if (GetType() == ListBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
+ iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
} |
if (GetType() == ComboBox) { |
- iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
+ iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
} |
if (iRet < 0) { |
- return FALSE; |
+ return FALSE; |
} |
- } |
- m_pDict->RemoveAt("I"); |
- if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ } |
+ pArray->RemoveAt(i); |
+ bReturn = TRUE; |
+ break; |
+ } else if (iFind > iOptIndex) { |
+ if (!bSelected) { |
+ continue; |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = 0; |
+ CFX_WideString csValue = GetOptionLabel(iOptIndex); |
if (GetType() == ListBox) { |
- m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
} |
if (GetType() == ComboBox) { |
- m_pForm->m_pFormNotify->AfterValueChange(this); |
+ iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
} |
- } |
- m_pForm->m_bUpdated = TRUE; |
- return TRUE; |
+ if (iRet < 0) { |
+ return FALSE; |
+ } |
+ } |
+ CPDF_Number* pNum = CPDF_Number::Create(iOptIndex); |
+ if (pNum == NULL) { |
+ return FALSE; |
+ } |
+ pArray->InsertAt(i, pNum); |
+ bReturn = TRUE; |
+ break; |
+ } |
+ } |
+ if (!bReturn) { |
+ if (bSelected) { |
+ pArray->AddInteger(iOptIndex); |
+ } |
+ if (pArray->GetCount() == 0) { |
+ m_pDict->RemoveAt("I"); |
+ } |
+ } |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ if (GetType() == ListBox) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ if (GetType() == ComboBox) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
} |
-void CPDF_FormField::LoadDA() |
-{ |
- CFX_ByteString DA; |
- if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { |
- DA = pObj_t->GetString(); |
- } |
- if (DA.IsEmpty() && m_pForm->m_pFormDict) { |
- DA = m_pForm->m_pFormDict->GetString("DA"); |
- } |
- if (DA.IsEmpty()) { |
- return; |
- } |
- CPDF_SimpleParser syntax(DA); |
- syntax.FindTagParam("Tf", 2); |
- CFX_ByteString font_name = syntax.GetWord(); |
- CPDF_Dictionary* pFontDict = NULL; |
- if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDict("DR") && |
- m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font") ) |
- pFontDict = m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")->GetDict(font_name); |
+FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) { |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ int iRet = 0; |
+ CFX_WideString csValue; |
+ int iIndex = GetSelectedIndex(0); |
+ if (iIndex >= 0) { |
+ csValue = GetOptionLabel(iIndex); |
+ } |
+ if (GetType() == ListBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); |
+ } |
+ if (GetType() == ComboBox) { |
+ iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); |
+ } |
+ if (iRet < 0) { |
+ return FALSE; |
+ } |
+ } |
+ m_pDict->RemoveAt("I"); |
+ if (bNotify && m_pForm->m_pFormNotify != NULL) { |
+ if (GetType() == ListBox) { |
+ m_pForm->m_pFormNotify->AfterSelectionChange(this); |
+ } |
+ if (GetType() == ComboBox) { |
+ m_pForm->m_pFormNotify->AfterValueChange(this); |
+ } |
+ } |
+ m_pForm->m_bUpdated = TRUE; |
+ return TRUE; |
+} |
+void CPDF_FormField::LoadDA() { |
+ CFX_ByteString DA; |
+ if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { |
+ DA = pObj_t->GetString(); |
+ } |
+ if (DA.IsEmpty() && m_pForm->m_pFormDict) { |
+ DA = m_pForm->m_pFormDict->GetString("DA"); |
+ } |
+ if (DA.IsEmpty()) { |
+ return; |
+ } |
+ CPDF_SimpleParser syntax(DA); |
+ syntax.FindTagParam("Tf", 2); |
+ CFX_ByteString font_name = syntax.GetWord(); |
+ CPDF_Dictionary* pFontDict = NULL; |
+ if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDict("DR") && |
+ m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")) |
+ pFontDict = m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")->GetDict( |
+ font_name); |
- if (pFontDict == NULL) { |
- return; |
- } |
- m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); |
- m_FontSize = FX_atof(syntax.GetWord()); |
+ if (pFontDict == NULL) { |
+ return; |
+ } |
+ m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); |
+ m_FontSize = FX_atof(syntax.GetWord()); |
} |