annotate foosdk/sdk/foobar2000/SDK/info_lookup_handler.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 //! Service used to access various external (online) track info lookup services, such as freedb, to update file tags with info retrieved from those services.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 class NOVTABLE info_lookup_handler : public service_base {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 enum {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 flag_album_lookup = 1 << 0,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 flag_track_lookup = 1 << 1,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 //! \since 2.2: supports lookup_noninteractive() call; before 2.2, lookup_noninteractive was assumed supported if info_lookup_handler_v2 was implemented.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 flag_noninteractive = 1 << 2,
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 //! Retrieves human-readable name of the lookup handler to display in user interface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 virtual void get_name(pfc::string_base & p_out) = 0;
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 //! Returns one or more of flag_track_lookup, flag_album_lookup, flag_noninteractive.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 virtual t_uint32 get_flags() = 0;
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 virtual fb2k::hicon_t get_icon(int p_width, int p_height) = 0;
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 //! Performs a lookup. Creates a modeless dialog and returns immediately.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 //! @param items Items to look up.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 //! @param notify Callback to notify caller when the operation has completed. Call on_completion with status code 0 to signal failure/abort, or with code 1 to signal success / new infos in metadb.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 //! @param parent Parent window for the lookup dialog. Caller will typically disable the window while lookup is in progress and enable it back when completion is signaled.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 virtual void lookup(metadb_handle_list_cref items,completion_notify::ptr notify,fb2k::hwnd_t parent) = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(info_lookup_handler);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 };
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
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 class NOVTABLE info_lookup_handler_v2 : public info_lookup_handler {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 FB2K_MAKE_SERVICE_INTERFACE(info_lookup_handler_v2, info_lookup_handler);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 virtual double merit() {return 0;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 virtual void lookup_noninteractive(metadb_handle_list_cref items, completion_notify::ptr notify, fb2k::hwnd_t parent) = 0;
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 //! Since 2.2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 class NOVTABLE info_lookup_handler_v3 : public info_lookup_handler_v2 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 FB2K_MAKE_SERVICE_INTERFACE(info_lookup_handler_v3, info_lookup_handler_v2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 //! Some handlers depend on user settings to access multiple actual online services. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 //! Use this method to retrieve individual handlers for specific services, with proper name, icon, etc.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 //! @returns Array of info_lookup_handler objects, null if there are no subhandlers and this object should be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 virtual fb2k::arrayRef subhandlers() { return nullptr; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 };