diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/General/gen_ff/wa2pldirobj.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/General/gen_ff/wa2pldirobj.h')
-rw-r--r-- | Src/Plugins/General/gen_ff/wa2pldirobj.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/Src/Plugins/General/gen_ff/wa2pldirobj.h b/Src/Plugins/General/gen_ff/wa2pldirobj.h new file mode 100644 index 00000000..59a1d9b1 --- /dev/null +++ b/Src/Plugins/General/gen_ff/wa2pldirobj.h @@ -0,0 +1,105 @@ +#pragma once +#include <api/script/objects/rootobj.h> +#include <api/script/objcontroller.h> +#include <api/script/scriptobj.h> +#include <bfc/depend.h> +#include <api/service/svcs/svc_scriptobji.h> +#include <api/wnd/wndclass/listwnd.h> +#include "wa2playlist.h" +#include <api/syscb/callbacks/playlistcb.h> +#include <api/service/svcs/svc_scriptobji.h> + +class PlDirObject; + +extern ScriptObjectController *pldirController; + +// ----------------------------------------------------------------------------------------------------- +// ScriptObject Service +class PlDirScriptObjectSvc : public svc_scriptObjectI { + +public: + PlDirScriptObjectSvc() {}; + virtual ~PlDirScriptObjectSvc() {}; + + static const char *getServiceName() { return "PlDir script object"; } + virtual ScriptObjectController *getController(int n); +}; + +// ----------------------------------------------------------------------------------------------------- +// Script classe GUIDS + +// {61A7ABAD-7D79-41f6-B1D0-E1808603A4F4} +static const GUID PLDIR_SCRIPTOBJECT_GUID = +{ 0x61a7abad, 0x7d79, 0x41f6, { 0xb1, 0xd0, 0xe1, 0x80, 0x86, 0x3, 0xa4, 0xf4 } }; + +// ----------------------------------------------------------------------------------------------------- +// ScriptObject Interface + +// PlDir +class PlDirObject : public ListWnd, public PlaylistCallbackI +{ + public: + + PlDirObject(); + virtual ~PlDirObject(); + + virtual int onInit(); + //virtual int onResize(); + virtual int wantResizeCols() { return 0; } + virtual int wantHScroll() { return 0; } + + virtual void onDoubleClick(int itemnum); + virtual Wa2Playlist *getPlaylist(int itemnum); + + /* PlaylistCallbackI method overrides */ + int playlistcb_added(size_t index); + int playlistcb_saved(size_t index); + + + int onDeferredCallback(intptr_t p1, intptr_t p2); + + void Populate(); + private: + PtrList<Wa2Playlist> playlists; + +}; + +// ----------------------------------------------------------------------------------------------------- +// ScriptObjectControllers for our script classes + +// PlDir +class PlDirScriptObjectController : public ScriptObjectControllerI { + public: + virtual const wchar_t *getClassName() { return L"PlDir"; } + virtual const wchar_t *getAncestorClassName() { return L"Object"; } + virtual ScriptObjectController *getAncestorController() { return NULL; } + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions() { return exportedFunction; } + virtual GUID getClassGuid() { return PLDIR_SCRIPTOBJECT_GUID; } + virtual int getInstantiable() { return 0; } + virtual int getReferenceable() { return 0; } + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + virtual ~PlDirScriptObjectController(); + + // Maki functions table + static scriptVar pldir_showCurrentlyPlayingEntry(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar pldir_getNumItems(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar pldir_renameItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item, scriptVar name); + static scriptVar pldir_getItemName(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); + static scriptVar pldir_playItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); + static scriptVar pldir_enqueueItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar item); + static scriptVar pldir_refresh(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + PtrList<PlDirObject> mylist; + + private: + static function_descriptor_struct exportedFunction[]; +}; + +extern const wchar_t plDirXuiObjectStr[]; +extern char plDirXuiSvcName[]; +class PlDirXuiSvc : public XuiObjectSvc<PlDirObject, plDirXuiObjectStr, plDirXuiSvcName> {}; + |