diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py
index 8f3d7a2fe3..f0cb9f330b 100644
--- a/src/calibre/gui2/library.py
+++ b/src/calibre/gui2/library.py
@@ -198,11 +198,11 @@ class BooksModel(QAbstractTableModel):
return
ascending = order == Qt.AscendingOrder
self.db.sort(self.column_map[col], ascending)
- self.research(reset=False)
if reset:
self.clear_caches()
self.reset()
self.sorted_on = (self.column_map[col], order)
+
def resort(self, reset=True):
try:
@@ -222,7 +222,7 @@ class BooksModel(QAbstractTableModel):
def rowCount(self, parent):
if parent and parent.isValid():
return 0
- return self.db.rows() if self.db else 0
+ return len(self.db.data) if self.db else 0
def count(self):
return self.rowCount(None)
@@ -400,7 +400,7 @@ class BooksModel(QAbstractTableModel):
au = self.db.data[r][aidx]
if au:
au = [a.strip().replace('|', ',') for a in au.split(',')]
- return '\n'.join(au)
+ return ' & '.join(au)
def timestamp(r):
dt = self.db.data[r][tmdx]
@@ -427,11 +427,16 @@ class BooksModel(QAbstractTableModel):
series = self.db.data[r][srdx]
if series:
return series + ' [%d]'%self.db.data[r][siix]
+
+ def size(r):
+ size = self.db.data[r][sidx]
+ if size:
+ return '%.1f'%(float(size)/(1024*1024))
self.dc = {
'title' : lambda r : self.db.data[r][tidx],
'authors' : authors,
- 'size' : lambda r : '%.1f'%(float(self.db.data[r][sidx])/(1024*1024)),
+ 'size' : size,
'timestamp': timestamp,
'rating' : rating,
'publisher': publisher,
@@ -521,10 +526,8 @@ class BooksView(TableView):
QObject.connect(self.selectionModel(), SIGNAL('currentRowChanged(QModelIndex, QModelIndex)'),
self._model.current_changed)
# Adding and removing rows should resize rows to contents
- QObject.connect(self.model(), SIGNAL('rowsRemoved(QModelIndex, int, int)'), self.resizeRowsToContents)
- QObject.connect(self.model(), SIGNAL('rowsInserted(QModelIndex, int, int)'), self.resizeRowsToContents)
- # Resetting the model should resize rows (model is reset after search and sort operations)
- QObject.connect(self.model(), SIGNAL('modelReset()'), self.resizeRowsToContents)
+ #QObject.connect(self.model(), SIGNAL('rowsRemoved(QModelIndex, int, int)'), self.resizeRowsToContents)
+ #QObject.connect(self.model(), SIGNAL('rowsInserted(QModelIndex, int, int)'), self.resizeRowsToContents)
self.set_visible_columns()
def columns_sorted(self):
diff --git a/src/calibre/gui2/main.ui b/src/calibre/gui2/main.ui
index 065b322b04..ff2177b149 100644
--- a/src/calibre/gui2/main.ui
+++ b/src/calibre/gui2/main.ui
@@ -316,6 +316,9 @@
false
+
+ false
+
@@ -353,6 +356,9 @@
false
+
+ false
+
@@ -388,6 +394,9 @@
false
+
+ false
+
diff --git a/src/calibre/library/database2.py b/src/calibre/library/database2.py
index 4d8cd6fdf2..2d37d726ae 100644
--- a/src/calibre/library/database2.py
+++ b/src/calibre/library/database2.py
@@ -282,14 +282,15 @@ class ResultCache(SearchQueryParser):
field = field.lower().strip()
if field in ('author', 'tag', 'comment'):
field += 's'
- if field == 'date': field = 'timestamp'
+ if field == 'date': field = 'timestamp'
elif field == 'title': field = 'sort'
elif field == 'author': field = 'author_sort'
fcmp = self.seriescmp if field == 'series' else \
functools.partial(self.cmp, FIELD_MAP[field],
str=field not in ('size', 'rating', 'timestamp'))
- self._map.sort(cmp=fcmp, reverse=not ascending)
+ self._map.sort(cmp=fcmp, reverse=not ascending)
+ self._map_filtered = [id for id in self._map if id in self._map_filtered]
def search(self, query):
if not query or not query.strip():
@@ -363,7 +364,7 @@ class LibraryDatabase2(LibraryDatabase):
self.data = ResultCache()
self.search = self.data.search
self.refresh = functools.partial(self.data.refresh, self)
- self.sort = functools.partial(self.data.refresh, self)
+ self.sort = self.data.sort
self.index = self.data.index
self.refresh_ids = functools.partial(self.data.refresh_ids, self.conn)
self.row = self.data.row
@@ -1008,6 +1009,7 @@ class LibraryDatabase2(LibraryDatabase):
if not hasattr(path, 'read'):
stream.close()
self.conn.commit()
+ self.data.refresh_ids(self.conn, ids) # Needed to update format list and size
if duplicates:
paths = tuple(duplicate[0] for duplicate in duplicates)
formats = tuple(duplicate[1] for duplicate in duplicates)
@@ -1032,6 +1034,7 @@ class LibraryDatabase2(LibraryDatabase):
stream = open(path, 'rb')
self.add_format(id, ext, stream, index_is_id=True)
self.conn.commit()
+ self.data.refresh_ids(self.conn, [id]) # Needed to update format list and size
self.notify('add', [id])
def move_library_to(self, newloc, progress=None):