/* * PROJECT: ReactOS system libraries * LICENSE: GPL - See COPYING in the top level directory * FILE: dll/win32/syssetup/proppage.c * PURPOSE: Property page providers * PROGRAMMERS: Copyright 2018 Eric Kohl */ #include "precomp.h" #define NDEBUG #include DWORD MouseSampleRates[] = {20, 40, 60, 80, 100, 200}; /* * @implemented */ BOOL WINAPI CdromPropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { DPRINT("CdromPropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); return FALSE; } /* * @implemented */ BOOL WINAPI DiskPropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { DPRINT("DiskPropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); return FALSE; } /* * @implemented */ BOOL WINAPI EisaUpHalPropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { DPRINT("EisaUpHalPropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); return FALSE; } /* * @unimplemented */ BOOL WINAPI LegacyDriverPropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { DPRINT1("LegacyDriverPropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); UNIMPLEMENTED; return FALSE; } static VOID MouseOnDialogInit( HWND hwndDlg, LPARAM lParam) { WCHAR szBuffer[64]; UINT i; /* Add the sample rates */ for (i = 0; i < ARRAYSIZE(MouseSampleRates); i++) { wsprintf(szBuffer, L"%lu", MouseSampleRates[i]); SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSESAMPLERATE, CB_ADDSTRING, 0, (LPARAM)szBuffer); } /* Add the detection options */ for (i = IDS_DETECTIONDISABLED; i <= IDS_ASSUMEPRESENT; i++) { LoadStringW(hDllInstance, i, szBuffer, ARRAYSIZE(szBuffer)); SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSEWHEEL, CB_ADDSTRING, 0, (LPARAM)szBuffer); } /* Set the input buffer length range: 100-300 */ SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSEINPUTUPDN, UDM_SETRANGE32, 100, 300); SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSEINPUTUPDN, UDM_SETPOS32, 0, 100); } static VOID MouseOnCommand( HWND hwndDlg, WPARAM wParam, LPARAM lParam) { switch (LOWORD(wParam)) { case IDC_PS2MOUSESAMPLERATE: case IDC_PS2MOUSEWHEEL: case IDC_PS2MOUSEINPUTLEN: case IDC_PS2MOUSEFASTINIT: if (HIWORD(wParam) == CBN_SELCHANGE || HIWORD(wParam) == CBN_EDITCHANGE) { /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; case IDC_PS2MOUSEDEFAULTS: if (HIWORD(wParam) == BN_CLICKED) { /* Sample rate: 100 */ SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSESAMPLERATE, CB_SETCURSEL, 4, 0); /* Wheel detection: Assume wheel present */ SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSEWHEEL, CB_SETCURSEL, 2, 0); /* Input buffer length: 100 packets */ SendDlgItemMessageW(hwndDlg, IDC_PS2MOUSEINPUTUPDN, UDM_SETPOS32, 0, 100); /* Fast Initialization: Checked */ SendDlgItemMessage(hwndDlg, IDC_PS2MOUSEFASTINIT, BM_SETCHECK, (WPARAM)BST_CHECKED, (LPARAM)0); /* Enable the Apply button */ PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; default: break; } } static BOOL MouseOnNotify( HWND hwndDlg, WPARAM wParam, LPARAM lParam) { switch (((LPNMHDR)lParam)->idFrom) { case IDC_PS2MOUSEINPUTUPDN: if (((LPNMHDR)lParam)->code == UDN_DELTAPOS) { ((LPNMUPDOWN)lParam)->iDelta *= 10; return FALSE; } break; } return FALSE; } static INT_PTR CALLBACK MouseDlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { DPRINT("MouseDlgProc\n"); switch (uMsg) { case WM_INITDIALOG: MouseOnDialogInit(hwndDlg, lParam); return TRUE; case WM_COMMAND: MouseOnCommand(hwndDlg, wParam, lParam); break; case WM_NOTIFY: return MouseOnNotify(hwndDlg, wParam, lParam); } return FALSE; } /* * @implemented */ BOOL WINAPI PS2MousePropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { PROPSHEETPAGEW PropSheetPage; HPROPSHEETPAGE hPropSheetPage; DPRINT("PS2MousePropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); if (lpPropSheetPageRequest->PageRequested != SPPSR_ENUM_ADV_DEVICE_PROPERTIES) return FALSE; PropSheetPage.dwSize = sizeof(PROPSHEETPAGEW); PropSheetPage.dwFlags = 0; PropSheetPage.hInstance = hDllInstance; PropSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_PS2MOUSEPROPERTIES); PropSheetPage.pfnDlgProc = MouseDlgProc; PropSheetPage.lParam = 0; PropSheetPage.pfnCallback = NULL; hPropSheetPage = CreatePropertySheetPageW(&PropSheetPage); if (hPropSheetPage == NULL) { DPRINT1("CreatePropertySheetPageW() failed!\n"); return FALSE; } if (!(*lpfnAddPropSheetPageProc)(hPropSheetPage, lParam)) { DPRINT1("lpfnAddPropSheetPageProc() failed!\n"); DestroyPropertySheetPage(hPropSheetPage); return FALSE; } return TRUE; } /* * @implemented */ BOOL WINAPI TapePropPageProvider( _In_ PSP_PROPSHEETPAGE_REQUEST lpPropSheetPageRequest, _In_ LPFNADDPROPSHEETPAGE lpfnAddPropSheetPageProc, _In_ LPARAM lParam) { DPRINT("TapePropPageProvider(%p %p %lx)\n", lpPropSheetPageRequest, lpfnAddPropSheetPageProc, lParam); return FALSE; } /* EOF */