From 55f5523699c985ccaf522a1bfb9eaf27cbddf7c3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 20 Jul 2008 15:18:32 -0700 Subject: [PATCH] Implement #890 (Improvement to cover view) --- src/calibre/gui2/cover_flow.py | 5 +++-- src/calibre/gui2/dialogs/config.py | 3 ++- src/calibre/gui2/dialogs/config.ui | 17 +++++++++++++++++ .../gui2/pictureflow/PyQt/pictureflow.sip | 2 +- src/calibre/gui2/pictureflow/pictureflow.cpp | 14 ++++++++------ src/calibre/gui2/pictureflow/pictureflow.h | 2 +- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/calibre/gui2/cover_flow.py b/src/calibre/gui2/cover_flow.py index 7a6fe0a891..365d41ec50 100644 --- a/src/calibre/gui2/cover_flow.py +++ b/src/calibre/gui2/cover_flow.py @@ -12,7 +12,7 @@ import sys, os from PyQt4.QtGui import QImage, QSizePolicy from PyQt4.QtCore import Qt, QSize, SIGNAL, QObject -from calibre import pictureflow +from calibre import pictureflow, Settings if pictureflow is not None: class EmptyImageList(pictureflow.FlowImages): @@ -68,7 +68,8 @@ if pictureflow is not None: class CoverFlow(pictureflow.PictureFlow): def __init__(self, height=300, parent=None): - pictureflow.PictureFlow.__init__(self, parent) + pictureflow.PictureFlow.__init__(self, parent, + Settings().get('cover flow queue length', 6)+1) self.setSlideSize(QSize(int(2/3. * height), height)) self.setMinimumSize(QSize(int(2.35*0.67*height), (5/3.)*height+25)) self.setFocusPolicy(Qt.WheelFocus) diff --git a/src/calibre/gui2/dialogs/config.py b/src/calibre/gui2/dialogs/config.py index 89a90f04f0..6c6caddda9 100644 --- a/src/calibre/gui2/dialogs/config.py +++ b/src/calibre/gui2/dialogs/config.py @@ -66,6 +66,7 @@ class ConfigDialog(QDialog, Ui_Dialog): single_format = settings.get('save to disk single format', 'lrf') self.single_format.setCurrentIndex(BOOK_EXTENSIONS.index(single_format)) + self.cover_browse.setValue(settings.get('cover flow queue length', 6)) def compact(self, toggled): d = Vacuum(self, self.db) @@ -98,7 +99,7 @@ class ConfigDialog(QDialog, Ui_Dialog): pattern = self.filename_pattern.commit() settings.set('filename pattern', pattern) settings.set('save to disk single format', BOOK_EXTENSIONS[self.single_format.currentIndex()]) - + settings.set('cover flow queue length', self.cover_browse.value()) if not path or not os.path.exists(path) or not os.path.isdir(path): d = error_dialog(self, _('Invalid database location'), _('Invalid database location ')+path+_('
Must be a directory.')) diff --git a/src/calibre/gui2/dialogs/config.ui b/src/calibre/gui2/dialogs/config.ui index 1599520aca..70d223446f 100644 --- a/src/calibre/gui2/dialogs/config.ui +++ b/src/calibre/gui2/dialogs/config.ui @@ -132,6 +132,23 @@ + + + + + + &Number of covers to show in browse mode (after restart): + + + cover_browse + + + + + + + + diff --git a/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip b/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip index d0d3af27ea..4dc7e059d5 100644 --- a/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip +++ b/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip @@ -28,7 +28,7 @@ class PictureFlow : QWidget { public : - PictureFlow(QWidget *parent /TransferThis/ = 0); + PictureFlow(QWidget *parent /TransferThis/ = 0, int queueLength = 3); void setImages(FlowImages *images); diff --git a/src/calibre/gui2/pictureflow/pictureflow.cpp b/src/calibre/gui2/pictureflow/pictureflow.cpp index 9a7490d0d6..a6b28146e9 100644 --- a/src/calibre/gui2/pictureflow/pictureflow.cpp +++ b/src/calibre/gui2/pictureflow/pictureflow.cpp @@ -316,7 +316,7 @@ struct SlideInfo class PictureFlowPrivate { public: - PictureFlowPrivate(PictureFlow* widget); + PictureFlowPrivate(PictureFlow* widget, int queueLength); int slideCount() const; void setSlideCount(int count); @@ -368,6 +368,7 @@ private: int slideWidth; int slideHeight; int zoom; + int queueLength; int centerIndex; SlideInfo centerSlide; @@ -396,7 +397,7 @@ private: void resetSlides(); }; -PictureFlowPrivate::PictureFlowPrivate(PictureFlow* w) +PictureFlowPrivate::PictureFlowPrivate(PictureFlow* w, int queueLength_) { widget = w; slideImages = new FlowImages(); @@ -406,6 +407,7 @@ PictureFlowPrivate::PictureFlowPrivate(PictureFlow* w) zoom = 100; centerIndex = 0; + queueLength = queueLength_; slideFrame = 0; step = 0; @@ -553,7 +555,7 @@ void PictureFlowPrivate::resetSlides() centerSlide.slideIndex = centerIndex; leftSlides.clear(); - leftSlides.resize(3); + leftSlides.resize(queueLength); for(int i = 0; i < leftSlides.count(); i++) { SlideInfo& si = leftSlides[i]; @@ -565,7 +567,7 @@ void PictureFlowPrivate::resetSlides() } rightSlides.clear(); - rightSlides.resize(3); + rightSlides.resize(queueLength); for(int i = 0; i < rightSlides.count(); i++) { SlideInfo& si = rightSlides[i]; @@ -1104,9 +1106,9 @@ void PictureFlowPrivate::clearSurfaceCache() // ----------------------------------------- -PictureFlow::PictureFlow(QWidget* parent): QWidget(parent) +PictureFlow::PictureFlow(QWidget* parent, int queueLength): QWidget(parent) { - d = new PictureFlowPrivate(this); + d = new PictureFlowPrivate(this, queueLength); setAttribute(Qt::WA_StaticContents, true); setAttribute(Qt::WA_OpaquePaintEvent, true); diff --git a/src/calibre/gui2/pictureflow/pictureflow.h b/src/calibre/gui2/pictureflow/pictureflow.h index c1042e4adb..7431dee634 100644 --- a/src/calibre/gui2/pictureflow/pictureflow.h +++ b/src/calibre/gui2/pictureflow/pictureflow.h @@ -98,7 +98,7 @@ public: /*! Creates a new PictureFlow widget. */ - PictureFlow(QWidget* parent = 0); + PictureFlow(QWidget* parent = 0, int queueLength = 3); /*! Destroys the widget.