From 059041ebdfd73d7a7636c1d2d0a3ee41027d66b3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 25 May 2008 12:42:32 -0700 Subject: [PATCH] Make cover browsing more small-screen friendly --- src/calibre/gui2/__init__.py | 8 ++++++-- src/calibre/gui2/main.py | 9 +++++---- src/calibre/gui2/pictureflow/PyQt/pictureflow.sip | 1 + src/calibre/gui2/pictureflow/pictureflow.cpp | 7 +++++++ src/calibre/gui2/pictureflow/pictureflow.h | 1 + 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 4d5fa8f3a5..7e37c65555 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -3,7 +3,7 @@ __copyright__ = '2008, Kovid Goyal ' """ The GUI """ import sys, os, re, StringIO, traceback from PyQt4.QtCore import QVariant, QFileInfo, QObject, SIGNAL, QBuffer, \ - QByteArray, QLocale, QTranslator, QUrl, QTranslator + QByteArray, QLocale, QTranslator, QUrl, QTranslator, QCoreApplication from PyQt4.QtGui import QFileDialog, QMessageBox, QPixmap, QFileIconProvider, \ QIcon, QTableView, QDialogButtonBox, QApplication @@ -21,6 +21,10 @@ if iswindows: warnings.simplefilter('ignore', DeprecationWarning) +def available_height(): + desktop = QCoreApplication.instance().desktop() + return desktop.availableGeometry().height() + def extension(path): return os.path.splitext(path)[1][1:].lower() @@ -360,4 +364,4 @@ class Application(QApplication): self.installTranslator(self.translator) - \ No newline at end of file + diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index de1fb2f4e9..de936249bf 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -18,7 +18,7 @@ from calibre.gui2 import APP_UID, warning_dialog, choose_files, error_dialog, \ initialize_file_icon_provider, question_dialog,\ pixmap_to_data, choose_dir, ORG_NAME, \ qstring_to_unicode, set_sidebar_directories, \ - SingleApplication, Application + SingleApplication, Application, available_height from calibre.gui2.cover_flow import CoverFlow, DatabaseImages from calibre.library.database import LibraryDatabase from calibre.gui2.update import CheckForUpdates @@ -31,7 +31,7 @@ from calibre.gui2.news import NewsMenu from calibre.gui2.dialogs.metadata_single import MetadataSingleDialog from calibre.gui2.dialogs.metadata_bulk import MetadataBulkDialog from calibre.gui2.dialogs.jobs import JobsDialog -from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog +from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog from calibre.gui2.dialogs.lrf_single import LRFSingleDialog, LRFBulkDialog from calibre.gui2.dialogs.config import ConfigDialog from calibre.gui2.dialogs.search import SearchDialog @@ -202,13 +202,14 @@ class Main(MainWindow, Ui_MainWindow): ########################### Cover Flow ################################ self.cover_flow = None if CoverFlow is not None: - self.cover_flow = CoverFlow(height=220) + self.cover_flow = CoverFlow(height=220 if available_height() > 800 else 170) self.cover_flow.setVisible(False) self.library.layout().addWidget(self.cover_flow) self.connect(self.cover_flow, SIGNAL('currentChanged(int)'), self.sync_cf_to_listview) self.library_view.setSizePolicy(QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Expanding)) self.connect(self.cover_flow, SIGNAL('itemActivated(int)'), self.show_book_info) self.connect(self.status_bar.cover_flow_button, SIGNAL('toggled(bool)'), self.toggle_cover_flow) + self.connect(self.cover_flow, SIGNAL('stop()'), self.status_bar.cover_flow_button.toggle) QObject.connect(self.library_view.selectionModel(), SIGNAL('currentRowChanged(QModelIndex, QModelIndex)'), self.sync_cf_to_listview) self.db_images = DatabaseImages(self.library_view.model()) @@ -228,7 +229,7 @@ class Main(MainWindow, Ui_MainWindow): def toggle_cover_flow(self, show): if show: - self.cover_flow.setCurrentSlide(self.library_view.currentIndex().row()) + self.library_view.setCurrentIndex(self.library_view.currentIndex()) self.cover_flow.setVisible(True) self.cover_flow.setFocus(Qt.OtherFocusReason) self.status_bar.book_info.book_data.setMaximumHeight(100) diff --git a/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip b/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip index 74901c95bc..d0d3af27ea 100644 --- a/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip +++ b/src/calibre/gui2/pictureflow/PyQt/pictureflow.sip @@ -64,6 +64,7 @@ signals: void itemActivated(int index); void inputReceived(); void currentChanged(int index); + void stop(); protected: void paintEvent(QPaintEvent *event); diff --git a/src/calibre/gui2/pictureflow/pictureflow.cpp b/src/calibre/gui2/pictureflow/pictureflow.cpp index 49b881bb5e..a7e28f269d 100644 --- a/src/calibre/gui2/pictureflow/pictureflow.cpp +++ b/src/calibre/gui2/pictureflow/pictureflow.cpp @@ -1213,6 +1213,13 @@ void PictureFlow::keyPressEvent(QKeyEvent* event) return; } + if(event->key() == Qt::Key_Escape) + { + emit stop(); + event->accept(); + return; + } + event->ignore(); } diff --git a/src/calibre/gui2/pictureflow/pictureflow.h b/src/calibre/gui2/pictureflow/pictureflow.h index e6bb0c04f5..c1042e4adb 100644 --- a/src/calibre/gui2/pictureflow/pictureflow.h +++ b/src/calibre/gui2/pictureflow/pictureflow.h @@ -187,6 +187,7 @@ signals: void itemActivated(int index); void inputReceived(); void currentChanged(int index); + void stop(); //Emitted when the user presses the Esc key protected: void paintEvent(QPaintEvent *event);