mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
save chooseaddonupdate check state
This commit is contained in:
parent
69006b5872
commit
e73e0bec34
1 changed files with 29 additions and 11 deletions
|
@ -105,6 +105,7 @@ class AddonMeta:
|
||||||
max_point_version: int
|
max_point_version: int
|
||||||
branch_index: int
|
branch_index: int
|
||||||
human_version: Optional[str]
|
human_version: Optional[str]
|
||||||
|
update_enabled: bool
|
||||||
|
|
||||||
def human_name(self) -> str:
|
def human_name(self) -> str:
|
||||||
return self.provided_name or self.dir_name
|
return self.provided_name or self.dir_name
|
||||||
|
@ -140,6 +141,7 @@ class AddonMeta:
|
||||||
max_point_version=json_meta.get("max_point_version", 0) or 0,
|
max_point_version=json_meta.get("max_point_version", 0) or 0,
|
||||||
branch_index=json_meta.get("branch_index", 0) or 0,
|
branch_index=json_meta.get("branch_index", 0) or 0,
|
||||||
human_version=json_meta.get("human_version"),
|
human_version=json_meta.get("human_version"),
|
||||||
|
update_enabled=json_meta.get("update_enabled", True),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -243,6 +245,7 @@ class AddonManager:
|
||||||
json_obj["branch_index"] = addon.branch_index
|
json_obj["branch_index"] = addon.branch_index
|
||||||
if addon.human_version is not None:
|
if addon.human_version is not None:
|
||||||
json_obj["human_version"] = addon.human_version
|
json_obj["human_version"] = addon.human_version
|
||||||
|
json_obj["update_enabled"] = addon.update_enabled
|
||||||
|
|
||||||
self.writeAddonMeta(addon.dir_name, json_obj)
|
self.writeAddonMeta(addon.dir_name, json_obj)
|
||||||
|
|
||||||
|
@ -1152,15 +1155,15 @@ class ChooseAddonsToUpdateList(QListWidget):
|
||||||
qconnect(self.itemDoubleClicked, self.double_click)
|
qconnect(self.itemDoubleClicked, self.double_click)
|
||||||
|
|
||||||
def setup(self) -> None:
|
def setup(self) -> None:
|
||||||
check_state = Qt.Unchecked
|
|
||||||
header_item = QListWidgetItem("", self)
|
header_item = QListWidgetItem("", self)
|
||||||
header_item.setFlags(Qt.ItemFlag(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled))
|
header_item.setFlags(Qt.ItemFlag(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled))
|
||||||
header_item.setBackground(Qt.lightGray)
|
header_item.setBackground(Qt.lightGray)
|
||||||
header_item.setCheckState(check_state)
|
|
||||||
self.header_item = header_item
|
self.header_item = header_item
|
||||||
for update_info in self.updated_addons:
|
for update_info in self.updated_addons:
|
||||||
addon_id = update_info.id
|
addon_id = update_info.id
|
||||||
addon_name = self.mgr.addon_meta(str(addon_id)).human_name()
|
addon_meta = self.mgr.addon_meta(str(addon_id))
|
||||||
|
update_enabled = addon_meta.update_enabled
|
||||||
|
addon_name = addon_meta.human_name()
|
||||||
update_timestamp = update_info.suitable_branch_last_modified
|
update_timestamp = update_info.suitable_branch_last_modified
|
||||||
update_time = datetime.fromtimestamp(update_timestamp)
|
update_time = datetime.fromtimestamp(update_timestamp)
|
||||||
|
|
||||||
|
@ -1168,8 +1171,12 @@ class ChooseAddonsToUpdateList(QListWidget):
|
||||||
item = QListWidgetItem(addon_label, self)
|
item = QListWidgetItem(addon_label, self)
|
||||||
# Not user checkable because it overlaps with itemClicked signal
|
# Not user checkable because it overlaps with itemClicked signal
|
||||||
item.setFlags(Qt.ItemFlag(Qt.ItemIsEnabled))
|
item.setFlags(Qt.ItemFlag(Qt.ItemIsEnabled))
|
||||||
item.setCheckState(check_state)
|
if update_enabled:
|
||||||
|
item.setCheckState(Qt.Checked)
|
||||||
|
else:
|
||||||
|
item.setCheckState(Qt.Unchecked)
|
||||||
item.setData(self.ADDON_ID_ROLE, addon_id)
|
item.setData(self.ADDON_ID_ROLE, addon_id)
|
||||||
|
self.refresh_header_check_state()
|
||||||
|
|
||||||
def toggle_check(self, item: QListWidgetItem) -> None:
|
def toggle_check(self, item: QListWidgetItem) -> None:
|
||||||
if item == self.header_item:
|
if item == self.header_item:
|
||||||
|
@ -1182,11 +1189,9 @@ class ChooseAddonsToUpdateList(QListWidget):
|
||||||
# Normal Item
|
# Normal Item
|
||||||
if item.checkState() == Qt.Checked:
|
if item.checkState() == Qt.Checked:
|
||||||
item.setCheckState(Qt.Unchecked)
|
item.setCheckState(Qt.Unchecked)
|
||||||
self.header_item.setCheckState(Qt.Unchecked)
|
|
||||||
else:
|
else:
|
||||||
item.setCheckState(Qt.Checked)
|
item.setCheckState(Qt.Checked)
|
||||||
if self.every_item_is_checked():
|
self.refresh_header_check_state()
|
||||||
self.header_item.setCheckState(Qt.Checked)
|
|
||||||
|
|
||||||
def double_click(self, item: QListWidgetItem) -> None:
|
def double_click(self, item: QListWidgetItem) -> None:
|
||||||
if item == self.header_item:
|
if item == self.header_item:
|
||||||
|
@ -1201,21 +1206,33 @@ class ChooseAddonsToUpdateList(QListWidget):
|
||||||
for i in range(1, self.count()):
|
for i in range(1, self.count()):
|
||||||
self.item(i).setCheckState(check)
|
self.item(i).setCheckState(check)
|
||||||
|
|
||||||
def every_item_is_checked(self) -> bool:
|
def refresh_header_check_state(self) -> None:
|
||||||
for i in range(1, self.count()):
|
for i in range(1, self.count()):
|
||||||
item = self.item(i)
|
item = self.item(i)
|
||||||
if item.checkState() == Qt.Unchecked:
|
if item.checkState() == Qt.Unchecked:
|
||||||
return False
|
self.header_item.setCheckState(Qt.Unchecked)
|
||||||
return True
|
return
|
||||||
|
self.header_item.setCheckState(Qt.Checked)
|
||||||
|
|
||||||
def get_selected_addon_ids(self) -> List[int]:
|
def get_selected_addon_ids(self) -> List[int]:
|
||||||
addon_ids = []
|
addon_ids = []
|
||||||
for i in range(1, self.count()):
|
for i in range(1, self.count()):
|
||||||
item = self.item(i)
|
item = self.item(i)
|
||||||
if item.checkState() == Qt.Checked:
|
if item.checkState() == Qt.Checked:
|
||||||
addon_ids.append(item.data(self.ADDON_ID_ROLE))
|
addon_id = item.data(self.ADDON_ID_ROLE)
|
||||||
|
addon_ids.append(addon_id)
|
||||||
return addon_ids
|
return addon_ids
|
||||||
|
|
||||||
|
def save_check_state(self) -> None:
|
||||||
|
for i in range(1, self.count()):
|
||||||
|
item = self.item(i)
|
||||||
|
addon_id = item.data(self.ADDON_ID_ROLE)
|
||||||
|
addon_meta = self.mgr.addon_meta(str(addon_id))
|
||||||
|
checked = item.checkState() == Qt.Checked
|
||||||
|
print(checked)
|
||||||
|
addon_meta.update_enabled = checked
|
||||||
|
self.mgr.write_addon_meta(addon_meta)
|
||||||
|
|
||||||
|
|
||||||
class ChooseAddonsToUpdateDialog(QDialog):
|
class ChooseAddonsToUpdateDialog(QDialog):
|
||||||
def __init__(
|
def __init__(
|
||||||
|
@ -1249,6 +1266,7 @@ class ChooseAddonsToUpdateDialog(QDialog):
|
||||||
"Returns a list of selected addons' ids"
|
"Returns a list of selected addons' ids"
|
||||||
ret = self.exec_()
|
ret = self.exec_()
|
||||||
saveGeom(self, "addonsChooseUpdate")
|
saveGeom(self, "addonsChooseUpdate")
|
||||||
|
self.addons_list_widget.save_check_state()
|
||||||
if ret == QDialog.Accepted:
|
if ret == QDialog.Accepted:
|
||||||
return self.addons_list_widget.get_selected_addon_ids()
|
return self.addons_list_widget.get_selected_addon_ids()
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in a new issue