winamp/Src/Plugins/Library/ml_local/ml_subclass.cpp

80 lines
2.1 KiB
C++

#include "main.h"
extern void AccessingGracenoteHack(int);
extern HWND subWnd;
// TODO: benski> a lot of things don't need to be part of gen_ml window - they could easily be done with a hidden window
LRESULT APIENTRY ml_newWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_USER+641:
{
AccessingGracenoteHack(wParam);
break;
}
case WM_ML_IPC:
{
INT_PTR ret = HandleIpcMessage((INT_PTR)lParam, (INT_PTR)wParam);
if (ret != 0)
{
SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, ret);
return ret; // supposed to return TRUE but thus is not working for me :(
}
}
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDM_DOSHITMENU_ADDNEWVIEW:
addNewQuery(hwndDlg);
return 0;
case IDM_ADD_PLEDIT:
add_pledit_to_library();
return 0;
case IDM_ADD_DIRS:
add_to_library(hwndDlg);
return 0;
case IDM_REMOVE_UNUSED_FILES:
Scan_RemoveFiles(hwndDlg);
if (m_curview_hwnd) SendMessage(m_curview_hwnd, WM_APP + 1, 0, 0); //update current view
return 0;
case IDM_RESCANFOLDERSNOW:
if (!g_bgscan_scanning) SendMessage(hwndDlg, WM_USER + 575, 0xffff00dd, 0);
return 0;
}
break;
case WM_USER + 575: //sent by prefs to start scanning
if (wParam == 0xffff00dd && !lParam)
{
if (!g_bgscan_scanning)
{
Scan_BackgroundScan();
}
}
break;
case WM_TIMER:
{
static int in_timer;
if (in_timer) return 0;
in_timer = 1;
if (wParam == 200) // decide if it is time to scan yet
{
if (!g_bgscan_scanning)
{
if (g_bgrescan_force || (g_bgrescan_do && (time(NULL) - g_bgscan_last_rescan) > g_bgrescan_int*60))
{
// send to the prefs page so it'll show the status if it's open
// (makes it easier to see if things are working with the rescan every x option)
if (IsWindow(subWnd)) SendMessage(subWnd, WM_USER+101, 0, 0);
Scan_BackgroundScan();
}
}
in_timer = 0;
return 0;
}
in_timer = 0;
}
break;
}
return CallWindowProc(ml_oldWndProc, hwndDlg, uMsg, wParam, lParam);
}