This commit is contained in:
Kovid Goyal 2017-07-28 15:10:36 +05:30
commit 8528c50b42
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -13,7 +13,9 @@ from PyQt5.Qt import (
from calibre.customize.ui import find_plugin from calibre.customize.ui import find_plugin
from calibre.gui2 import gprefs from calibre.gui2 import gprefs
from calibre.gui2.dialogs.quickview_ui import Ui_Quickview from calibre.gui2.dialogs.quickview_ui import Ui_Quickview
from calibre.utils.date import timestampfromdt
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.utils.iso8601 import UNDEFINED_DATE
class TableItem(QTableWidgetItem): class TableItem(QTableWidgetItem):
@ -29,6 +31,16 @@ class TableItem(QTableWidgetItem):
self.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable) self.setFlags(Qt.ItemIsEnabled|Qt.ItemIsSelectable)
def __ge__(self, other): def __ge__(self, other):
if self.sort is None:
if other.sort is None:
# None == None therefore >=
return True
# self is None, other is not None therefore self < other
return False
if other.sort is None:
# self is not None and other is None therefore self >= other
return True
if isinstance(self.sort, (str, unicode)): if isinstance(self.sort, (str, unicode)):
l = sort_key(self.sort) l = sort_key(self.sort)
r = sort_key(other.sort) r = sort_key(other.sort)
@ -42,6 +54,16 @@ class TableItem(QTableWidgetItem):
return 0 return 0
def __lt__(self, other): def __lt__(self, other):
if self.sort is None:
if other.sort is None:
# None == None therefore not <
return False
# self is None, other is not None therefore self < other
return True
if other.sort is None:
# self is not None therefore self > other
return False
if isinstance(self.sort, (str, unicode)): if isinstance(self.sort, (str, unicode)):
l = sort_key(self.sort) l = sort_key(self.sort)
r = sort_key(other.sort) r = sort_key(other.sort)
@ -487,9 +509,10 @@ class Quickview(QDialog, Ui_Quickview):
a = TableItem(v, mi.get(col), mi.get(col+'_index')) a = TableItem(v, mi.get(col), mi.get(col+'_index'))
elif self.fm[col]['datatype'] == 'datetime': elif self.fm[col]['datatype'] == 'datetime':
v = mi.format_field(col)[1] v = mi.format_field(col)[1]
from calibre.utils.date import timestampfromdt d = mi.get(col)
sv = timestampfromdt(mi.get(col)) if d is None:
a = TableItem(v, sv) d = UNDEFINED_DATE
a = TableItem(v, timestampfromdt(d))
elif self.fm[col]['datatype'] in ('float', 'int'): elif self.fm[col]['datatype'] in ('float', 'int'):
v = mi.format_field(col)[1] v = mi.format_field(col)[1]
sv = mi.get(col) sv = mi.get(col)