T-574 优化封面画廊保存反馈

This commit is contained in:
chengma
2026-07-09 16:06:13 +08:00
parent 36d017953d
commit aac5c5d177
3 changed files with 35 additions and 5 deletions
+19 -3
View File
@@ -137,8 +137,11 @@ class CoverGalleryDialog(QDialog):
self.regenerate_button.clicked.connect(self.regenerate_cover)
button_layout.addWidget(self.regenerate_button)
button_layout.addStretch(1)
self.save_hint_label = QLabel("")
self.save_hint_label.setObjectName("coverGallerySaveHintLabel")
button_layout.addWidget(self.save_hint_label)
self.save_button = QPushButton("保存")
self.cancel_button = QPushButton("取消")
self.cancel_button = QPushButton("关闭")
self.save_button.clicked.connect(self.save_selection)
self.cancel_button.clicked.connect(self.reject)
button_layout.addWidget(self.save_button)
@@ -297,6 +300,8 @@ class CoverGalleryDialog(QDialog):
def _select_candidate(self, candidate_path):
self.selected_path = candidate_path
self.save_button.setEnabled(True)
if not _same_file(candidate_path, self.current_path):
self._set_save_hint("")
self._update_status()
def _update_status(self):
@@ -322,14 +327,16 @@ class CoverGalleryDialog(QDialog):
self.status_label.setText("已选择新的生成封面,保存后用于后续更新蝦皮")
def save_selection(self, checked=False):
return self._save_selected_cover(close_on_success=True)
return self._save_selected_cover(close_on_success=False, show_success_hint=True)
def _save_selected_cover(self, close_on_success=False):
def _save_selected_cover(self, close_on_success=False, show_success_hint=False):
if not self.selected_path:
QMessageBox.warning(self, "封面画廊", "请先选择一张生成封面")
return False
if _same_file(self.selected_path, self.current_path):
self.changed = False
if show_success_hint:
self._set_save_hint("已保存为本次更新封面")
if close_on_success:
self.accept()
return True
@@ -338,6 +345,7 @@ class CoverGalleryDialog(QDialog):
try:
db.update_generated_cover(self.task.id, self.selected_path, path=self.db_path)
except Exception as exc:
self._set_save_hint("")
QMessageBox.warning(self, "封面画廊", f"保存当前封面失败:{exc}")
return False
fresh_task = db.get_task(self.task.id, path=self.db_path)
@@ -346,13 +354,20 @@ class CoverGalleryDialog(QDialog):
self.visible_tasks[self.task_index] = fresh_task
self.current_path = _normalize_file_path(self.selected_path)
self.changed = True
self._rebuild_candidate_items()
self._sync_initial_selection()
self._update_status()
if show_success_hint:
self._set_save_hint("已保存为本次更新封面")
if self.gallery_updated_callback is not None:
self.gallery_updated_callback(self.task)
if close_on_success:
self.accept()
return True
def _set_save_hint(self, message):
self.save_hint_label.setText(str(message or ""))
def regenerate_cover(self, checked=False):
if self.regenerate_thread is not None:
return False
@@ -574,6 +589,7 @@ class CoverGalleryDialog(QDialog):
self.account = self._account_for_task(task)
self.current_path = _normalize_file_path(getattr(self.task, "new_cover_path", None))
self.selected_path = None
self._set_save_hint("")
self.candidates = image_paths.list_task_cover_candidates(self.image_root, self.task, account=self.account)
self._rebuild_candidate_items()
self._sync_initial_selection()