Cleanup
This commit is contained in:
62
models.py
62
models.py
@@ -16,12 +16,15 @@ class LibraryTableModel(QtCore.QAbstractTableModel):
|
|||||||
# Sorting is taken care of by the QSortFilterProxy model
|
# Sorting is taken care of by the QSortFilterProxy model
|
||||||
# which has an inbuilt sort method
|
# which has an inbuilt sort method
|
||||||
|
|
||||||
|
# Modifying data in the table model is a case of modifying the
|
||||||
|
# data sent to it as a list
|
||||||
|
# In this case, that's self.data_list
|
||||||
|
|
||||||
def __init__(self, header_data, display_data, temp_dir=None, parent=None):
|
def __init__(self, header_data, display_data, temp_dir=None, parent=None):
|
||||||
super(LibraryTableModel, self).__init__(parent)
|
super(LibraryTableModel, self).__init__(parent)
|
||||||
self.header_data = header_data
|
self.header_data = header_data
|
||||||
self.display_data = display_data
|
self.display_data = display_data
|
||||||
self.temp_dir = temp_dir # Is only needed for the main table
|
self.temp_dir = temp_dir
|
||||||
# This model is otherwise reusable if this remains None
|
|
||||||
|
|
||||||
def rowCount(self, parent):
|
def rowCount(self, parent):
|
||||||
return len(self.display_data)
|
return len(self.display_data)
|
||||||
@@ -33,42 +36,39 @@ class LibraryTableModel(QtCore.QAbstractTableModel):
|
|||||||
if not index.isValid():
|
if not index.isValid():
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if role == QtCore.Qt.DecorationRole and index.column() == 2 and self.temp_dir:
|
# This block specializaes this function for the library
|
||||||
return_pixmap = None
|
# Not having a self.temp_dir allows for its reuse elsewhere
|
||||||
file_exists = self.display_data[index.row()][5]['file_exists']
|
if self.temp_dir:
|
||||||
position = self.display_data[index.row()][5]['position']
|
if role == QtCore.Qt.DecorationRole and index.column() == 2:
|
||||||
|
return_pixmap = None
|
||||||
|
file_exists = self.display_data[index.row()][5]['file_exists']
|
||||||
|
position = self.display_data[index.row()][5]['position']
|
||||||
|
|
||||||
if not file_exists:
|
if not file_exists:
|
||||||
return_pixmap = QtGui.QIcon(':/images/error.svg').pixmap(
|
return_pixmap = pie_chart.pixmapper(
|
||||||
QtCore.Qt.SizeHintRole + 10)
|
-1, None, None, QtCore.Qt.SizeHintRole + 10)
|
||||||
|
|
||||||
if position:
|
if position:
|
||||||
current_chapter = position['current_chapter']
|
current_chapter = position['current_chapter']
|
||||||
total_chapters = position['total_chapters']
|
total_chapters = position['total_chapters']
|
||||||
progress_percent = int(current_chapter * 100 / total_chapters)
|
|
||||||
|
|
||||||
if current_chapter == total_chapters:
|
return_pixmap = pie_chart.pixmapper(
|
||||||
return_pixmap = QtGui.QIcon(':/images/checkmark.svg').pixmap(
|
current_chapter, total_chapters, self.temp_dir, QtCore.Qt.SizeHintRole + 10)
|
||||||
QtCore.Qt.SizeHintRole + 10)
|
|
||||||
else:
|
|
||||||
pie_chart.GeneratePie(progress_percent, self.temp_dir).generate()
|
|
||||||
svg_path = os.path.join(self.temp_dir, 'lector_progress.svg')
|
|
||||||
return_pixmap = QtGui.QIcon(svg_path).pixmap(
|
|
||||||
QtCore.Qt.SizeHintRole + 10)
|
|
||||||
|
|
||||||
return return_pixmap
|
return return_pixmap
|
||||||
|
|
||||||
elif role == QtCore.Qt.DisplayRole:
|
|
||||||
value = self.display_data[index.row()][index.column()]
|
|
||||||
return value
|
|
||||||
|
|
||||||
elif role == QtCore.Qt.UserRole:
|
|
||||||
# The rest of the roles can be accomodated here.
|
# The rest of the roles can be accomodated here.
|
||||||
value = self.display_data[index.row()][5]
|
elif role == QtCore.Qt.UserRole:
|
||||||
return value
|
value = self.display_data[index.row()][5] # File metadata
|
||||||
|
return value
|
||||||
|
|
||||||
elif role == QtCore.Qt.UserRole + 1:
|
elif role == QtCore.Qt.UserRole + 1:
|
||||||
value = self.display_data[index.row()][6]
|
value = self.display_data[index.row()][6] # File hash
|
||||||
|
return value
|
||||||
|
|
||||||
|
#_________________________________
|
||||||
|
if role == QtCore.Qt.DisplayRole:
|
||||||
|
value = self.display_data[index.row()][index.column()]
|
||||||
return value
|
return value
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@@ -3,13 +3,13 @@
|
|||||||
import os
|
import os
|
||||||
import math
|
import math
|
||||||
|
|
||||||
class GeneratePie():
|
from PyQt5 import QtGui
|
||||||
def __init__(self, progress_percent, temp_dir=None):
|
|
||||||
self.progress_percent = int(progress_percent)
|
|
||||||
self.temp_dir = temp_dir
|
|
||||||
|
|
||||||
def generate(self):
|
|
||||||
lSlices = (self.progress_percent, 100 - self.progress_percent) # percentages to show in pie
|
def generate_pie(progress_percent, temp_dir=None):
|
||||||
|
progress_percent = int(progress_percent)
|
||||||
|
|
||||||
|
lSlices = (progress_percent, 100 - progress_percent) # percentages to show in pie
|
||||||
|
|
||||||
lOffsetX = 150
|
lOffsetX = 150
|
||||||
lOffsetY = 150
|
lOffsetY = 150
|
||||||
@@ -85,10 +85,35 @@ class GeneratePie():
|
|||||||
""" % (lSvgPath, lOffsetX, lOffsetY)
|
""" % (lSvgPath, lOffsetX, lOffsetY)
|
||||||
|
|
||||||
|
|
||||||
if self.temp_dir:
|
if temp_dir:
|
||||||
svg_path = os.path.join(self.temp_dir, 'lector_progress.svg')
|
svg_path = os.path.join(temp_dir, 'lector_progress.svg')
|
||||||
lFile = open(svg_path, 'w')
|
lFile = open(svg_path, 'w')
|
||||||
lFile.write(lSvg)
|
lFile.write(lSvg)
|
||||||
lFile.close()
|
lFile.close()
|
||||||
else:
|
else:
|
||||||
return lSvg
|
return lSvg
|
||||||
|
|
||||||
|
|
||||||
|
def pixmapper(current_chapter, total_chapters, temp_dir, size):
|
||||||
|
# A current_chapter of -1 implies the files does not exist
|
||||||
|
# A chapter number == Total chapters implies the file is unread
|
||||||
|
return_pixmap = None
|
||||||
|
|
||||||
|
if current_chapter == -1:
|
||||||
|
return_pixmap = QtGui.QIcon(':/images/error.svg').pixmap(size)
|
||||||
|
return return_pixmap
|
||||||
|
|
||||||
|
if current_chapter == total_chapters:
|
||||||
|
return_pixmap = QtGui.QIcon(':/images/checkmark.svg').pixmap(size)
|
||||||
|
else:
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# See if saving the svg to disk can be avoided
|
||||||
|
# Shift to lines to track progress
|
||||||
|
|
||||||
|
progress_percent = int(current_chapter * 100 / total_chapters)
|
||||||
|
generate_pie(progress_percent, temp_dir)
|
||||||
|
svg_path = os.path.join(temp_dir, 'lector_progress.svg')
|
||||||
|
return_pixmap = QtGui.QIcon(svg_path).pixmap(size)
|
||||||
|
|
||||||
|
return return_pixmap
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
# See if you want to include a hash of the book's name and author
|
# See if you want to include a hash of the book's name and author
|
||||||
|
# Overwrite book if deleted and then re-added
|
||||||
|
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
16
widgets.py
16
widgets.py
@@ -672,9 +672,6 @@ class LibraryDelegate(QtWidgets.QStyledItemDelegate):
|
|||||||
file_exists = index.data(QtCore.Qt.UserRole + 5)
|
file_exists = index.data(QtCore.Qt.UserRole + 5)
|
||||||
position = index.data(QtCore.Qt.UserRole + 7)
|
position = index.data(QtCore.Qt.UserRole + 7)
|
||||||
|
|
||||||
# TODO
|
|
||||||
# Calculate progress on the basis of lines
|
|
||||||
|
|
||||||
# The shadow pixmap currently is set to 420 x 600
|
# The shadow pixmap currently is set to 420 x 600
|
||||||
shadow_pixmap = QtGui.QPixmap()
|
shadow_pixmap = QtGui.QPixmap()
|
||||||
shadow_pixmap.load(':/images/gray-shadow.png')
|
shadow_pixmap.load(':/images/gray-shadow.png')
|
||||||
@@ -688,7 +685,7 @@ class LibraryDelegate(QtWidgets.QStyledItemDelegate):
|
|||||||
QtWidgets.QStyledItemDelegate.paint(self, painter, option, index)
|
QtWidgets.QStyledItemDelegate.paint(self, painter, option, index)
|
||||||
painter.setOpacity(1)
|
painter.setOpacity(1)
|
||||||
|
|
||||||
read_icon = QtGui.QIcon(':/images/error.svg').pixmap(36)
|
read_icon = pie_chart.pixmapper(-1, None, None, 36)
|
||||||
x_draw = option.rect.bottomRight().x() - 30
|
x_draw = option.rect.bottomRight().x() - 30
|
||||||
y_draw = option.rect.bottomRight().y() - 35
|
y_draw = option.rect.bottomRight().y() - 35
|
||||||
painter.drawPixmap(x_draw, y_draw, read_icon)
|
painter.drawPixmap(x_draw, y_draw, read_icon)
|
||||||
@@ -701,16 +698,9 @@ class LibraryDelegate(QtWidgets.QStyledItemDelegate):
|
|||||||
if position:
|
if position:
|
||||||
current_chapter = position['current_chapter']
|
current_chapter = position['current_chapter']
|
||||||
total_chapters = position['total_chapters']
|
total_chapters = position['total_chapters']
|
||||||
progress_percent = int(current_chapter * 100 / total_chapters)
|
|
||||||
|
|
||||||
if current_chapter == total_chapters:
|
read_icon = pie_chart.pixmapper(
|
||||||
read_icon = QtGui.QIcon(':/images/checkmark.svg').pixmap(36)
|
current_chapter, total_chapters, self.temp_dir, 36)
|
||||||
else:
|
|
||||||
# TODO
|
|
||||||
# See if saving the svg to disk can be avoided
|
|
||||||
pie_chart.GeneratePie(progress_percent, self.temp_dir).generate()
|
|
||||||
svg_path = os.path.join(self.temp_dir, 'lector_progress.svg')
|
|
||||||
read_icon = QtGui.QIcon(svg_path).pixmap(32)
|
|
||||||
|
|
||||||
x_draw = option.rect.bottomRight().x() - 30
|
x_draw = option.rect.bottomRight().x() - 30
|
||||||
y_draw = option.rect.bottomRight().y() - 35
|
y_draw = option.rect.bottomRight().y() - 35
|
||||||
|
Reference in New Issue
Block a user