annotate foosdk/sdk/foobar2000/helpers/CTableEditHelper-Legacy.cpp @ 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 #include "StdAfx.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "CTableEditHelper-Legacy.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include <libPPUI/listview_helper.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 namespace InPlaceEdit {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 void CTableEditHelper::TableEdit_Start(HWND p_listview, unsigned p_item, unsigned p_column, unsigned p_itemcount, unsigned p_columncount, unsigned p_basecolumn, unsigned p_flags) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 if (m_notify.is_valid() || p_columncount == 0 || p_itemcount == 0 || p_item >= p_itemcount || p_column >= p_columncount) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 m_listview = p_listview;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 m_item = p_item;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 m_column = p_column;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 m_itemcount = p_itemcount;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 m_columncount = p_columncount;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 m_basecolumn = p_basecolumn;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 m_flags = p_flags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 _Start();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 void CTableEditHelper::TableEdit_Abort(bool p_forwardcontent) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 if (m_notify.is_valid()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 m_notify->orphan();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 m_notify.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 if (p_forwardcontent && (m_flags & KFlagReadOnly) == 0) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 if (m_content.is_valid()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 pfc::string8 temp(*m_content);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 m_content.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 TableEdit_SetItemText(m_item, m_column, temp);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 m_content.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 SetFocus(NULL);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 TableEdit_Finished();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 bool CTableEditHelper::TableEdit_GetItemText(unsigned p_item, unsigned p_column, pfc::string_base & p_out, unsigned & p_linecount) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 listview_helper::get_item_text(m_listview, p_item, p_column + m_basecolumn, p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 p_linecount = pfc::is_multiline(p_out) ? 5 : 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 void CTableEditHelper::TableEdit_SetItemText(unsigned p_item, unsigned p_column, const char * p_text) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 listview_helper::set_item_text(m_listview, p_item, p_column + m_basecolumn, p_text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 void CTableEditHelper::on_task_completion(unsigned p_taskid, unsigned p_state) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 if (p_taskid == KTaskID) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 m_notify.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 if (m_content.is_valid()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 if (p_state & InPlaceEdit::KEditFlagContentChanged) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 TableEdit_SetItemText(m_item, m_column, *m_content);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 m_content.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 /*if (InPlaceEdit::TableEditAdvance(m_item,m_column,m_itemcount,m_columncount,p_state))*/
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 if (TableEdit_OnEditCompleted(m_item, m_column, p_state) &&
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 InPlaceEdit::TableEditAdvance_ListView(m_listview, m_basecolumn, m_item, m_column, m_itemcount, m_columncount, p_state)) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 _Start();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 } else {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 TableEdit_Finished();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 CTableEditHelper::~CTableEditHelper() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 if (m_notify.is_valid()) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 m_notify->orphan();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 m_notify.release();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 }
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 void CTableEditHelper::_Start() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 listview_helper::select_single_item(m_listview, m_item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 m_content.new_t();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 unsigned linecount = 1;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 if (!TableEdit_GetItemText(m_item, m_column, *m_content, linecount)) return;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 m_notify = completion_notify_create(this, KTaskID);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 InPlaceEdit::Start_FromListViewEx(m_listview, m_item, m_column + m_basecolumn, linecount, m_flags, m_content, m_notify);
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 }