Author: gedmurphy Date: Fri Sep 29 20:38:38 2006 New Revision: 24297
URL: http://svn.reactos.org/svn/reactos?rev=24297&view=rev Log: - fix the treeview so it displays parent and child devices - display the device icons for each item - other bits and bats I'm too lazy to list - it still load slowly due to multiple calls to SetupDiGetClassDevs. Need to think of a better way of gathering the info. For now though, it works.
Modified: trunk/reactos/base/applications/devmgmt/En.rc trunk/reactos/base/applications/devmgmt/devmgmt.c trunk/reactos/base/applications/devmgmt/enumdevices.c trunk/reactos/base/applications/devmgmt/mainwnd.c trunk/reactos/base/applications/devmgmt/manifest.xml trunk/reactos/base/applications/devmgmt/misc.c trunk/reactos/base/applications/devmgmt/precomp.h trunk/reactos/base/applications/devmgmt/resource.h
Modified: trunk/reactos/base/applications/devmgmt/En.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/E... ============================================================================== --- trunk/reactos/base/applications/devmgmt/En.rc (original) +++ trunk/reactos/base/applications/devmgmt/En.rc Fri Sep 29 20:38:38 2006 @@ -2,20 +2,27 @@ BEGIN POPUP "&File" BEGIN - MENUITEM "E&xit", IDC_EXIT + MENUITEM "E&xit", IDC_EXIT END POPUP "Action" BEGIN - MENUITEM "Print", IDC_PRINT, GRAYED + MENUITEM "Print", IDC_PRINT, GRAYED MENUITEM SEPARATOR - MENUITEM "Properties...", IDC_PROP + MENUITEM "Properties...", IDC_PROP MENUITEM SEPARATOR - MENUITEM "Help", IDC_PROGHELP, GRAYED + MENUITEM "Help", IDC_PROGHELP, GRAYED + END + POPUP "View" + BEGIN + MENUITEM "Devices by type", IDC_STATIC + MENUITEM "Devices by connection", IDC_STATIC, GRAYED + MENUITEM "Resources by type", IDC_STATIC, GRAYED + MENUITEM "Resources by connection", IDC_STATIC, GRAYED END POPUP "Help" BEGIN - MENUITEM "Help", IDC_PROGHELP - MENUITEM "About", IDC_ABOUT + MENUITEM "Help", IDC_PROGHELP + MENUITEM "About", IDC_ABOUT END END
@@ -23,9 +30,9 @@ BEGIN POPUP "popup" BEGIN - MENUITEM "Properties...", IDC_PROP, GRAYED + MENUITEM "Properties...", IDC_PROP, GRAYED MENUITEM SEPARATOR - MENUITEM "Help", IDC_PROGHELP + MENUITEM "Help", IDC_PROGHELP END END
Modified: trunk/reactos/base/applications/devmgmt/devmgmt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/d... ============================================================================== --- trunk/reactos/base/applications/devmgmt/devmgmt.c (original) +++ trunk/reactos/base/applications/devmgmt/devmgmt.c Fri Sep 29 20:38:38 2006 @@ -38,6 +38,9 @@ return 1; }
+// FreeConsole(); +// AllocConsole(); + if (InitMainWindowImpl()) { hMainWnd = CreateMainWindow(lpAppName,
Modified: trunk/reactos/base/applications/devmgmt/enumdevices.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/e... ============================================================================== --- trunk/reactos/base/applications/devmgmt/enumdevices.c (original) +++ trunk/reactos/base/applications/devmgmt/enumdevices.c Fri Sep 29 20:38:38 2006 @@ -31,7 +31,7 @@ tvi.iSelectedImage = DevImage;
tvins.item = tvi; - tvins.hInsertAfter = hRoot; + tvins.hParent = hRoot;
return TreeView_InsertItem(hTV, &tvins); } @@ -39,23 +39,23 @@
static INT EnumDeviceClasses(INT ClassIndex, - TCHAR *DeviceClassName, - TCHAR *DeviceClassDesc, - BOOL *DevicePresent, + LPTSTR DevClassName, + LPTSTR DevClassDesc, + BOOL *DevPresent, INT *ClassImage) { GUID ClassGuid; HKEY KeyClass; - HDEVINFO hDevInfo; TCHAR ClassName[MAX_CLASS_NAME_LEN]; DWORD RequiredSize = MAX_CLASS_NAME_LEN; UINT Ret;
- *DevicePresent = FALSE; + *DevPresent = FALSE;
Ret = CM_Enumerate_Classes(ClassIndex, &ClassGuid, 0); + if (Ret != CR_SUCCESS) { /* all classes enumerated */ @@ -73,11 +73,11 @@ RequiredSize, &RequiredSize)) { - lstrcpy(DeviceClassName, ClassName); + lstrcpy(DevClassName, ClassName); } else { - *DeviceClassName = _T('\0'); + *DevClassName = _T('\0'); }
if (!SetupDiGetClassImageIndex(&ImageListData, @@ -88,13 +88,14 @@ *ClassImage = 41; }
- /* FIXME: why are we calling this here? */ + /* FIXME: do we need this? hDevInfo = SetupDiGetClassDevs(&ClassGuid, 0, NULL, DIGCF_PRESENT); if (hDevInfo == INVALID_HANDLE_VALUE) - return -2; + return 0; + */
KeyClass = SetupDiOpenClassRegKeyEx(&ClassGuid, MAXIMUM_ALLOWED, @@ -103,14 +104,15 @@ 0); if (KeyClass != INVALID_HANDLE_VALUE) { + DWORD dwSize = MAX_CLASS_NAME_LEN;
if (RegQueryValue(KeyClass, NULL, - DeviceClassDesc, + DevClassDesc, &dwSize) != ERROR_SUCCESS) { - *DeviceClassDesc = _T('\0'); + *DevClassDesc = _T('\0'); } } else @@ -118,10 +120,10 @@ return -3; }
- /* FIXME: Can we call this earlier, or see above? */ - SetupDiDestroyDeviceInfoList(hDevInfo); - - *DevicePresent = TRUE; + /* FIXME: see above? + SetupDiDestroyDeviceInfoList(hDevInfo); */ + + *DevPresent = TRUE;
RegCloseKey(KeyClass);
@@ -143,16 +145,16 @@ *DeviceName = _T('\0');
bRet = SetupDiClassGuidsFromName(DeviceClassName, - NULL, - RequiredSize, - &RequiredSize); + NULL, + RequiredSize, + &RequiredSize); if (RequiredSize == 0) return -2;
if (!bRet) { - guids = HeapAlloc(GetProcessHeap(), - 0, + guids = HeapAlloc(GetProcessHeap(), + 0, RequiredSize * sizeof(GUID)); if (guids == NULL) return -1; @@ -170,12 +172,13 @@ } }
+//TimerInfo(_T("IN")); /* get device info set for our device class */ hDevInfo = SetupDiGetClassDevs(guids, 0, NULL, DIGCF_PRESENT); - +//TimerInfo(_T("OUT")); HeapFree(GetProcessHeap(), 0, guids); if(hDevInfo == INVALID_HANDLE_VALUE) { @@ -322,7 +325,6 @@ TCHAR ComputerName[MAX_PATH]; DWORD dwSize = MAX_PATH; INT RootImage; - //COLORREF Mask = RGB(255, 0, 128);
TreeView_DeleteAllItems(Info->hTreeView);
@@ -337,8 +339,10 @@ hComp, NULL);
+ DeleteObject(hComp); + TreeView_SetImageList(Info->hTreeView, - &ImageListData.ImageList, + ImageListData.ImageList, TVSIL_NORMAL);
if (!GetComputerName(ComputerName, @@ -349,6 +353,7 @@
RootImage = ImageList_GetImageCount(ImageListData.ImageList) - 1;
+ /* insert the root item into the tree */ hRoot = InsertIntoTreeView(Info->hTreeView, NULL, ComputerName,
Modified: trunk/reactos/base/applications/devmgmt/mainwnd.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/m... ============================================================================== --- trunk/reactos/base/applications/devmgmt/mainwnd.c (original) +++ trunk/reactos/base/applications/devmgmt/mainwnd.c Fri Sep 29 20:38:38 2006 @@ -248,23 +248,30 @@ break;
case IDC_PROGHELP: + { DisplayString(_T("Help is not yet implemented\n")); SetFocus(Info->hTreeView); + } break;
case IDC_EXIT: + { PostMessage(Info->hMainWnd, WM_CLOSE, 0, 0); + } break;
case IDC_ABOUT: + { DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), Info->hMainWnd, (DLGPROC)AboutDialogProc); + SetFocus(Info->hTreeView); + } break;
}
Modified: trunk/reactos/base/applications/devmgmt/manifest.xml URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/m... ============================================================================== --- trunk/reactos/base/applications/devmgmt/manifest.xml (original) +++ trunk/reactos/base/applications/devmgmt/manifest.xml Fri Sep 29 20:38:38 2006 @@ -7,7 +7,7 @@ processorArchitecture="x86" version="1.0.0.0" type="win32"/> -<description>ReactOS Service Manager</description> +<description>ReactOS Device Manager</description> <dependency> <dependentAssembly> <assemblyIdentity
Modified: trunk/reactos/base/applications/devmgmt/misc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/m... ============================================================================== --- trunk/reactos/base/applications/devmgmt/misc.c (original) +++ trunk/reactos/base/applications/devmgmt/misc.c Fri Sep 29 20:38:38 2006 @@ -259,3 +259,20 @@ MessageBox(NULL, Msg, _T("Note!"), MB_ICONEXCLAMATION|MB_OK); }
+ +VOID TimerInfo(LPTSTR text) +{ + static HANDLE hOut = NULL; + DWORD Count; + TCHAR buf[256]; + static DWORD start = 0; + + if (!start) start = GetTickCount(); + + if (!hOut) hOut = GetStdHandle(STD_ERROR_HANDLE); + + if (text) _sntprintf(buf, 256, _T("%s\ttime : %d\n"), text, GetTickCount() - start); + else _sntprintf(buf, 256, _T("time : %d\n"), GetTickCount() - start); + + WriteConsole(hOut, buf, lstrlen(buf)+1, &Count, NULL); +}
Modified: trunk/reactos/base/applications/devmgmt/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/p... ============================================================================== --- trunk/reactos/base/applications/devmgmt/precomp.h (original) +++ trunk/reactos/base/applications/devmgmt/precomp.h Fri Sep 29 20:38:38 2006 @@ -1,9 +1,9 @@ #ifndef __DEVMGMT_PRECOMP_H #define __DEVMGMT_PRECOMP_H
-//#define WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN #include <windows.h> -#include <windowsx.h> /* GET_X/Y_LPARAM */ +#include <windowsx.h> #include <stdio.h> #include <tchar.h> #include <setupapi.h> @@ -15,14 +15,7 @@ #pragma warning(disable : 4100) #endif
-#ifndef SB_SIMPLEID -#define SB_SIMPLEID 0xFF -#endif - -#define NO_ITEM_SELECTED -1 -#define MAX_KEY_LENGTH 256 #define MAX_DEV_LEN 1000 -
typedef struct _MAIN_WND_INFO { @@ -89,14 +82,16 @@ IN HWND hDlg, IN UINT Res);
-VOID GetError(VOID); - -VOID DisplayString(PTCHAR); - HIMAGELIST InitImageList(UINT NumButtons, UINT StartResource, UINT Width, UINT Height);
+VOID GetError(VOID); + +VOID DisplayString(PTCHAR); + +VOID TimerInfo(LPTSTR); +
#endif /* __DEVMGMT_PRECOMP_H */
Modified: trunk/reactos/base/applications/devmgmt/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/r... ============================================================================== --- trunk/reactos/base/applications/devmgmt/resource.h (original) +++ trunk/reactos/base/applications/devmgmt/resource.h Fri Sep 29 20:38:38 2006 @@ -1,5 +1,4 @@ -#define IDC_STATIC -1 - +#define IDC_STATIC -1
#define IDI_MAIN_ICON 50 #define IDB_ROOT_IMAGE 51