From 1125788bb7ab9141144fa9ecc662f5067af5caac Mon Sep 17 00:00:00 2001 From: Mizaki Date: Sun, 10 Sep 2023 13:31:20 +0100 Subject: [PATCH] Update series and issue rows after calling for more information. Closes #512 --- comictaggerlib/issueselectionwindow.py | 37 +++++++++++++++++++++-- comictaggerlib/seriesselectionwindow.py | 40 +++++++++++++++++++++++-- 2 files changed, 72 insertions(+), 5 deletions(-) diff --git a/comictaggerlib/issueselectionwindow.py b/comictaggerlib/issueselectionwindow.py index 82d57e5..2d7f201 100644 --- a/comictaggerlib/issueselectionwindow.py +++ b/comictaggerlib/issueselectionwindow.py @@ -210,15 +210,46 @@ class IssueSelectionWindow(QtWidgets.QDialog): if prev is not None and prev.row() == curr.row(): return - self.issue_id = self.twList.item(curr.row(), 0).data(QtCore.Qt.ItemDataRole.UserRole) + row = curr.row() + self.issue_id = self.twList.item(row, 0).data(QtCore.Qt.ItemDataRole.UserRole) - # list selection was changed, update the the issue cover + # list selection was changed, update the issue cover issue = self.issue_list[self.issue_id] if not (issue.issue and issue.year and issue.month and issue.cover_image): - issue = self.talker.fetch_comic_data(issue_id=self.issue_id) + QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CursorShape.WaitCursor)) + try: + issue = self.talker.fetch_comic_data(issue_id=self.issue_id) + except TalkerError: + pass + QtWidgets.QApplication.restoreOverrideCursor() + self.issue_number = issue.issue or "" self.coverWidget.set_issue_details(self.issue_id, [issue.cover_image or "", *issue.alternate_images]) if issue.description is None: self.set_description(self.teDescription, "") else: self.set_description(self.teDescription, issue.description) + + # Update current record information + item_text = issue.issue or "" + item = IssueNumberTableWidgetItem(item_text) + item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + item.setData(QtCore.Qt.ItemDataRole.DisplayRole, item_text) + self.twList.setItem(row, 0, item) + + item_text = "" + if issue.year is not None: + item_text += f"-{issue.year:04}" + if issue.month is not None: + item_text += f"-{issue.month:02}" + + qtw_item = QtWidgets.QTableWidgetItem(item_text.strip("-")) + qtw_item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + qtw_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled) + self.twList.setItem(row, 1, qtw_item) + + item_text = issue.title or "" + qtw_item = QtWidgets.QTableWidgetItem(item_text) + qtw_item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + qtw_item.setFlags(QtCore.Qt.ItemFlag.ItemIsSelectable | QtCore.Qt.ItemFlag.ItemIsEnabled) + self.twList.setItem(row, 2, qtw_item) diff --git a/comictaggerlib/seriesselectionwindow.py b/comictaggerlib/seriesselectionwindow.py index 8380e73..1a489af 100644 --- a/comictaggerlib/seriesselectionwindow.py +++ b/comictaggerlib/seriesselectionwindow.py @@ -558,7 +558,8 @@ class SeriesSelectionWindow(QtWidgets.QDialog): if prev is not None and prev.row() == curr.row(): return - self.series_id = self.twList.item(curr.row(), 0).data(QtCore.Qt.ItemDataRole.UserRole) + row = curr.row() + self.series_id = self.twList.item(row, 0).data(QtCore.Qt.ItemDataRole.UserRole) # list selection was changed, update the info on the series series = self.series_list[self.series_id] @@ -570,9 +571,44 @@ class SeriesSelectionWindow(QtWidgets.QDialog): and series.description and series.image_url ): - series = self.talker.fetch_series(self.series_id) + QtWidgets.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.CursorShape.WaitCursor)) + # Changing of usernames and passwords with using cache can cause talker errors to crash out + try: + series = self.talker.fetch_series(self.series_id) + except TalkerError: + pass + QtWidgets.QApplication.restoreOverrideCursor() + if series.description is None: self.set_description(self.teDetails, "") else: self.set_description(self.teDetails, series.description) self.imageWidget.set_url(series.image_url) + + # Update current record information + row = curr.row() + item_text = series.name + item = QtWidgets.QTableWidgetItem(item_text) + item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + item.setData(QtCore.Qt.ItemDataRole.UserRole, series.id) + self.twList.setItem(row, 0, item) + + if series.start_year is not None: + item_text = f"{series.start_year:04}" + item = QtWidgets.QTableWidgetItem(item_text) + item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + item.setData(QtCore.Qt.ItemDataRole.DisplayRole, series.start_year) + self.twList.setItem(row, 1, item) + + if series.count_of_issues is not None: + item_text = f"{series.count_of_issues:04}" + item = QtWidgets.QTableWidgetItem(item_text) + item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + item.setData(QtCore.Qt.ItemDataRole.DisplayRole, series.count_of_issues) + self.twList.setItem(row, 2, item) + + if series.publisher is not None: + item_text = series.publisher + item.setData(QtCore.Qt.ItemDataRole.ToolTipRole, item_text) + item = QtWidgets.QTableWidgetItem(item_text) + self.twList.setItem(row, 3, item)