Author: gedmurphy
Date: Thu Jun 18 10:26:30 2015
New Revision: 68182
URL:
http://svn.reactos.org/svn/reactos?rev=68182&view=rev
Log:
[DEVMGR]
- In 'Devices by Connection, if a device has a problem, expand the treeview to to show
that problem device.
- Add a missing break in WM_COMMAND to stop the app from closing
- Fix clearing the lists
Modified:
trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp
trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h
trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
Modified: trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/D…
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp [iso-8859-1] Thu Jun 18 10:26:30
2015
@@ -570,37 +570,37 @@
bool
CDeviceView::ListDevicesByConnection()
{
- BOOL bSuccess;
+ bool bSuccess;
// Start by adding the root node to the tree
bSuccess = AddRootDevice();
if (bSuccess == false) return false;
// Walk the device tree and add all the devices
- RecurseChildDevices(m_RootDevInst, m_hTreeRoot);
+ (void)RecurseChildDevices(m_RootDevInst, m_hTreeRoot);
// Expand the root item
- (VOID)TreeView_Expand(m_hTreeView,
+ (void)TreeView_Expand(m_hTreeView,
m_hTreeRoot,
TVE_EXPAND);
return true;
}
-VOID
+bool
CDeviceView::RecurseChildDevices(
_In_ DEVINST ParentDevice,
_In_ HTREEITEM hParentTreeItem
)
{
-
HTREEITEM hDevItem = NULL;
DEVINST Device;
- BOOL bSuccess;
+ bool HasProblem = false;
+ bool bSuccess;
// Check if the parent has any child devices
if (GetChildDevice(ParentDevice, &Device) == FALSE)
- return;
+ return true;
// Get the cached device node
CDeviceNode *DeviceNode;
@@ -608,59 +608,82 @@
if (DeviceNode == NULL)
{
ATLASSERT(FALSE);
- return;
- }
-
-
- // Check if this is a hidden device
+ return false;
+ }
+
+ // Don't show hidden devices if not requested
if ((m_ShowHidden == TRUE) || (!(DeviceNode->IsHidden())))
{
- // Add this device to the tree under its parent
- hDevItem = InsertIntoTreeView(hParentTreeItem,
- DeviceNode);
-
-
- if (hDevItem)
- {
- // Check if this child has any children itself
- RecurseChildDevices(Device, hDevItem);
- }
- }
-
-
- for (;;)
- {
- // Check if the parent device has anything at the same level
- bSuccess = GetSiblingDevice(Device, &Device);
- if (bSuccess == FALSE) break;
-
- DeviceNode = dynamic_cast<CDeviceNode *>(GetDeviceNode(Device));
- if (DeviceNode == NULL)
- {
- ATLASSERT(FALSE);
- }
-
- // Check if this is a hidden device
- if (DeviceNode->IsHidden())
- {
- if (m_ShowHidden == FALSE)
- continue;
- }
-
// Add this device to the tree under its parent
hDevItem = InsertIntoTreeView(hParentTreeItem,
DeviceNode);
if (hDevItem)
{
// Check if this child has any children itself
- RecurseChildDevices(Device, hDevItem);
- }
+ if (!RecurseChildDevices(Device, hDevItem))
+ HasProblem = true;
+ }
+
+ if (DeviceNode->HasProblem())
+ {
+ HasProblem = true;
+ }
+ }
+
+
+ // Check for siblings
+ for (;;)
+ {
+ // Check if the parent device has anything at the same level
+ bSuccess = GetSiblingDevice(Device, &Device);
+ if (bSuccess == FALSE) break;
+
+ DeviceNode = dynamic_cast<CDeviceNode *>(GetDeviceNode(Device));
+ if (DeviceNode == NULL)
+ {
+ ATLASSERT(FALSE);
+ }
+
+ // Check if this is a hidden device
+ if (DeviceNode->IsHidden())
+ {
+ if (m_ShowHidden == FALSE)
+ continue;
+ }
+
+ if (DeviceNode->HasProblem())
+ {
+ HasProblem = true;
+ }
+
+ // Add this device to the tree under its parent
+ hDevItem = InsertIntoTreeView(hParentTreeItem,
+ DeviceNode);
+ if (hDevItem)
+ {
+ // Check if this child has any children itself
+ if (!RecurseChildDevices(Device, hDevItem))
+ HasProblem = true;
+ }
+
}
(void)TreeView_SortChildren(m_hTreeView,
hParentTreeItem,
0);
+ // Expand the class if it has a problem device
+ if (HasProblem == true)
+ {
+ (void)TreeView_Expand(m_hTreeView,
+ hParentTreeItem,
+ TVE_EXPAND);
+ }
+
+ // If there was a problem, expand the ancestors
+ if (HasProblem) return false;
+
+ return true;
}
bool
@@ -860,29 +883,19 @@
void
CDeviceView::EmptyLists()
{
- POSITION Pos;
- CNode *Node;
-
- if (!m_ClassNodeList.IsEmpty())
- {
- Pos = m_ClassNodeList.GetHeadPosition();
- do
- {
- Node = m_ClassNodeList.GetNext(Pos);
- delete Node;
-
- } while (Pos != NULL);
- }
-
- if (!m_DeviceNodeList.IsEmpty())
- {
- Pos = m_DeviceNodeList.GetHeadPosition();
- do
- {
- Node = m_DeviceNodeList.GetNext(Pos);
- delete Node;
-
- } while (Pos != NULL);
+ CClassNode *ClassNode;
+ CDeviceNode *DeviceNode;
+
+ while (!m_ClassNodeList.IsEmpty())
+ {
+ ClassNode = m_ClassNodeList.RemoveTail();
+ delete ClassNode;
+ }
+
+ while (!m_DeviceNodeList.IsEmpty())
+ {
+ DeviceNode = m_DeviceNodeList.RemoveTail();
+ delete DeviceNode;
}
}
Modified: trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/D…
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/DeviceView.h [iso-8859-1] Thu Jun 18 10:26:30
2015
@@ -99,7 +99,7 @@
_Out_ HDEVINFO *hDevInfo
);
- VOID RecurseChildDevices(
+ bool RecurseChildDevices(
_In_ DEVINST ParentDevice,
_In_ HTREEITEM hParentTreeItem
);
Modified: trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/devmgr/devmgmt/M…
==============================================================================
--- trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/devmgr/devmgmt/MainWindow.cpp [iso-8859-1] Thu Jun 18 10:26:30
2015
@@ -509,6 +509,36 @@
break;
}
+ case IDC_ENABLE_DRV:
+ {
+ MessageBox(m_hMainWnd, L"Not yet implemented", L"Enable
Driver", MB_OK);
+ break;
+ }
+
+ case IDC_DISABLE_DRV:
+ {
+ MessageBox(m_hMainWnd, L"Not yet implemented", L"Disable
Driver", MB_OK);
+ break;
+ }
+
+ case IDC_UPDATE_DRV:
+ {
+ MessageBox(m_hMainWnd, L"Not yet implemented", L"Update
Driver", MB_OK);
+ break;
+ }
+
+ case IDC_UNINSTALL_DRV:
+ {
+ MessageBox(m_hMainWnd, L"Not yet implemented", L"Uninstall
Driver", MB_OK);
+ break;
+ }
+
+ case IDC_ADD_HARDWARE:
+ {
+ MessageBox(m_hMainWnd, L"Not yet implemented", L"Add
Hardware", MB_OK);
+ break;
+ }
+
case IDC_DEVBYTYPE:
{
RefreshView(DevicesByType);
@@ -523,31 +553,18 @@
case IDC_SHOWHIDDEN:
{
- UINT CurCheckState, NewCheckState;
-
// Get the current state
- CurCheckState = GetMenuState(m_hMenu, IDC_SHOWHIDDEN, MF_BYCOMMAND);
-
+ UINT CurCheckState = GetMenuState(m_hMenu, IDC_SHOWHIDDEN, MF_BYCOMMAND);
if (CurCheckState == MF_CHECKED)
{
- // Inform the device view of the change
m_DeviceView->SetHiddenDevices(false);
- NewCheckState = MF_UNCHECKED;
+ CheckMenuItem(m_hMenu, IDC_SHOWHIDDEN, MF_BYCOMMAND | MF_UNCHECKED);
}
else if (CurCheckState == MF_UNCHECKED)
{
m_DeviceView->SetHiddenDevices(true);
- NewCheckState = MF_CHECKED;
+ CheckMenuItem(m_hMenu, IDC_SHOWHIDDEN, MF_BYCOMMAND | MF_CHECKED);
}
- else
- {
- ATLASSERT(FALSE);
- break;
- }
-
- // Set the new check state
- CheckMenuItem(m_hMenu, IDC_SHOWHIDDEN, MF_BYCOMMAND | NewCheckState);
-
// Refresh the device view
m_DeviceView->Refresh(m_DeviceView->GetCurrentView(),
false,
@@ -688,14 +705,16 @@
// Hand it off to the default message handler
goto HandleDefaultMessage;
}
+ break;
}
case WM_CLOSE:
{
// Destroy the main window
DestroyWindow(hwnd);
- }
- break;
+ break;
+ }
+
case WM_DESTROY:
{