12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #include "main.h"
- #include "api__ml_local.h"
- #include "resource.h"
- static WNDPROC PE_oldWndProc;
- static HMENU last_viewmenu = NULL;
- static WORD waCmdMenuID;
- static INT_PTR CALLBACK PE_newWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- if (uMsg == WM_COMMAND && wParam > 45000 && wParam < 57000)
- {
- int n = wParam - 45000;
- if (m_query_list[n])
- {
- queryItem *item = m_query_list[n];
- wchar_t configDir[MAX_PATH] = {0};
- PathCombineW(configDir, g_viewsDir, item->metafn);
- C_Config viewconf(configDir);
- main_playQuery(&viewconf, item->query, 0, 0);
- return 0;
- }
- }
- else if (uMsg == WM_INITMENUPOPUP)
- {
- HMENU hmenuPopup = (HMENU) wParam;
- if (hmenuPopup == wa_playlists_cmdmenu)
- {
- if (!waCmdMenuID)
- {
- waCmdMenuID = (WORD)SendMessage(plugin.hwndWinampParent,WM_WA_IPC,0,IPC_REGISTER_LOWORD_COMMAND);
- }
- if (last_viewmenu)
- {
- RemoveMenu(wa_playlists_cmdmenu, waCmdMenuID, MF_BYCOMMAND);
- DestroyMenu(last_viewmenu);
- last_viewmenu = NULL;
- }
- mlGetTreeStruct mgts = { 1000, 45000, -1};
- last_viewmenu = (HMENU)SendMessage(plugin.hwndLibraryParent, WM_ML_IPC, (WPARAM) & mgts, ML_IPC_GETTREE);
- if (last_viewmenu)
- {
- MENUITEMINFOW menuItem = {sizeof(MENUITEMINFOW), MIIM_SUBMENU | MIIM_ID | MIIM_TYPE, MFT_STRING,
- MFS_ENABLED, waCmdMenuID, last_viewmenu, NULL, NULL, NULL,
- WASABI_API_LNGSTRINGW(IDS_OPEN_MEDIA_LIBRARY_VIEW_RESULTS), 0};
- if (GetMenuItemCount(last_viewmenu) > 0)
- {
- InsertMenuItemW(wa_playlists_cmdmenu, 1, TRUE, &menuItem);
- }
- else
- {
- DestroyMenu(last_viewmenu);
- last_viewmenu=0;
- }
- }
- }
- }
- return CallWindowProc(PE_oldWndProc, hwndDlg, uMsg, wParam, lParam);
- }
- static HWND hwnd_pe = NULL;
- void HookPlaylistEditor()
- {
- hwnd_pe = (HWND)SendMessage(plugin.hwndWinampParent, WM_WA_IPC, IPC_GETWND_PE, IPC_GETWND);
- if (IsWindow(hwnd_pe))
- PE_oldWndProc = (WNDPROC) SetWindowLongPtrW(hwnd_pe, GWLP_WNDPROC, (LONG_PTR)PE_newWndProc);
- }
- void UnhookPlaylistEditor()
- {
- SetWindowLongPtrW(hwnd_pe, GWLP_WNDPROC, (LONG_PTR)PE_oldWndProc);
- }
|