annotate foosdk/sdk/foobar2000/foo_sample/mainmenu.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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "playback_stream_capture.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 // I am foo_sample and these are *my* GUIDs
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 // Make your own when reusing code or else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 static const GUID guid_mainmenu_group_id = { 0x44963e7a, 0x4b2a, 0x4588, { 0xb0, 0x17, 0xa8, 0x69, 0x18, 0xcb, 0x8a, 0xa5 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 static const GUID guid_test = { 0x7c4726df, 0x3b2d, 0x4c7c,{ 0xad, 0xe8, 0x43, 0xd8, 0x46, 0xbe, 0xce, 0xa8 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 static const GUID guid_playbackstate = { 0xbd880c51, 0xf0cc, 0x473f,{ 0x9d, 0x14, 0xa6, 0x6e, 0x8c, 0xed, 0x25, 0xae } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 static const GUID guid_io = { 0xd380c333, 0xa72c, 0x4e1e,{ 0x97, 0xca, 0xed, 0x14, 0xeb, 0x93, 0x76, 0x23 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 static const GUID guid_listcontrol_advanced = { 0x27e29db0, 0x3079, 0x4ce0, { 0x8b, 0x4a, 0xa0, 0x78, 0xeb, 0x6, 0x56, 0x86 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 static const GUID guid_listcontrol_simple = { 0x34664996, 0x54cd, 0x48eb, { 0xa8, 0x20, 0x8f, 0x45, 0x7d, 0xcc, 0xff, 0xbb } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 static const GUID guid_listcontrol_ownerdata = { 0xc6d23696, 0x4be5, 0x4daa, { 0xaf, 0xb2, 0x35, 0x14, 0xa, 0x47, 0xd2, 0xf9 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 static const GUID guid_playback_stream_capture = { 0x3d0f0f1a, 0x6b5f, 0x42e3, { 0xa4, 0x6d, 0x49, 0x1, 0x3, 0xf0, 0x54, 0xb2 } };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15
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 static mainmenu_group_popup_factory g_mainmenu_group(guid_mainmenu_group_id, mainmenu_groups::file, mainmenu_commands::sort_priority_dontcare, "Sample component");
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 void RunPlaybackStateDemo(); //playback_state.cpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 void RunIOTest(); // IO.cpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 void RunListControlSimpleDemo(); // listcontrol-simple.cpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 void RunListControlOwnerDataDemo(); // listcontrol-ownerdata.cpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 void RunListControlAdvancedDemo(); // listcontrol-advanced.cpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 class mainmenu_commands_sample : public mainmenu_commands {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 enum {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 cmd_test = 0,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 cmd_playbackstate,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 cmd_io,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 cmd_listcontrol_simple,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 cmd_listcontrol_ownerdata,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 cmd_listcontrol_advanced,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 cmd_playback_stream_capture,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 cmd_total
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 t_uint32 get_command_count() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 return cmd_total;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 GUID get_command(t_uint32 p_index) override {
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 switch(p_index) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 case cmd_test: return guid_test;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 case cmd_playbackstate: return guid_playbackstate;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 case cmd_io: return guid_io;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 case cmd_listcontrol_simple: return guid_listcontrol_simple;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 case cmd_listcontrol_ownerdata: return guid_listcontrol_ownerdata;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 case cmd_listcontrol_advanced: return guid_listcontrol_advanced;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 case cmd_playback_stream_capture: return guid_playback_stream_capture;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 default: uBugCheck(); // should never happen unless somebody called us with invalid parameters - bail
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 }
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 void get_name(t_uint32 p_index,pfc::string_base & p_out) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 switch(p_index) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 case cmd_test: p_out = "Test command"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 case cmd_playbackstate: p_out = "Playback state demo"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 case cmd_io: p_out = "I/O test"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 case cmd_listcontrol_simple: p_out = "Simple CListControl demo"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 case cmd_listcontrol_ownerdata: p_out = "Owner-data CListControl demo"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 case cmd_listcontrol_advanced: p_out = "Advanced CListControl demo"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 case cmd_playback_stream_capture: p_out = "Playback stream capture demo"; break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 default: uBugCheck(); // should never happen unless somebody called us with invalid parameters - bail
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 bool get_description(t_uint32 p_index,pfc::string_base & p_out) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 switch(p_index) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 case cmd_test: p_out = "This is a sample menu command."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 case cmd_playbackstate: p_out = "Opens the playback state demo dialog."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 case cmd_io: p_out = "Runs I/O test."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 case cmd_listcontrol_simple: p_out = "Runs Simple CListControl demo."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 case cmd_listcontrol_ownerdata: p_out = "Runs Owner Data CListControl demo."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 case cmd_listcontrol_advanced: p_out = "Runs Advanced CListControl demo."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 case cmd_playback_stream_capture: p_out = "Toggles playback stream capture operation."; return true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 default: return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 GUID get_parent() override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 return guid_mainmenu_group_id;
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 void execute(t_uint32 p_index,service_ptr_t<service_base> p_callback) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 switch(p_index) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 case cmd_test:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 popup_message::g_show("This is a sample menu command.", "Blah");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 case cmd_playbackstate:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 RunPlaybackStateDemo();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 case cmd_io:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 RunIOTest();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 case cmd_listcontrol_simple:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 RunListControlSimpleDemo();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 case cmd_listcontrol_ownerdata:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 RunListControlOwnerDataDemo();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 case cmd_listcontrol_advanced:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 RunListControlAdvancedDemo();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 case cmd_playback_stream_capture:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 ToggleCapture();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 default:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 uBugCheck(); // should never happen unless somebody called us with invalid parameters - bail
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 bool get_display(t_uint32 p_index,pfc::string_base & p_text,t_uint32 & p_flags) override {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 // OPTIONAL method
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 bool rv = mainmenu_commands::get_display(p_index, p_text, p_flags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 if (rv) switch(p_index) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 case cmd_playback_stream_capture:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 // Add checkmark if capture is in progress
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 if ( IsCaptureRunning() ) p_flags |= flag_checked;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 break;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 return rv;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 }
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 static mainmenu_commands_factory_t<mainmenu_commands_sample> g_mainmenu_commands_sample_factory;