Skip to content

Commit

Permalink
Use Qt.CheckState instead of int in Extract dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
m3nu committed Apr 15, 2023
1 parent 427d307 commit 6edd409
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 28 deletions.
20 changes: 10 additions & 10 deletions src/vorta/views/extract_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ class FileData:
last_modified: QDateTime
source_path: Optional[str] = None # only relevant for links

checkstate: int = 0 # whether to extract the file (0, 1 or 2)
checkstate: Qt.CheckState = Qt.CheckState.Unchecked # whether to extract the file (0, 1 or 2)
checked_children: int = 0 # number of children checked


Expand Down Expand Up @@ -532,7 +532,7 @@ def data(self, index: QModelIndex, role: int = Qt.ItemDataRole.DisplayRole):
if role == Qt.ItemDataRole.CheckStateRole and column == 0:
return item.data.checkstate

def setData(self, index: QModelIndex, value, role: int = Qt.ItemDataRole.DisplayRole) -> bool:
def setData(self, index: QModelIndex, value: Qt.CheckState, role: int = Qt.ItemDataRole.DisplayRole) -> bool:
"""
Sets the role data for the item at index to value.
Expand All @@ -545,7 +545,7 @@ def setData(self, index: QModelIndex, value, role: int = Qt.ItemDataRole.Display

item: ExtractFileItem = index.internalPointer()

if value.value == item.data.checkstate:
if value == item.data.checkstate:
return True

super_index = index.parent()
Expand All @@ -559,23 +559,23 @@ def setData(self, index: QModelIndex, value, role: int = Qt.ItemDataRole.Display
if value == Qt.CheckState.Unchecked:
# must have been one of the others previously
parent.data.checked_children -= 1
elif item.data.checkstate == Qt.CheckState.Unchecked.value: # old value
elif item.data.checkstate == Qt.CheckState.Unchecked: # old value
# change from partially checked to checked
# or the other way around does not change this count
parent.data.checked_children += 1

if parent.data.checked_children:
parent.data.checkstate = Qt.CheckState.PartiallyChecked.value
parent.data.checkstate = Qt.CheckState.PartiallyChecked
else:
parent.data.checkstate = Qt.CheckState.Unchecked.value
parent.data.checkstate = Qt.CheckState.Unchecked

parent = parent._parent

if super_index != QModelIndex():
if value == Qt.CheckState.Unchecked:
# must have been one of the others previously
super_item.data.checked_children -= 1
elif item.data.checkstate == Qt.CheckState.Unchecked.value:
elif item.data.checkstate == Qt.CheckState.Unchecked:
# change from partially checked to checked
# or the other way around does not change this count
super_item.data.checked_children += 1
Expand All @@ -591,7 +591,7 @@ def setData(self, index: QModelIndex, value, role: int = Qt.ItemDataRole.Display
self.set_checkstate_recursively(index, value)

# update this item's state
item.data.checkstate = value.value
item.data.checkstate = value
self.dataChanged.emit(index, index, (role,))

return True
Expand All @@ -618,14 +618,14 @@ def set_checkstate_recursively(self, index: QModelIndex, value: Qt.CheckState):
for i in range(number_children):
child = self.index(i, 0, index)
child_item: ExtractFileItem = child.internalPointer()
child_item.data.checkstate = value.value
child_item.data.checkstate = value

# set state of hidden items
parent = child_item._parent
while parent != item:
# hidden parent must have 1 child
parent.data.checked_children = 0 if value == Qt.CheckState.Unchecked else self.rowCount(child)
parent.data.checkstate = value.value
parent.data.checkstate = value

parent = parent._parent

Expand Down
36 changes: 18 additions & 18 deletions tests/test_extract.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,12 @@ def test_selection():
c: FileSystemItem[FileData] = ic.internalPointer()

select(model, ic)
assert c.data.checkstate == Qt.CheckState(2).value
assert c.data.checkstate == Qt.CheckState(2)
assert c.data.checked_children == 0

# Test deselect
deselect(model, ic)
assert c.data.checkstate == Qt.CheckState(0).value
assert c.data.checkstate == Qt.CheckState(0)
assert c.data.checked_children == 0

# Test select parent as well as children
Expand All @@ -121,19 +121,19 @@ def test_selection():
iab = model.indexPath(("a", "b"))
deselect(model, iab)

assert a.data.checkstate == Qt.CheckState(1).value
assert aa.data.checkstate == Qt.CheckState(2).value
assert ab.data.checkstate == Qt.CheckState(0).value
assert abc.data.checkstate == Qt.CheckState(0).value
assert a.data.checkstate == Qt.CheckState(1)
assert aa.data.checkstate == Qt.CheckState(2)
assert ab.data.checkstate == Qt.CheckState(0)
assert abc.data.checkstate == Qt.CheckState(0)
assert a.data.checked_children == 1
assert ab.data.checked_children == 0

# Test deselect item and children
deselect(model, ia)

assert a.data.checkstate == Qt.CheckState(0).value
assert aa.data.checkstate == Qt.CheckState(0).value
assert ab.data.checkstate == Qt.CheckState(0).value
assert a.data.checkstate == Qt.CheckState(0)
assert aa.data.checkstate == Qt.CheckState(0)
assert ab.data.checkstate == Qt.CheckState(0)
assert a.data.checked_children == 0
assert aa.data.checked_children == 0

Expand All @@ -146,9 +146,9 @@ def test_selection():
select(model, iab)
select(model, iaac)

assert a.data.checkstate == Qt.CheckState(1).value
assert aa.data.checkstate == Qt.CheckState(1).value
assert ab.data.checkstate == Qt.CheckState(2).value
assert a.data.checkstate == Qt.CheckState(1)
assert aa.data.checkstate == Qt.CheckState(1)
assert ab.data.checkstate == Qt.CheckState(2)

assert a.data.checked_children == 2
assert ab.data.checked_children == 2
Expand All @@ -159,21 +159,21 @@ def test_selection():
deselect(model, iaa)
deselect(model, iab)

assert a.data.checkstate == Qt.CheckState(0).value
assert a.data.checkstate == Qt.CheckState(0)
assert a.data.checked_children == 0

# Test select child with deselected parent
select(model, iaac)

assert a.data.checkstate == Qt.CheckState(1).value
assert ab.data.checkstate == Qt.CheckState(0).value
assert aa.data.checkstate == Qt.CheckState(1).value
assert a.data.checkstate == Qt.CheckState(1)
assert ab.data.checkstate == Qt.CheckState(0)
assert aa.data.checkstate == Qt.CheckState(1)
assert a.data.checked_children == 1
assert ab.data.checked_children == 0
assert aa.data.checked_children == 1

select(model, iaa)
assert a.data.checkstate == Qt.CheckState(1).value
assert a.data.checkstate == Qt.CheckState(1)

select(model, iab)
assert a.data.checkstate == Qt.CheckState(1).value
assert a.data.checkstate == Qt.CheckState(1)

0 comments on commit 6edd409

Please sign in to comment.