- Fix bug with addition of duplicates to the devices list

- Other small changes

svn path=/trunk/; revision=38795
This commit is contained in:
Dmitry Chapyshev 2009-01-16 16:53:32 +00:00
parent ae838b1c30
commit 78042b35fd

View file

@ -310,13 +310,11 @@ InitProbeListPage(HWND hwndDlg)
LoadString(hApplet, IDS_ADDNEWDEVICE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR)); LoadString(hApplet, IDS_ADDNEWDEVICE, szBuffer, sizeof(szBuffer) / sizeof(WCHAR));
Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE; Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
Item.pszText = (LPTSTR) szBuffer; Item.pszText = (LPWSTR) szBuffer;
Item.iItem = 0; Item.iItem = (INT) ListView_GetItemCount(hList);
Item.iImage = -1; Item.iImage = -1;
(VOID) ListView_InsertItem(hList, &Item); (VOID) ListView_InsertItem(hList, &Item);
(VOID) ListView_SetExtendedListViewStyle(hList, LVS_EX_FULLROWSELECT);
hDevInfo = SetupDiGetClassDevsEx(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT, NULL, NULL, 0); hDevInfo = SetupDiGetClassDevsEx(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT, NULL, NULL, 0);
if (hDevInfo == INVALID_HANDLE_VALUE) return; if (hDevInfo == INVALID_HANDLE_VALUE) return;
@ -328,6 +326,8 @@ InitProbeListPage(HWND hwndDlg)
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA); DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (Index = 0; TRUE; Index++) for (Index = 0; TRUE; Index++)
{ {
szBuffer[0] = L'\0';
if (!SetupDiEnumDeviceInfo(hDevInfo, Index, &DevInfoData)) break; if (!SetupDiEnumDeviceInfo(hDevInfo, Index, &DevInfoData)) break;
if (CM_Get_DevNode_Status_Ex(&ulStatus, &ulProblemNumber, DevInfoData.DevInst, 0, NULL) == CR_SUCCESS) if (CM_Get_DevNode_Status_Ex(&ulStatus, &ulProblemNumber, DevInfoData.DevInst, 0, NULL) == CR_SUCCESS)
@ -378,17 +378,21 @@ InitProbeListPage(HWND hwndDlg)
pstrStatusText = (PWSTR)HeapAlloc(hProcessHeap, 0, sizeof(szStatusText)); pstrStatusText = (PWSTR)HeapAlloc(hProcessHeap, 0, sizeof(szStatusText));
lstrcpy(pstrStatusText, szStatusText); lstrcpy(pstrStatusText, szStatusText);
if (szBuffer[0] != L'\0')
{
/* Set device name */ /* Set device name */
Item.pszText = (LPWSTR) szBuffer; Item.pszText = (LPWSTR) szBuffer;
Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; Item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
Item.lParam = (LPARAM) pstrStatusText; Item.lParam = (LPARAM) pstrStatusText;
Item.iItem = (INT) ListView_GetItemCount(hList); Item.iItem = (INT) ListView_GetItemCount(hList);
(VOID) ListView_InsertItem(hList, &Item); (VOID) ListView_InsertItem(hList, &Item);
}
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA); DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
} }
(VOID) ListView_SetImageList(hList, ImageListData.ImageList, LVSIL_SMALL); (VOID) ListView_SetImageList(hList, ImageListData.ImageList, LVSIL_SMALL);
(VOID) ListView_SetExtendedListViewStyle(hList, LVS_EX_FULLROWSELECT);
SetupDiDestroyDeviceInfoList(hDevInfo); SetupDiDestroyDeviceInfoList(hDevInfo);
} }
@ -406,12 +410,6 @@ ProbeListPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
} }
break; break;
case WM_COMMAND:
{
}
break;
case WM_NOTIFY: case WM_NOTIFY:
{ {
LPNMHDR lpnm = (LPNMHDR)lParam; LPNMHDR lpnm = (LPNMHDR)lParam;
@ -419,26 +417,16 @@ ProbeListPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
switch (lpnm->code) switch (lpnm->code)
{ {
case PSN_SETACTIVE: case PSN_SETACTIVE:
{
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK);
}
break;
case NM_CLICK:
{
Index = (INT) SendMessage(GetDlgItem(hwndDlg, IDC_PROBELIST), LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
if (Index != -1)
{ {
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT); PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_BACK | PSWIZB_NEXT);
} }
}
break; break;
case PSN_WIZNEXT: case PSN_WIZNEXT:
{ {
Index = (INT) SendMessage(GetDlgItem(hwndDlg, IDC_PROBELIST), LVM_GETNEXTITEM, -1, LVNI_FOCUSED); Index = (INT) SendMessage(GetDlgItem(hwndDlg, IDC_PROBELIST), LVM_GETNEXTITEM, -1, LVNI_FOCUSED);
if (Index != -1) if (Index == -1) Index = 0;
{
if (Index == 0) if (Index == 0)
{ {
SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTWAYPAGE); SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_SELECTWAYPAGE);
@ -457,7 +445,6 @@ ProbeListPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_HWSTATUSPAGE); SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_HWSTATUSPAGE);
} }
}
return TRUE; return TRUE;
} }
} }
@ -535,8 +522,6 @@ DevStatusPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
/* Set title font */ /* Set title font */
SendDlgItemMessage(hwndDlg, IDC_FINISHTITLE, WM_SETFONT, (WPARAM)hTitleFont, (LPARAM)TRUE); SendDlgItemMessage(hwndDlg, IDC_FINISHTITLE, WM_SETFONT, (WPARAM)hTitleFont, (LPARAM)TRUE);
/* Set status text */
SetWindowText(GetDlgItem(hwndDlg, IDC_HWSTATUSEDIT), pDeviceStatusText);
} }
break; break;
@ -548,6 +533,9 @@ DevStatusPageDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
case PSN_SETACTIVE: case PSN_SETACTIVE:
{ {
/* Set status text */
SetWindowText(GetDlgItem(hwndDlg, IDC_HWSTATUSEDIT), pDeviceStatusText);
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_FINISH | PSWIZB_BACK); PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_FINISH | PSWIZB_BACK);
} }
break; break;