diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_local/MLDBCallback.h | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/Plugins/Library/ml_local/MLDBCallback.h')
-rw-r--r-- | Src/Plugins/Library/ml_local/MLDBCallback.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_local/MLDBCallback.h b/Src/Plugins/Library/ml_local/MLDBCallback.h new file mode 100644 index 00000000..4fe48286 --- /dev/null +++ b/Src/Plugins/Library/ml_local/MLDBCallback.h @@ -0,0 +1,76 @@ +#pragma once +#include <api/syscb/callbacks/svccb.h> +#include <api/syscb/api_syscb.h> +#include "../ml_local/api_mldb.h" + +class MLDBCallback : public SysCallback +{ +private: + FOURCC GetEventType() + { + return api_mldb::SYSCALLBACK; + } + + int notify(int msg, intptr_t param1, intptr_t param2) + { + const wchar_t *filename = (const wchar_t *)param1; + + switch (msg) + { + case api_mldb::MLDB_FILE_ADDED: + OnFileAdded(filename); + return 1; + + case api_mldb::MLDB_FILE_REMOVED_PRE: + OnFileRemove_Pre(filename); + return 1; + + case api_mldb::MLDB_FILE_REMOVED_POST: + OnFileRemove_Post(filename); + return 1; + + case api_mldb::MLDB_FILE_UPDATED: + case api_mldb::MLDB_FILE_UPDATED_EXTERNAL: + OnFileUpdated(filename, (msg == api_mldb::MLDB_FILE_UPDATED)); + return 1; + + case api_mldb::MLDB_FILE_PLAYED: + OnFilePlayed(filename, + ((api_mldb::played_info *)param2)->played, + ((api_mldb::played_info *)param2)->count); + return 1; + + case api_mldb::MLDB_CLEARED: + OnCleared((const wchar_t **)param1, param2); + return 1; + + case api_mldb::MLDB_FILE_GET_CLOUD_STATUS: + { + OnGetCloudStatus((const wchar_t *)param1, (HMENU *)param2); + } + return 1; + + case api_mldb::MLDB_FILE_PROCESS_CLOUD_STATUS: + OnProcessCloudStatus(param1, (int *)param2); + return 1; + + default: + return 0; + } + } + virtual void OnFileAdded(const wchar_t *filename) {} + virtual void OnFileRemove_Pre(const wchar_t *filename) {} + virtual void OnFileRemove_Post(const wchar_t *filename) {} + virtual void OnFileUpdated(const wchar_t *filename, bool from_library) {} + virtual void OnFilePlayed(const wchar_t *filename, time_t played, int count) {} + virtual void OnCleared(const wchar_t **filenames, int count) {} + virtual void OnGetCloudStatus(const wchar_t *filename, HMENU *menu) {} + virtual void OnProcessCloudStatus(int menu_item, int *result) {} + +#define CBCLASS MLDBCallback + START_DISPATCH_INLINE; + CB(SYSCALLBACK_GETEVENTTYPE, GetEventType); + CB(SYSCALLBACK_NOTIFY, notify); + END_DISPATCH; +#undef CBCLASS +};
\ No newline at end of file |