This commit is contained in:
Kovid Goyal 2017-07-25 16:01:03 +05:30
commit d511b7c12b
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -4,6 +4,8 @@ __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import traceback
from PyQt5.Qt import ( from PyQt5.Qt import (
Qt, QDialog, QAbstractItemView, QTableWidgetItem, QIcon, QListWidgetItem, Qt, QDialog, QAbstractItemView, QTableWidgetItem, QIcon, QListWidgetItem,
QCoreApplication, QEvent, QObject, QApplication, pyqtSignal, QByteArray) QCoreApplication, QEvent, QObject, QApplication, pyqtSignal, QByteArray)
@ -27,8 +29,12 @@ class TableItem(QTableWidgetItem):
self.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable) self.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
def __ge__(self, other): def __ge__(self, other):
l = sort_key(self.sort) if isinstance(self.sort, (str, unicode)):
r = sort_key(other.sort) l = sort_key(self.sort)
r = sort_key(other.sort)
else:
l = self.sort
r = other.sort
if l > r: if l > r:
return 1 return 1
if l == r: if l == r:
@ -36,8 +42,12 @@ class TableItem(QTableWidgetItem):
return 0 return 0
def __lt__(self, other): def __lt__(self, other):
l = sort_key(self.sort) if isinstance(self.sort, (str, unicode)):
r = sort_key(other.sort) l = sort_key(self.sort)
r = sort_key(other.sort)
else:
l = self.sort
r = other.sort
if l < r: if l < r:
return 1 return 1
if l == r: if l == r:
@ -459,28 +469,41 @@ class Quickview(QDialog, Ui_Quickview):
for row, b in enumerate(books): for row, b in enumerate(books):
mi = self.db.get_metadata(b, index_is_id=True, get_user_categories=False) mi = self.db.get_metadata(b, index_is_id=True, get_user_categories=False)
for col in self.column_order: for col in self.column_order:
if col == 'title': try:
a = TableItem(mi.title, mi.title_sort) if col == 'title':
if b == self.current_book_id: a = TableItem(mi.title, mi.title_sort)
select_item = a if b == self.current_book_id:
elif col == 'authors': select_item = a
a = TableItem(' & '.join(mi.authors), mi.author_sort) elif col == 'authors':
elif col == 'series': a = TableItem(' & '.join(mi.authors), mi.author_sort)
series = mi.format_field('series')[1] elif col == 'series':
if series is None: series = mi.format_field('series')[1]
series = '' if series is None:
a = TableItem(series, mi.series, mi.series_index) a = TableItem('', '', 0)
elif self.fm[col]['datatype'] == 'series': else:
v = mi.format_field(col)[1] a = TableItem(series, mi.series, mi.series_index)
a = TableItem(v, mi.get(col), mi.get(col+'_index')) elif self.fm[col]['datatype'] == 'series':
else: v = mi.format_field(col)[1]
v = mi.format_field(col)[1] a = TableItem(v, mi.get(col), mi.get(col+'_index'))
a = TableItem(v, v) elif self.fm[col]['datatype'] == 'datetime':
v = mi.format_field(col)[1]
from calibre.utils.date import timestampfromdt
sv = timestampfromdt(mi.get(col))
a = TableItem(v, sv)
elif self.fm[col]['datatype'] in ('float', 'int'):
v = mi.format_field(col)[1]
sv = mi.get(col)
a = TableItem(v, sv)
else:
v = mi.format_field(col)[1]
a = TableItem(v, v)
except:
traceback.print_exc()
a = TableItem(_('Something went wrong while filling in the table'), '')
a.setData(Qt.UserRole, b) a.setData(Qt.UserRole, b)
a.setToolTip(tt) a.setToolTip(tt)
self.books_table.setItem(row, self.key_to_table_widget_column(col), a) self.books_table.setItem(row, self.key_to_table_widget_column(col), a)
self.books_table.setRowHeight(row, self.books_table_row_height) self.books_table.setRowHeight(row, self.books_table_row_height)
self.books_table.blockSignals(False) self.books_table.blockSignals(False)
self.books_table.setSortingEnabled(True) self.books_table.setSortingEnabled(True)
if select_item is not None: if select_item is not None: