| 1563 | } |
| 1564 | |
| 1565 | void CSaveModifiedItemsDialog::ToggleCheckState(int item) |
| 1566 | { |
| 1567 | LVITEM lvi = { 0 }; |
| 1568 | lvi.iItem = item; |
| 1569 | lvi.iSubItem = 0; |
| 1570 | lvi.mask = (LVIF_INDENT | LVIF_STATE); |
| 1571 | lvi.stateMask = (LVIS_STATEIMAGEMASK | LVIS_SELECTED); |
| 1572 | m_list.GetItem(&lvi); |
| 1573 | |
| 1574 | CheckState checkState = (CheckState)(lvi.state & LVIS_STATEIMAGEMASK); |
| 1575 | |
| 1576 | CheckState newCheckState = eCheckState_Checked; |
| 1577 | switch(checkState) |
| 1578 | { |
| 1579 | case eCheckState_Unchecked: |
| 1580 | newCheckState = eCheckState_Checked; |
| 1581 | break; |
| 1582 | case eCheckState_Checked: |
| 1583 | newCheckState = eCheckState_Unchecked; |
| 1584 | break; |
| 1585 | case eCheckState_Indeterminate: |
| 1586 | newCheckState = eCheckState_Checked; |
| 1587 | break; |
| 1588 | } |
| 1589 | |
| 1590 | if((lvi.state & LVIS_SELECTED) != LVIS_SELECTED) |
| 1591 | { |
| 1592 | // If the item isn't selected, toggle the checkmark on just the item |
| 1593 | this->SetTristateCheckState(item, newCheckState); |
| 1594 | } |
| 1595 | else |
| 1596 | { |
| 1597 | // Otherwise, set the checkmark appropriately on all selected items. |
| 1598 | int itemToCheck = -1; |
| 1599 | while((itemToCheck = m_list.GetNextItem(itemToCheck, LVNI_SELECTED)) != -1) |
| 1600 | { |
| 1601 | this->SetTristateCheckState(itemToCheck, newCheckState); |
| 1602 | } |
| 1603 | } |
| 1604 | } |
| 1605 | |
| 1606 | void CSaveModifiedItemsDialog::SetTristateCheckState(int item, CheckState checkState) |
| 1607 | { |
no test coverage detected