diff --git a/__main__.py b/__main__.py index 362cdad..19233f4 100755 --- a/__main__.py +++ b/__main__.py @@ -26,7 +26,7 @@ import database from resources import mainwindow, resources from toolbars import LibraryToolBar, BookToolBar -from widgets import Tab, LibraryDelegate +from widgets import Tab, LibraryDelegate, TableViewProgressBarDelegate from threaded import BackGroundTabUpdate, BackGroundBookAddition, BackGroundBookDeletion from library import Library from settings import Settings @@ -222,7 +222,10 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): if self.settings['main_window_headers']: for count, i in enumerate(self.settings['main_window_headers']): self.tableView.horizontalHeader().resizeSection(count, int(i)) + self.tableView.horizontalHeader().resizeSection(4, 1) self.tableView.horizontalHeader().setStretchLastSection(True) + # self.tableView.setItemDelegateForColumn( + # 3, TableViewProgressBarDelegate(self.lib_ref.view_model, self)) self.tableView.horizontalHeader().sectionClicked.connect( self.lib_ref.table_proxy_model.sort_table_columns) diff --git a/models.py b/models.py index 868a7b4..bed70a6 100644 --- a/models.py +++ b/models.py @@ -69,8 +69,9 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): # TODO # The setData method super(TableProxyModel, self).__init__(parent) + self.setObjectName('asdasd') self.header_data = [ - None, 'Title', 'Author', 'Status', 'Year', 'Tags'] + None, 'Title', 'Author', 'Year', '%', 'Tags'] self.temp_dir = temp_dir self.filter_text = None self.active_library_filters = None @@ -78,7 +79,7 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): self.role_dictionary = { 1: QtCore.Qt.UserRole, # Title 2: QtCore.Qt.UserRole + 1, # Author - 4: QtCore.Qt.UserRole + 2, # Year + 3: QtCore.Qt.UserRole + 2, # Year 5: QtCore.Qt.UserRole + 4} # Tags self.common_functions = ProxyModelsCommonFunctions(self) @@ -98,8 +99,11 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): source_index = self.mapToSource(index) item = self.sourceModel().item(source_index.row(), 0) + if role == QtCore.Qt.TextAlignmentRole and index.column() == 3: + return QtCore.Qt.AlignHCenter + if role == QtCore.Qt.DecorationRole: - if index.column() == 3: + if index.column() == 4: return_pixmap = None file_exists = item.data(QtCore.Qt.UserRole + 5) @@ -120,7 +124,7 @@ class TableProxyModel(QtCore.QSortFilterProxyModel): return return_pixmap elif role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: - if index.column() in (0, 3): # Cover and Status + if index.column() in (0, 4): # Cover and Status return QtCore.QVariant() return item.data(self.role_dictionary[index.column()]) diff --git a/widgets.py b/widgets.py index 19cb8dd..8529538 100644 --- a/widgets.py +++ b/widgets.py @@ -670,6 +670,33 @@ class BookmarkDelegate(QtWidgets.QStyledItemDelegate): ' ' + chapter_name) +class TableViewProgressBarDelegate(QtWidgets.QStyledItemDelegate): + def __init__(self, item_model, parent=None): + super(TableViewProgressBarDelegate, self).__init__(parent) + self.parent = parent + self.item_model = item_model + + def paint(self, painter, option, index): + item = self.item_model.item(index.row()) + position = item.data(QtCore.Qt.UserRole + 7) + + if position: + current_chapter = position['current_chapter'] + total_chapters = position['total_chapters'] + + progress = (current_chapter * 100) // total_chapters + + progressBarOption = QtWidgets.QStyleOptionProgressBar() + progressBarOption.rect = option.rect + progressBarOption.minimum = 0 + progressBarOption.maximum = 100 + progressBarOption.progress = progress + progressBarOption.textVisible = False + + QtWidgets.QApplication.style().drawControl( + QtWidgets.QStyle.CE_ProgressBar, progressBarOption, painter) + + class PliantDockWidget(QtWidgets.QDockWidget): def __init__(self, parent=None): super(PliantDockWidget, self).__init__(parent)