annotate foosdk/sdk/libPPUI/CListControlOwnerData.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 // ================================================================================
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 // CListControlOwnerData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 // ================================================================================
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 // Forwards all list data retrieval and manipulation calls to a host object.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 // Not intended for subclassing, just implement IListControlOwnerDataSource methods
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 // in your class.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 // ================================================================================
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 #include "CListControlComplete.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 class CListControlOwnerData;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 class IListControlOwnerDataSource {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 typedef const CListControlOwnerData * ctx_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 virtual size_t listGetItemCount( ctx_t ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 virtual pfc::string8 listGetSubItemText( ctx_t, size_t item, size_t subItem ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 virtual bool listCanReorderItems( ctx_t ) { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 virtual bool listReorderItems( ctx_t, const size_t*, size_t) {return false;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 virtual bool listRemoveItems( ctx_t, pfc::bit_array const & ) {return false;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 virtual void listItemAction(ctx_t, size_t) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 virtual void listSubItemClicked( ctx_t, size_t, size_t ) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 virtual bool listCanSelectItem( ctx_t, size_t ) { return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 virtual pfc::string8 listGetEditField(ctx_t ctx, size_t item, size_t subItem, size_t & lineCount) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 lineCount = 1; return listGetSubItemText( ctx, item, subItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 virtual void listSetEditField(ctx_t ctx, size_t item, size_t subItem, const char * val) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 // Returns InPlaceEdit::KFlag*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 virtual uint32_t listGetEditFlags(ctx_t ctx, size_t item, size_t subItem) {return 0;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 typedef InPlaceEdit::CTableEditHelperV2::autoComplete_t autoComplete_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 typedef InPlaceEdit::CTableEditHelperV2::combo_t combo_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 virtual autoComplete_t listGetAutoComplete(ctx_t, size_t item, size_t subItem) {return autoComplete_t();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 virtual combo_t listGetCombo(ctx_t, size_t item, size_t subItem) { return combo_t(); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 virtual bool listIsColumnEditable( ctx_t, size_t ) { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 virtual bool listKeyDown(ctx_t, UINT nChar, UINT nRepCnt, UINT nFlags) { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 virtual bool listKeyUp(ctx_t, UINT nChar, UINT nRepCnt, UINT nFlags) { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 // Allow type-find in this view?
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 // Called prior to a typefind pass attempt, you can either deny entirely, or prepare any necessary data and allow it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 virtual bool listAllowTypeFind( ctx_t ) { return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 // Allow type-find in a specific item/column?
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 virtual bool listAllowTypeFindHere( ctx_t, size_t item, size_t subItem ) { return true ;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 virtual void listColumnHeaderClick(ctx_t, size_t subItem) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 virtual void listBeforeDrawItemText( ctx_t, size_t item, CDCHandle dc ) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 virtual bool listIsSubItemGrayed(ctx_t, size_t item, size_t subItem) { return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 virtual void listSelChanged(ctx_t) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 virtual void listFocusChanged(ctx_t) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 virtual void listColumnsChanged(ctx_t) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 virtual bool listEditCanAdvanceHere(ctx_t, size_t item, size_t subItem, uint32_t whatHappened) {(void) item; (void) subItem, (void) whatHappened; return true;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 virtual uint32_t listQueryDragDropTypes(ctx_t) const { return 0; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 virtual DWORD listDragDropAccept(ctx_t, IDataObject* obj, bool& showDropMark) { return DROPEFFECT_NONE; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 virtual pfc::com_ptr_t<IDataObject> listMakeDataObject(ctx_t) {return nullptr;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 virtual void listOnDrop(ctx_t,IDataObject* obj, CPoint pt) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 virtual DWORD listDragDropSourceEffects(ctx_t) { return DROPEFFECT_MOVE | DROPEFFECT_COPY; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 virtual void listDragDropSourceSucceeded(ctx_t,DWORD effect) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 virtual CListControl::groupID_t listItemGroup(ctx_t, size_t) { return 0; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 virtual pfc::string8 listGroupText(ctx_t, size_t /*baseItem*/) { return ""; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 class IListControlOwnerDataCells {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 typedef const CListControlOwnerData * cellsCtx_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 virtual CListControl::cellType_t listCellType( cellsCtx_t, size_t item, size_t subItem ) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 virtual size_t listCellSpan( cellsCtx_t, size_t item, size_t subItem ) {return 1;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 virtual bool listCellCheckState( cellsCtx_t, size_t item, size_t subItem ) {return false; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 virtual void listCellSetCheckState( cellsCtx_t, size_t item, size_t subItem, bool state ) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 class CListControlOwnerData : public CListControlComplete {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 IListControlOwnerDataSource* const m_host;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 size_t m_listControlOwnerDataTag = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 CListControlOwnerData( IListControlOwnerDataSource * h) : m_host(h) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 BEGIN_MSG_MAP_EX(CListControlOwnerData)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 MSG_WM_KEYDOWN(OnKeyDown)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 MSG_WM_KEYUP(OnKeyUp)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 MSG_WM_SYSKEYDOWN(OnKeyDown)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 MSG_WM_SYSKEYUP(OnKeyUp)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 CHAIN_MSG_MAP(CListControlComplete)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 END_MSG_MAP()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 using CListControl_EditImpl::TableEdit_Abort;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 using CListControl_EditImpl::TableEdit_Start;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 using CListControl_EditImpl::TableEdit_IsActive;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 bool CanSelectItem( size_t idx ) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 return m_host->listCanSelectItem( this, idx );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 size_t GetItemCount() const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 return m_host->listGetItemCount( this );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 bool GetSubItemText(size_t item, size_t subItem, pfc::string_base & out) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 out = m_host->listGetSubItemText( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 void OnSubItemClicked( size_t item, size_t subItem, CPoint pt ) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 __super::OnSubItemClicked(item, subItem, pt); // needed to toggle checkboxes etc
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 m_host->listSubItemClicked( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 uint32_t QueryDragDropTypes() const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 uint32_t ret = (m_host->listCanReorderItems(this)) ? dragDrop_reorder : 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 ret |= m_host->listQueryDragDropTypes(this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 void RequestReorder( const size_t * order, size_t count) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 if ( ! m_host->listReorderItems( this, order, count )) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 this->OnItemsReordered( order, count );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 void RequestRemoveSelection() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 auto mask = this->GetSelectionMask();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 size_t oldCount = GetItemCount();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 if ( ! m_host->listRemoveItems( this, mask ) ) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 this->OnItemsRemoved( mask, oldCount );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 void ExecuteDefaultAction( size_t idx ) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 m_host->listItemAction( this, idx );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 size_t EvalTypeFind() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 if (! m_host->listAllowTypeFind(this) ) return SIZE_MAX;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 return __super::EvalTypeFind();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 bool AllowTypeFindInCell( size_t item, size_t subItem ) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 return __super::AllowTypeFindInCell( item, subItem ) && m_host->listAllowTypeFindHere( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 groupID_t GetItemGroup(t_size p_item) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 return m_host->listItemGroup(this, p_item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 bool GetGroupHeaderText2(size_t baseItem, pfc::string_base& out) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 out = m_host->listGroupText(this, baseItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 void OnFocusChanged(size_t oldFocus, size_t newFocus) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 __super::OnFocusChanged(oldFocus, newFocus);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 m_host->listFocusChanged(this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 void OnSelectionChanged(pfc::bit_array const & affected, pfc::bit_array const & status) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 __super::OnSelectionChanged(affected, status);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 m_host->listSelChanged(this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 void RenderItemText(t_size p_item,const CRect & p_itemRect,const CRect & p_updateRect,CDCHandle p_dc, bool allowColors) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 m_host->listBeforeDrawItemText(this, p_item, p_dc );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 __super::RenderItemText(p_item, p_itemRect, p_updateRect, p_dc, allowColors);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 void TableEdit_SetField(t_size item, t_size subItem, const char * value) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 m_host->listSetEditField(this, item, subItem, value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 void TableEdit_GetField(t_size item, t_size subItem, pfc::string_base & out, t_size & lineCount) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 lineCount = 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 out = m_host->listGetEditField(this, item, subItem, lineCount);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 t_uint32 TableEdit_GetEditFlags(t_size item, t_size subItem) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 auto ret = __super::TableEdit_GetEditFlags(item, subItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 ret |= m_host->listGetEditFlags( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 combo_t TableEdit_GetCombo(size_t item, size_t subItem) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 return m_host->listGetCombo(this, item, subItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 autoComplete_t TableEdit_GetAutoCompleteEx(t_size item, t_size subItem) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 return m_host->listGetAutoComplete( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 bool TableEdit_IsColumnEditable(t_size subItem) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 return m_host->listIsColumnEditable( this, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 void OnColumnHeaderClick(t_size index) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 m_host->listColumnHeaderClick(this, index);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 void OnColumnsChanged() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 __super::OnColumnsChanged();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 m_host->listColumnsChanged(this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 bool IsSubItemGrayed(size_t item, size_t subItem) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 return __super::IsSubItemGrayed(item, subItem) || m_host->listIsSubItemGrayed(this, item, subItem);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 DWORD DragDropAccept(IDataObject* obj, bool& showDropMark) override { return m_host->listDragDropAccept(this, obj, showDropMark); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 pfc::com_ptr_t<IDataObject> MakeDataObject() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 auto ret = m_host->listMakeDataObject(this);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 if (ret.is_empty()) ret = __super::MakeDataObject();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 void OnDrop(IDataObject* obj, CPoint pt) override { return m_host->listOnDrop(this, obj, pt); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 DWORD DragDropSourceEffects() override { return m_host->listDragDropSourceEffects(this); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 void DragDropSourceSucceeded(DWORD effect) override { m_host->listDragDropSourceSucceeded(this, effect); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 bool TableEdit_CanAdvanceHere( size_t item, size_t subItem, uint32_t whatHappened ) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 return m_host->listEditCanAdvanceHere(this, item, subItem, whatHappened);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 bool handled = m_host->listKeyDown(this, nChar, nRepCnt, nFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 SetMsgHandled( !! handled );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 bool handled = m_host->listKeyUp(this, nChar, nRepCnt, nFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 SetMsgHandled( !! handled );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 class CListControlOwnerDataCells : public CListControlOwnerData {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 IListControlOwnerDataCells * const m_cells;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 CListControlOwnerDataCells( IListControlOwnerDataSource * source, IListControlOwnerDataCells * cells ) : CListControlOwnerData(source), m_cells(cells) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 bool GetCellTypeSupported() const override {return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 bool GetCellCheckState( size_t item, size_t subItem ) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 return m_cells->listCellCheckState( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 void SetCellCheckState( size_t item, size_t subItem, bool value ) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 m_cells->listCellSetCheckState( this, item, subItem, value );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 __super::SetCellCheckState(item, subItem, value);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 cellType_t GetCellType( size_t item, size_t subItem ) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 return m_cells->listCellType( this, item, subItem );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 size_t GetSubItemSpan(size_t row, size_t column) const override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 return m_cells->listCellSpan( this, row, column );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 };