aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/SendTo.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nu/SendTo.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/nu/SendTo.h')
-rw-r--r--Src/nu/SendTo.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/Src/nu/SendTo.h b/Src/nu/SendTo.h
new file mode 100644
index 00000000..597b1b6c
--- /dev/null
+++ b/Src/nu/SendTo.h
@@ -0,0 +1,106 @@
+#ifndef NULLSOFT_SEND_TO_HELPER_CLASS_H
+#define NULLSOFT_SEND_TO_HELPER_CLASS_H
+
+#include "../gen_ml/ml_ipc.h"
+#include "../gen_ml/ml.h"
+#include "../winamp/wa_ipc.h"
+
+class SendToMenu
+{
+public:
+ SendToMenu(winampMediaLibraryPlugin &_plugin) : IPC_LIBRARY_SENDTOMENU(0), plugin(&_plugin)
+ {
+ memset(&sendTo, 0, sizeof(sendTo));
+ }
+ void AddHere(HWND hwnd, HMENU hMenu, int type)
+ {
+ sendTo.mode = 0;
+ sendTo.hwnd = 0;
+ sendTo.build_hMenu = 0;
+
+ IPC_LIBRARY_SENDTOMENU = SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&"LibrarySendToMenu", IPC_REGISTER_WINAMP_IPCMESSAGE);
+ if (IPC_LIBRARY_SENDTOMENU > 65536 && SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)0, IPC_LIBRARY_SENDTOMENU) == (LRESULT)-1)
+ {
+ sendTo.mode = 1;
+ sendTo.hwnd = hwnd;
+ sendTo.data_type = type; //ML_TYPE_ITEMRECORDLIST;
+ sendTo.build_hMenu = hMenu;
+ }
+ }
+ bool WasClicked(int popUpReturnVal)
+ {
+ if (sendTo.mode == 2)
+ {
+ sendTo.menu_id = popUpReturnVal;
+ if (SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU) == (LRESULT)-1)
+ return true;
+ }
+ return false;
+ }
+ void Cleanup()
+ {
+ if (sendTo.mode)
+ {
+ sendTo.mode = 4;
+ SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU); // cleanup
+ }
+ sendTo.build_hMenu = 0;
+ }
+
+ bool InitPopupMenu(WPARAM wParam)
+ {
+ if (wParam && (HMENU)wParam == sendTo.build_hMenu && sendTo.mode == 1)
+ {
+ if (SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU) == (LRESULT)-1)
+ sendTo.mode = 2;
+
+ return true;
+ }
+ return false;
+ }
+
+ // still need to free it on your own
+ void SendItemRecordList(itemRecordList *obj)
+ {
+ sendTo.data_type = ML_TYPE_ITEMRECORDLIST;
+ sendTo.mode = 3;
+ sendTo.data = (void*) & obj;
+
+ SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU);
+ }
+
+ void SendFilenames(const char *filenames)
+ {
+ sendTo.data_type = ML_TYPE_FILENAMES;
+ sendTo.mode = 3;
+ sendTo.data = (void*)filenames;
+
+ SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU);
+ }
+
+ void SendFilenames(const wchar_t *filenames)
+ {
+ sendTo.data_type = ML_TYPE_FILENAMESW;
+ sendTo.mode = 3;
+ sendTo.data = (void*)filenames;
+
+ SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU);
+ }
+
+
+ LRESULT SendPlaylist(mlPlaylist *playlist)
+ {
+ sendTo.data_type = ML_TYPE_PLAYLIST;
+ sendTo.mode = 3;
+ sendTo.data = (void*)playlist;
+
+ return SendMessage(plugin->hwndWinampParent, WM_WA_IPC, (WPARAM)&sendTo, IPC_LIBRARY_SENDTOMENU);
+ }
+
+private:
+ LRESULT IPC_LIBRARY_SENDTOMENU;
+ librarySendToMenuStruct sendTo;
+ winampMediaLibraryPlugin *plugin;
+};
+
+#endif