feat: 安全移除本地任务记录 (#108)
This commit is contained in:
+39
-9
@@ -368,6 +368,7 @@ class PDDTaskPage(QWidget):
|
||||
rerunRequested = pyqtSignal(str)
|
||||
rerunCancelRequested = pyqtSignal()
|
||||
resubmitRequested = pyqtSignal(object)
|
||||
removeRequested = pyqtSignal(object)
|
||||
openSettingsRequested = pyqtSignal()
|
||||
detailRequested = pyqtSignal(str)
|
||||
|
||||
@@ -377,6 +378,7 @@ class PDDTaskPage(QWidget):
|
||||
|
||||
self._rerun_state = "idle"
|
||||
self._resubmit_running = False
|
||||
self._remove_running = False
|
||||
self.taskModel = TaskTableModel(self)
|
||||
self._build_command_area()
|
||||
self._build_content_area()
|
||||
@@ -429,6 +431,10 @@ class PDDTaskPage(QWidget):
|
||||
self.resubmitButton.setAccessibleName("重新上报勾选任务的已有结果")
|
||||
self.resubmitButton.setEnabled(False)
|
||||
|
||||
self.removeButton = PushButton(FIF.DELETE, "删除", self)
|
||||
self.removeButton.setAccessibleName("从任务列表删除勾选的本地任务")
|
||||
self.removeButton.setEnabled(False)
|
||||
|
||||
self.commandCard = CardWidget(self)
|
||||
self.checkedCountLabel = CaptionLabel("已选 0 条", self.commandCard)
|
||||
self.checkedCountLabel.setAccessibleName("已勾选任务数量")
|
||||
@@ -446,7 +452,7 @@ class PDDTaskPage(QWidget):
|
||||
if compact == self._compact_commands and self.commandLayout.count():
|
||||
return
|
||||
self._compact_commands = compact
|
||||
for column in range(13):
|
||||
for column in range(14):
|
||||
self.commandLayout.setColumnStretch(column, 0)
|
||||
|
||||
if compact:
|
||||
@@ -459,6 +465,7 @@ class PDDTaskPage(QWidget):
|
||||
(self.checkedCountLabel, 0, 6, 1, 1),
|
||||
(self.rerunButton, 0, 7, 1, 1),
|
||||
(self.resubmitButton, 0, 8, 1, 1),
|
||||
(self.removeButton, 0, 9, 1, 1),
|
||||
(self.keywordLabel, 1, 0, 1, 1),
|
||||
(self.keywordInput, 1, 1, 1, 5),
|
||||
(self.searchButton, 1, 6, 1, 1),
|
||||
@@ -479,6 +486,7 @@ class PDDTaskPage(QWidget):
|
||||
(self.checkedCountLabel, 0, 10, 1, 1),
|
||||
(self.rerunButton, 0, 11, 1, 1),
|
||||
(self.resubmitButton, 0, 12, 1, 1),
|
||||
(self.removeButton, 0, 13, 1, 1),
|
||||
)
|
||||
self.commandLayout.setColumnStretch(6, 4)
|
||||
self.commandLayout.setColumnStretch(9, 1)
|
||||
@@ -562,6 +570,7 @@ class PDDTaskPage(QWidget):
|
||||
self.refreshButton.clicked.connect(self.refreshRequested.emit)
|
||||
self.rerunButton.clicked.connect(self._request_rerun)
|
||||
self.resubmitButton.clicked.connect(self._request_resubmit)
|
||||
self.removeButton.clicked.connect(self._request_remove)
|
||||
self.clearFiltersButton.clicked.connect(self.clear_filters)
|
||||
self.taskTable.clicked.connect(self._on_table_clicked)
|
||||
self.taskTable.activated.connect(self._on_table_activated)
|
||||
@@ -634,7 +643,9 @@ class PDDTaskPage(QWidget):
|
||||
text, icon, enabled = states.get(state, states["stopped"])
|
||||
self.autoFetchButton.setText(text)
|
||||
self.autoFetchButton.setIcon(icon)
|
||||
self.autoFetchButton.setEnabled(enabled)
|
||||
self.autoFetchButton.setEnabled(
|
||||
enabled and not self._resubmit_running and not self._remove_running
|
||||
)
|
||||
self.autoFetchButton.setAccessibleName(f"{text} PDD 任务")
|
||||
|
||||
def set_engine_status(self, text: str) -> None:
|
||||
@@ -669,6 +680,12 @@ class PDDTaskPage(QWidget):
|
||||
self._resubmit_running = running
|
||||
self._update_checked_actions(self.taskModel.checked_task_ids())
|
||||
|
||||
def set_remove_running(self, running: bool) -> None:
|
||||
"""设置本地任务删除忙碌状态并防止重复操作。"""
|
||||
|
||||
self._remove_running = running
|
||||
self._update_checked_actions(self.taskModel.checked_task_ids())
|
||||
|
||||
def set_rerun_cancelling(self) -> None:
|
||||
"""显示取消请求已发出,防止用户重复点击。"""
|
||||
|
||||
@@ -686,18 +703,26 @@ class PDDTaskPage(QWidget):
|
||||
self.rerunRequested.emit(task_ids[0])
|
||||
|
||||
def _request_resubmit(self) -> None:
|
||||
if self._resubmit_running:
|
||||
if self._resubmit_running or self._remove_running:
|
||||
return
|
||||
task_ids = self.taskModel.checked_task_ids()
|
||||
if task_ids:
|
||||
self.resubmitRequested.emit(task_ids)
|
||||
|
||||
def _request_remove(self) -> None:
|
||||
if self._remove_running or self._resubmit_running:
|
||||
return
|
||||
task_ids = self.taskModel.checked_task_ids()
|
||||
if task_ids:
|
||||
self.removeRequested.emit(task_ids)
|
||||
|
||||
def _update_rerun_button(self) -> None:
|
||||
if self._rerun_state == "running":
|
||||
self.rerunButton.setText("停止重新采集")
|
||||
self.rerunButton.setAccessibleName("停止当前重新采集")
|
||||
self.rerunButton.setEnabled(True)
|
||||
self.resubmitButton.setEnabled(False)
|
||||
self.removeButton.setEnabled(False)
|
||||
self.autoFetchButton.setEnabled(False)
|
||||
return
|
||||
if self._rerun_state == "cancelling":
|
||||
@@ -705,19 +730,22 @@ class PDDTaskPage(QWidget):
|
||||
self.rerunButton.setAccessibleName("正在停止重新采集")
|
||||
self.rerunButton.setEnabled(False)
|
||||
self.resubmitButton.setEnabled(False)
|
||||
self.removeButton.setEnabled(False)
|
||||
self.autoFetchButton.setEnabled(False)
|
||||
return
|
||||
|
||||
self.rerunButton.setText("重新执行")
|
||||
self.rerunButton.setAccessibleName("重新执行当前选中的采集任务")
|
||||
self.autoFetchButton.setEnabled(not self._resubmit_running)
|
||||
idle = not self._resubmit_running and not self._remove_running
|
||||
self.autoFetchButton.setEnabled(idle)
|
||||
self.rerunButton.setEnabled(
|
||||
not self._resubmit_running
|
||||
and len(self.taskModel.checked_task_ids()) == 1
|
||||
idle and len(self.taskModel.checked_task_ids()) == 1
|
||||
)
|
||||
self.resubmitButton.setEnabled(
|
||||
not self._resubmit_running
|
||||
and bool(self.taskModel.checked_task_ids())
|
||||
idle and bool(self.taskModel.checked_task_ids())
|
||||
)
|
||||
self.removeButton.setEnabled(
|
||||
idle and bool(self.taskModel.checked_task_ids())
|
||||
)
|
||||
|
||||
def _update_checked_actions(self, task_ids=None) -> None:
|
||||
@@ -728,7 +756,9 @@ class PDDTaskPage(QWidget):
|
||||
self.resubmitButton.setText(
|
||||
"正在上报…" if self._resubmit_running else "重新上报"
|
||||
)
|
||||
self.resubmitButton.setEnabled(bool(checked) and not self._resubmit_running)
|
||||
self.removeButton.setText(
|
||||
"正在删除…" if self._remove_running else "删除"
|
||||
)
|
||||
self._update_rerun_button()
|
||||
|
||||
def _apply_filters(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user