Change table layout. Leave Table Delegate in code for future reference.

This commit is contained in:
BasioMeusPuga
2018-03-02 11:40:07 +05:30
parent 98541a5ca3
commit d26d646e3f
3 changed files with 39 additions and 5 deletions

View File

@@ -26,7 +26,7 @@ import database
from resources import mainwindow, resources from resources import mainwindow, resources
from toolbars import LibraryToolBar, BookToolBar from toolbars import LibraryToolBar, BookToolBar
from widgets import Tab, LibraryDelegate from widgets import Tab, LibraryDelegate, TableViewProgressBarDelegate
from threaded import BackGroundTabUpdate, BackGroundBookAddition, BackGroundBookDeletion from threaded import BackGroundTabUpdate, BackGroundBookAddition, BackGroundBookDeletion
from library import Library from library import Library
from settings import Settings from settings import Settings
@@ -222,7 +222,10 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
if self.settings['main_window_headers']: if self.settings['main_window_headers']:
for count, i in enumerate(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(count, int(i))
self.tableView.horizontalHeader().resizeSection(4, 1)
self.tableView.horizontalHeader().setStretchLastSection(True) self.tableView.horizontalHeader().setStretchLastSection(True)
# self.tableView.setItemDelegateForColumn(
# 3, TableViewProgressBarDelegate(self.lib_ref.view_model, self))
self.tableView.horizontalHeader().sectionClicked.connect( self.tableView.horizontalHeader().sectionClicked.connect(
self.lib_ref.table_proxy_model.sort_table_columns) self.lib_ref.table_proxy_model.sort_table_columns)

View File

@@ -69,8 +69,9 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
# TODO # TODO
# The setData method # The setData method
super(TableProxyModel, self).__init__(parent) super(TableProxyModel, self).__init__(parent)
self.setObjectName('asdasd')
self.header_data = [ self.header_data = [
None, 'Title', 'Author', 'Status', 'Year', 'Tags'] None, 'Title', 'Author', 'Year', '%', 'Tags']
self.temp_dir = temp_dir self.temp_dir = temp_dir
self.filter_text = None self.filter_text = None
self.active_library_filters = None self.active_library_filters = None
@@ -78,7 +79,7 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
self.role_dictionary = { self.role_dictionary = {
1: QtCore.Qt.UserRole, # Title 1: QtCore.Qt.UserRole, # Title
2: QtCore.Qt.UserRole + 1, # Author 2: QtCore.Qt.UserRole + 1, # Author
4: QtCore.Qt.UserRole + 2, # Year 3: QtCore.Qt.UserRole + 2, # Year
5: QtCore.Qt.UserRole + 4} # Tags 5: QtCore.Qt.UserRole + 4} # Tags
self.common_functions = ProxyModelsCommonFunctions(self) self.common_functions = ProxyModelsCommonFunctions(self)
@@ -98,8 +99,11 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
source_index = self.mapToSource(index) source_index = self.mapToSource(index)
item = self.sourceModel().item(source_index.row(), 0) 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 role == QtCore.Qt.DecorationRole:
if index.column() == 3: if index.column() == 4:
return_pixmap = None return_pixmap = None
file_exists = item.data(QtCore.Qt.UserRole + 5) file_exists = item.data(QtCore.Qt.UserRole + 5)
@@ -120,7 +124,7 @@ class TableProxyModel(QtCore.QSortFilterProxyModel):
return return_pixmap return return_pixmap
elif role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: 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 QtCore.QVariant()
return item.data(self.role_dictionary[index.column()]) return item.data(self.role_dictionary[index.column()])

View File

@@ -670,6 +670,33 @@ class BookmarkDelegate(QtWidgets.QStyledItemDelegate):
' ' + chapter_name) ' ' + 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): class PliantDockWidget(QtWidgets.QDockWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super(PliantDockWidget, self).__init__(parent) super(PliantDockWidget, self).__init__(parent)