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 "fpdfsdk/include/fxedit/fxet_edit.h" | 7 #include "fpdfsdk/include/fxedit/fxet_edit.h" |
8 #include "fpdfsdk/include/fxedit/fxet_list.h" | 8 #include "fpdfsdk/include/fxedit/fxet_list.h" |
9 #include "fpdfsdk/include/fxedit/fxet_stub.h" | |
10 | |
11 /* ------------------------------- CFX_ListItem | |
12 * ---------------------------------- */ | |
13 | 9 |
14 CFX_ListItem::CFX_ListItem() | 10 CFX_ListItem::CFX_ListItem() |
15 : m_pEdit(NULL), | 11 : m_pEdit(NULL), |
16 m_bSelected(FALSE), | 12 m_bSelected(FALSE), |
17 m_bCaret(FALSE), | 13 m_bCaret(FALSE), |
18 m_rcListItem(0.0f, 0.0f, 0.0f, 0.0f) { | 14 m_rcListItem(0.0f, 0.0f, 0.0f, 0.0f) { |
19 m_pEdit = IFX_Edit::NewEdit(); | 15 m_pEdit = IFX_Edit::NewEdit(); |
20 m_pEdit->SetAlignmentV(1); | 16 m_pEdit->SetAlignmentV(1); |
21 m_pEdit->Initialize(); | 17 m_pEdit->Initialize(); |
22 } | 18 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 return word.Word; | 89 return word.Word; |
94 } | 90 } |
95 | 91 |
96 CFX_WideString CFX_ListItem::GetText() const { | 92 CFX_WideString CFX_ListItem::GetText() const { |
97 if (m_pEdit) | 93 if (m_pEdit) |
98 return m_pEdit->GetText(); | 94 return m_pEdit->GetText(); |
99 | 95 |
100 return L""; | 96 return L""; |
101 } | 97 } |
102 | 98 |
103 /* ------------------------------------ CFX_List | |
104 * --------------------------------- */ | |
105 | |
106 CFX_List::CFX_List() | 99 CFX_List::CFX_List() |
107 : m_fFontSize(0.0f), m_pFontMap(NULL), m_bMultiple(FALSE) {} | 100 : m_fFontSize(0.0f), m_pFontMap(NULL), m_bMultiple(FALSE) {} |
108 | 101 |
109 CFX_List::~CFX_List() { | 102 CFX_List::~CFX_List() { |
110 Empty(); | 103 Empty(); |
111 } | 104 } |
112 | 105 |
113 void CFX_List::Empty() { | 106 void CFX_List::Empty() { |
114 for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) | 107 for (int32_t i = 0, sz = m_aListItems.GetSize(); i < sz; i++) |
115 delete m_aListItems.GetAt(i); | 108 delete m_aListItems.GetAt(i); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 } | 294 } |
302 | 295 |
303 CFX_WideString CFX_List::GetItemText(int32_t nIndex) const { | 296 CFX_WideString CFX_List::GetItemText(int32_t nIndex) const { |
304 if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) { | 297 if (CFX_ListItem* pListItem = m_aListItems.GetAt(nIndex)) { |
305 return pListItem->GetText(); | 298 return pListItem->GetText(); |
306 } | 299 } |
307 | 300 |
308 return L""; | 301 return L""; |
309 } | 302 } |
310 | 303 |
311 /* ------------------------------------ CPLST_Select | |
312 * ---------------------------------- */ | |
313 | |
314 CPLST_Select::CPLST_Select() {} | 304 CPLST_Select::CPLST_Select() {} |
315 | 305 |
316 CPLST_Select::~CPLST_Select() { | 306 CPLST_Select::~CPLST_Select() { |
317 for (int32_t i = 0, sz = m_aItems.GetSize(); i < sz; i++) | 307 for (int32_t i = 0, sz = m_aItems.GetSize(); i < sz; i++) |
318 delete m_aItems.GetAt(i); | 308 delete m_aItems.GetAt(i); |
319 | 309 |
320 m_aItems.RemoveAll(); | 310 m_aItems.RemoveAll(); |
321 } | 311 } |
322 | 312 |
323 void CPLST_Select::Add(int32_t nItemIndex) { | 313 void CPLST_Select::Add(int32_t nItemIndex) { |
324 int32_t nIndex = Find(nItemIndex); | 314 int32_t nIndex = Find(nItemIndex); |
325 | 315 |
326 if (nIndex < 0) | 316 if (nIndex < 0) { |
327 m_aItems.Add(new CPLST_Select_Item(nItemIndex, 1)); | 317 m_aItems.Add(new CPLST_Select_Item(nItemIndex, 1)); |
328 else { | 318 } else { |
329 if (CPLST_Select_Item* pItem = m_aItems.GetAt(nIndex)) { | 319 if (CPLST_Select_Item* pItem = m_aItems.GetAt(nIndex)) { |
330 pItem->nState = 1; | 320 pItem->nState = 1; |
331 } | 321 } |
332 } | 322 } |
333 } | 323 } |
334 | 324 |
335 void CPLST_Select::Add(int32_t nBeginIndex, int32_t nEndIndex) { | 325 void CPLST_Select::Add(int32_t nBeginIndex, int32_t nEndIndex) { |
336 if (nBeginIndex > nEndIndex) { | 326 if (nBeginIndex > nEndIndex) { |
337 int32_t nTemp = nEndIndex; | 327 int32_t nTemp = nEndIndex; |
338 nEndIndex = nBeginIndex; | 328 nEndIndex = nBeginIndex; |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 if (pItem->nState == -1) { | 401 if (pItem->nState == -1) { |
412 delete pItem; | 402 delete pItem; |
413 m_aItems.RemoveAt(i); | 403 m_aItems.RemoveAt(i); |
414 } else { | 404 } else { |
415 pItem->nState = 0; | 405 pItem->nState = 0; |
416 } | 406 } |
417 } | 407 } |
418 } | 408 } |
419 } | 409 } |
420 | 410 |
421 /* ------------------------------------ CFX_ListCtrl | |
422 * --------------------------------- */ | |
423 | |
424 CFX_ListCtrl::CFX_ListCtrl() | 411 CFX_ListCtrl::CFX_ListCtrl() |
425 : m_pNotify(NULL), | 412 : m_pNotify(NULL), |
426 m_bNotifyFlag(FALSE), | 413 m_bNotifyFlag(FALSE), |
427 m_ptScrollPos(0.0f, 0.0f), | 414 m_ptScrollPos(0.0f, 0.0f), |
428 m_nSelItem(-1), | 415 m_nSelItem(-1), |
429 m_nFootIndex(-1), | 416 m_nFootIndex(-1), |
430 m_bCtrlSel(FALSE), | 417 m_bCtrlSel(FALSE), |
431 m_nCaretIndex(-1) {} | 418 m_nCaretIndex(-1) {} |
432 | 419 |
433 CFX_ListCtrl::~CFX_ListCtrl() {} | 420 CFX_ListCtrl::~CFX_ListCtrl() {} |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 int32_t nIndex = GetLastSelected(); | 571 int32_t nIndex = GetLastSelected(); |
585 int32_t nFindIndex = FindNext(nIndex, nChar); | 572 int32_t nFindIndex = FindNext(nIndex, nChar); |
586 | 573 |
587 if (nFindIndex != nIndex) { | 574 if (nFindIndex != nIndex) { |
588 OnVK(nFindIndex, bShift, bCtrl); | 575 OnVK(nFindIndex, bShift, bCtrl); |
589 return TRUE; | 576 return TRUE; |
590 } | 577 } |
591 return FALSE; | 578 return FALSE; |
592 } | 579 } |
593 | 580 |
594 /* -------- inner methods ------- */ | |
595 | |
596 void CFX_ListCtrl::SetPlateRect(const CPDF_Rect& rect) { | 581 void CFX_ListCtrl::SetPlateRect(const CPDF_Rect& rect) { |
597 CFX_ListContainer::SetPlateRect(rect); | 582 CFX_ListContainer::SetPlateRect(rect); |
598 m_ptScrollPos.x = rect.left; | 583 m_ptScrollPos.x = rect.left; |
599 SetScrollPos(CPDF_Point(rect.left, rect.top)); | 584 SetScrollPos(CPDF_Point(rect.left, rect.top)); |
600 ReArrange(0); | 585 ReArrange(0); |
601 InvalidateItem(-1); | 586 InvalidateItem(-1); |
602 } | 587 } |
603 | 588 |
604 CPDF_Rect CFX_ListCtrl::GetItemRect(int32_t nIndex) const { | 589 CPDF_Rect CFX_ListCtrl::GetItemRect(int32_t nIndex) const { |
605 return InToOut(CFX_List::GetItemRect(nIndex)); | 590 return InToOut(CFX_List::GetItemRect(nIndex)); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 m_aSelItems.Done(); | 688 m_aSelItems.Done(); |
704 } | 689 } |
705 | 690 |
706 void CFX_ListCtrl::Select(int32_t nItemIndex) { | 691 void CFX_ListCtrl::Select(int32_t nItemIndex) { |
707 if (!IsValid(nItemIndex)) | 692 if (!IsValid(nItemIndex)) |
708 return; | 693 return; |
709 | 694 |
710 if (IsMultipleSel()) { | 695 if (IsMultipleSel()) { |
711 m_aSelItems.Add(nItemIndex); | 696 m_aSelItems.Add(nItemIndex); |
712 SelectItems(); | 697 SelectItems(); |
713 } else | 698 } else { |
714 SetSingleSelect(nItemIndex); | 699 SetSingleSelect(nItemIndex); |
| 700 } |
715 } | 701 } |
716 | 702 |
717 FX_BOOL CFX_ListCtrl::IsItemVisible(int32_t nItemIndex) const { | 703 FX_BOOL CFX_ListCtrl::IsItemVisible(int32_t nItemIndex) const { |
718 CPDF_Rect rcPlate = GetPlateRect(); | 704 CPDF_Rect rcPlate = GetPlateRect(); |
719 CPDF_Rect rcItem = GetItemRect(nItemIndex); | 705 CPDF_Rect rcItem = GetItemRect(nItemIndex); |
720 | 706 |
721 return rcItem.bottom >= rcPlate.bottom && rcItem.top <= rcPlate.top; | 707 return rcItem.bottom >= rcPlate.bottom && rcItem.top <= rcPlate.top; |
722 } | 708 } |
723 | 709 |
724 void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex) { | 710 void CFX_ListCtrl::ScrollToListItem(int32_t nItemIndex) { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
824 | 810 |
825 int32_t CFX_ListCtrl::GetItemIndex(const CPDF_Point& point) const { | 811 int32_t CFX_ListCtrl::GetItemIndex(const CPDF_Point& point) const { |
826 return CFX_List::GetItemIndex(OutToIn(point)); | 812 return CFX_List::GetItemIndex(OutToIn(point)); |
827 } | 813 } |
828 | 814 |
829 CFX_WideString CFX_ListCtrl::GetText() const { | 815 CFX_WideString CFX_ListCtrl::GetText() const { |
830 if (IsMultipleSel()) | 816 if (IsMultipleSel()) |
831 return GetItemText(m_nCaretIndex); | 817 return GetItemText(m_nCaretIndex); |
832 return GetItemText(m_nSelItem); | 818 return GetItemText(m_nSelItem); |
833 } | 819 } |
OLD | NEW |