|
1
|
1 #pragma once
|
|
|
2
|
|
|
3 #include <memory>
|
|
|
4 #include "InPlaceEdit.h"
|
|
|
5
|
|
|
6 namespace InPlaceEdit {
|
|
|
7 class NOVTABLE CTableEditHelperV2 {
|
|
|
8 public:
|
|
|
9 virtual RECT TableEdit_GetItemRect(t_size item, t_size subItem) const = 0;
|
|
|
10 virtual void TableEdit_GetField(t_size item, t_size subItem, pfc::string_base & out, t_size & lineCount) = 0;
|
|
|
11 virtual void TableEdit_SetField(t_size item, t_size subItem, const char * value) = 0;
|
|
|
12 virtual HWND TableEdit_GetParentWnd() const = 0;
|
|
|
13 virtual bool TableEdit_Advance(t_size & item, t_size & subItem, t_uint32 whathappened);
|
|
|
14 virtual bool TableEdit_CanAdvanceHere(size_t item, size_t subItem, uint32_t whatHappened) const { (void)item; (void)subItem; (void)whatHappened; return true; }
|
|
|
15 virtual void TableEdit_Finished() {}
|
|
|
16 virtual t_size TableEdit_GetItemCount() const = 0;
|
|
|
17 virtual t_size TableEdit_GetColumnCount() const = 0;
|
|
|
18 virtual void TableEdit_SetItemFocus(t_size item, t_size subItem) = 0;
|
|
|
19 virtual bool TableEdit_IsColumnEditable(t_size subItem) const { (void)subItem; return true; }
|
|
|
20 virtual void TableEdit_GetColumnOrder(t_size * out, t_size count) const { order_helper::g_fill(out, count); }
|
|
|
21 virtual t_uint32 TableEdit_GetEditFlags(t_size item, t_size subItem) const { (void)item; (void)subItem; return 0; }
|
|
|
22 virtual bool TableEdit_GetDarkMode() const { return false; }
|
|
|
23 virtual bool TableEdit_GetAutoComplete(t_size item, t_size subItem, pfc::com_ptr_t<IUnknown>& out) { (void)item; (void)subItem; (void)out; return false; }
|
|
|
24
|
|
|
25 struct autoComplete_t {
|
|
|
26 pfc::com_ptr_t<IUnknown> data;
|
|
|
27 enum { // ACO_* equivalents
|
|
|
28 optsNone = 0,
|
|
|
29 optsDefault = 1,
|
|
|
30 optsAutoSuggest = 1,
|
|
|
31 optsAutoAppend = 3,
|
|
|
32 };
|
|
|
33 DWORD options = optsNone;
|
|
|
34 };
|
|
|
35 virtual autoComplete_t TableEdit_GetAutoCompleteEx( size_t item, size_t sub );
|
|
|
36
|
|
|
37 struct combo_t {
|
|
|
38 unsigned iDefault = 0;
|
|
|
39 pfc::string_list_impl strings;
|
|
|
40 };
|
|
|
41
|
|
|
42 virtual combo_t TableEdit_GetCombo(size_t item, size_t sub);
|
|
|
43
|
|
|
44 HWND TableEdit_Start(t_size item, t_size subItem);
|
|
|
45 void TableEdit_Abort(bool forwardContent);
|
|
|
46 bool TableEdit_IsActive() const { return !!m_taskKill; }
|
|
|
47 protected:
|
|
|
48 ~CTableEditHelperV2() { tableEdit_cancel_task(); }
|
|
|
49 CTableEditHelperV2() {}
|
|
|
50 private:
|
|
|
51 void tableEdit_on_task_completion(unsigned p_status);
|
|
|
52 reply_t tableEdit_create_task();
|
|
|
53 bool tableEdit_cancel_task();
|
|
|
54
|
|
|
55 t_size ColumnToPosition(t_size col) const;
|
|
|
56 t_size PositionToColumn(t_size pos) const;
|
|
|
57 t_size EditableColumnCount() const;
|
|
|
58 void GrabColumnOrder(pfc::array_t<t_size> & buffer) const { buffer.set_size(TableEdit_GetColumnCount()); TableEdit_GetColumnOrder(buffer.get_ptr(), buffer.get_size()); }
|
|
|
59 HWND _ReStart();
|
|
|
60
|
|
|
61 t_size m_editItem = SIZE_MAX, m_editSubItem = SIZE_MAX;
|
|
|
62 t_uint32 m_editFlags = 0;
|
|
|
63 pfc::rcptr_t<pfc::string8> m_editData;
|
|
|
64 std::shared_ptr< combo_t > m_editDataCombo;
|
|
|
65
|
|
|
66 std::shared_ptr<bool> m_taskKill;
|
|
|
67
|
|
|
68 CTableEditHelperV2( const CTableEditHelperV2 & ) = delete;
|
|
|
69 void operator=( const CTableEditHelperV2 & ) = delete;
|
|
|
70 };
|
|
|
71
|
|
|
72
|
|
|
73
|
|
|
74
|
|
|
75 class NOVTABLE CTableEditHelperV2_ListView : public CTableEditHelperV2 {
|
|
|
76 public:
|
|
|
77 RECT TableEdit_GetItemRect(t_size item, t_size subItem) const override;
|
|
|
78 void TableEdit_GetField(t_size item, t_size subItem, pfc::string_base & out, t_size & lineCount) override;
|
|
|
79 void TableEdit_SetField(t_size item, t_size subItem, const char * value) override;
|
|
|
80
|
|
|
81 t_size TableEdit_GetColumnCount() const override;
|
|
|
82
|
|
|
83 t_size TableEdit_GetItemCount() const override;
|
|
|
84 void TableEdit_SetItemFocus(t_size item, t_size subItem) override;
|
|
|
85
|
|
|
86 void TableEdit_GetColumnOrder(t_size * out, t_size count) const override;
|
|
|
87 };
|
|
|
88 }
|