diff --git a/libprs500/gui/database.py b/libprs500/gui/database.py index ab81084700..b7c7bf02c6 100644 --- a/libprs500/gui/database.py +++ b/libprs500/gui/database.py @@ -197,19 +197,27 @@ class LibraryDatabase(object): self.add_format(_id, "lrf", c.getvalue()) self.con.commit() - def update_cover(self, _id, cover): + def update_cover(self, _id, cover, scaled=None): + """ + @param cover: The cover data + @param scaled: scaled version of cover that shoould be written to + format files. If None, cover is used. + """ data = None if cover: data = sqlite.Binary(compress(cover)) - self.con.execute('update books_meta set cover=? where id=?', (data, _id)) - lrf = self.get_format(_id, "lrf") - if lrf: - c = cStringIO() - c.write(lrf) - lrf = LRFMetaFile(c) - lrf.thumbnail = cover - self.add_format(_id, "lrf", c.getvalue()) - self.update_max_size(_id) + self.con.execute('update books_meta set cover=? where id=?', (data, _id)) + if not scaled: + scaled = cover + if scaled: + lrf = self.get_format(_id, "lrf") + if lrf: + c = cStringIO() + c.write(lrf) + lrf = LRFMetaFile(c) + lrf.thumbnail = scaled + self.add_format(_id, "lrf", c.getvalue()) + self.update_max_size(_id) self.commit() def update_max_size(self, _id): diff --git a/libprs500/gui/widgets.py b/libprs500/gui/widgets.py index 583e77fa52..d3dc22e1e5 100644 --- a/libprs500/gui/widgets.py +++ b/libprs500/gui/widgets.py @@ -224,9 +224,9 @@ class CoverDisplay(FileDragAndDrop, QLabel): drag, files = self.drag_object(["jpeg"]) if drag and files: _file = files[0] - drag.setPixmap(self.pixmap()) - self.pixmap().save(_file) _file.close() + drag.setPixmap(self.pixmap()) + self.pixmap().save(os.path.abspath(_file.name)) drag.start(Qt.MoveAction) class DeviceView(FileDragAndDrop, QListView): @@ -239,7 +239,7 @@ class DeviceView(FileDragAndDrop, QListView): def hide_card(self, x): self.model().update_devices(card=not x) - + def files_dropped(self, files, event): ids = [] md = event.mimeData() @@ -414,13 +414,18 @@ class LibraryBooksModel(QAbstractTableModel): return files def update_cover(self, index, pix): + spix = pix.scaledToHeight(68, Qt.SmoothTransformation) _id = self.id_from_index(index) - qb = QBuffer() + qb, sqb = QBuffer(), QBuffer() qb.open(QBuffer.ReadWrite) + sqb.open(QBuffer.ReadWrite) pix.save(qb, "JPG") + spix.save(sqb, "JPG") data = str(qb.data()) + sdata = str(sqb.data()) qb.close() - self.db.update_cover(_id, data) + sqb.close() + self.db.update_cover(_id, data, scaled=sdata) self.refresh_row(index.row()) def add_formats(self, paths, index):