mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Search highlighting for the grid view
This commit is contained in:
parent
5f518fba1d
commit
a33ce97c17
@ -352,6 +352,7 @@ class CoverDelegate(QStyledItemDelegate):
|
|||||||
self.cover_cache = CoverCache(limit=gprefs['cover_grid_cache_size'])
|
self.cover_cache = CoverCache(limit=gprefs['cover_grid_cache_size'])
|
||||||
self.render_queue = Queue()
|
self.render_queue = Queue()
|
||||||
self.animating = None
|
self.animating = None
|
||||||
|
self.highlight_color = QColor(Qt.white)
|
||||||
|
|
||||||
def set_dimensions(self):
|
def set_dimensions(self):
|
||||||
width = self.original_width = gprefs['cover_grid_width']
|
width = self.original_width = gprefs['cover_grid_width']
|
||||||
@ -385,11 +386,20 @@ class CoverDelegate(QStyledItemDelegate):
|
|||||||
|
|
||||||
def paint(self, painter, option, index):
|
def paint(self, painter, option, index):
|
||||||
QStyledItemDelegate.paint(self, painter, option, QModelIndex()) # draw the hover and selection highlights
|
QStyledItemDelegate.paint(self, painter, option, QModelIndex()) # draw the hover and selection highlights
|
||||||
db = index.model().db
|
m = index.model()
|
||||||
|
db = m.db
|
||||||
try:
|
try:
|
||||||
book_id = db.id(index.row())
|
book_id = db.id(index.row())
|
||||||
except (ValueError, IndexError, KeyError):
|
except (ValueError, IndexError, KeyError):
|
||||||
return
|
return
|
||||||
|
if book_id in m.ids_to_highlight_set:
|
||||||
|
painter.save()
|
||||||
|
try:
|
||||||
|
painter.setPen(self.highlight_color)
|
||||||
|
painter.setRenderHint(QPainter.Antialiasing, True)
|
||||||
|
painter.drawRoundedRect(option.rect, 10, 10, Qt.RelativeSize)
|
||||||
|
finally:
|
||||||
|
painter.restore()
|
||||||
db = db.new_api
|
db = db.new_api
|
||||||
cdata = self.cover_cache[book_id]
|
cdata = self.cover_cache[book_id]
|
||||||
painter.save()
|
painter.save()
|
||||||
@ -435,7 +445,6 @@ class GridView(QListView):
|
|||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
QListView.__init__(self, parent)
|
QListView.__init__(self, parent)
|
||||||
setup_dnd_interface(self)
|
setup_dnd_interface(self)
|
||||||
self.set_color()
|
|
||||||
self.setUniformItemSizes(True)
|
self.setUniformItemSizes(True)
|
||||||
self.setWrapping(True)
|
self.setWrapping(True)
|
||||||
self.setFlow(self.LeftToRight)
|
self.setFlow(self.LeftToRight)
|
||||||
@ -450,6 +459,7 @@ class GridView(QListView):
|
|||||||
self.delegate.animation.finished.connect(self.animation_done)
|
self.delegate.animation.finished.connect(self.animation_done)
|
||||||
self.setItemDelegate(self.delegate)
|
self.setItemDelegate(self.delegate)
|
||||||
self.setSpacing(self.delegate.spacing)
|
self.setSpacing(self.delegate.spacing)
|
||||||
|
self.set_color()
|
||||||
self.ignore_render_requests = Event()
|
self.ignore_render_requests = Event()
|
||||||
self.render_thread = None
|
self.render_thread = None
|
||||||
self.update_item.connect(self.re_render, type=Qt.QueuedConnection)
|
self.update_item.connect(self.re_render, type=Qt.QueuedConnection)
|
||||||
@ -478,9 +488,12 @@ class GridView(QListView):
|
|||||||
def set_color(self):
|
def set_color(self):
|
||||||
r, g, b = gprefs['cover_grid_color']
|
r, g, b = gprefs['cover_grid_color']
|
||||||
pal = QPalette()
|
pal = QPalette()
|
||||||
pal.setColor(pal.Base, QColor(r, g, b))
|
col = QColor(r, g, b)
|
||||||
pal.setColor(pal.Text, QColor(Qt.white if (r + g + b)/3.0 < 128 else Qt.black))
|
pal.setColor(pal.Base, col)
|
||||||
|
dark = (r + g + b)/3.0 < 128
|
||||||
|
pal.setColor(pal.Text, QColor(Qt.white if dark else Qt.black))
|
||||||
self.setPalette(pal)
|
self.setPalette(pal)
|
||||||
|
self.delegate.highlight_color = pal.color(pal.Text)
|
||||||
|
|
||||||
def refresh_settings(self):
|
def refresh_settings(self):
|
||||||
if gprefs['cover_grid_width'] != self.delegate.original_width or gprefs['cover_grid_height'] != self.delegate.original_height:
|
if gprefs['cover_grid_width'] != self.delegate.original_width or gprefs['cover_grid_height'] != self.delegate.original_height:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user