From ceb9e93e4a43abd791596b45554a1d3097f9515c Mon Sep 17 00:00:00 2001 From: BasioMeusPuga Date: Wed, 7 Mar 2018 00:54:49 +0530 Subject: [PATCH] Fixes to progress updates in the Table View --- __main__.py | 18 +++++++++++++++++- library.py | 11 ++++++++++- models.py | 21 +++++++++++++++------ 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/__main__.py b/__main__.py index 90864e2..aa54b0a 100755 --- a/__main__.py +++ b/__main__.py @@ -638,9 +638,20 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): current_tab.metadata[ 'position']['is_read'] = False + # TODO + # This doesn't update correctly + # try: + # position_perc = ( + # current_tab.metadata[ + # 'current_chapter'] * 100 / current_tab.metadata['total_chapters']) + # except KeyError: + # position_perc = None + if model_index: self.lib_ref.view_model.setData( model_index, current_tab.metadata, QtCore.Qt.UserRole + 3) + self.lib_ref.view_model.setData( + model_index, position_perc, QtCore.Qt.UserRole + 7) # Go on to change the value of the Table of Contents box current_tab.change_chapter_tocBox() @@ -1042,12 +1053,17 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): position['is_read'] = True metadata['position'] = position - self.lib_ref.view_model.setData(i, metadata, QtCore.Qt.UserRole + 3) + position_perc = None last_accessed_time = None if action == readAction: last_accessed_time = QtCore.QDateTime().currentDateTime() + position_perc = 100 + + self.lib_ref.view_model.setData(i, metadata, QtCore.Qt.UserRole + 3) + self.lib_ref.view_model.setData(i, position_perc, QtCore.Qt.UserRole + 7) self.lib_ref.view_model.setData(i, last_accessed_time, QtCore.Qt.UserRole + 12) + self.lib_ref.update_proxymodels() database_dict = { 'Position': position, diff --git a/library.py b/library.py index 643e892..4f274dd 100644 --- a/library.py +++ b/library.py @@ -83,9 +83,18 @@ class Library: except TypeError: # Because of datetime.datetime.now() above date_added = i[3] + position_perc = None position = i[5] if position: position = pickle.loads(position) + if position['is_read']: + position_perc = 100 + else: + try: + position_perc = ( + position['current_chapter'] * 100 / position['total_chapters']) + except KeyError: + position_perc = None file_exists = os.path.exists(path) @@ -126,7 +135,7 @@ class Library: item.setData(tags, QtCore.Qt.UserRole + 4) item.setData(file_exists, QtCore.Qt.UserRole + 5) item.setData(i[8], QtCore.Qt.UserRole + 6) # File hash - item.setData(position, QtCore.Qt.UserRole + 30) + item.setData(position_perc, QtCore.Qt.UserRole + 7) item.setData(False, QtCore.Qt.UserRole + 8) # Is the cover being displayed? item.setData(date_added, QtCore.Qt.UserRole + 9) item.setData(last_accessed, QtCore.Qt.UserRole + 12) diff --git a/models.py b/models.py index 7d44b11..e2b0b3e 100644 --- a/models.py +++ b/models.py @@ -77,6 +77,7 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): 1: QtCore.Qt.UserRole, # Title 2: QtCore.Qt.UserRole + 1, # Author 3: QtCore.Qt.UserRole + 2, # Year + 4: QtCore.Qt.UserRole + 7, # Position percentage 5: QtCore.Qt.UserRole + 4} # Tags self.common_functions = ProxyModelsCommonFunctions(self) @@ -106,14 +107,25 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): file_exists = item.data(QtCore.Qt.UserRole + 5) metadata = item.data(QtCore.Qt.UserRole + 3) position = metadata['position'] + if position: + is_read = position['is_read'] if not file_exists: - return_pixmap = pie_chart.pixmapper( + return pie_chart.pixmapper( -1, None, None, QtCore.Qt.SizeHintRole + 10) if position: - current_chapter = position['current_chapter'] - total_chapters = position['total_chapters'] + if is_read: + current_chapter = total_chapters = 100 + else: + try: + current_chapter = position['current_chapter'] + total_chapters = position['total_chapters'] + + if current_chapter == 1: + raise KeyError + except KeyError: + return return_pixmap = pie_chart.pixmapper( current_chapter, total_chapters, self.temp_dir, @@ -139,9 +151,6 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): return output def sort_table_columns(self, column): - if column == 3: - return - sorting_order = self.sender().sortIndicatorOrder() self.sort(0, sorting_order) self.setSortRole(self.role_dictionary[column])