From 135a18b4073da588b28368645e111db380ca5a0e Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Wed, 17 Jan 2007 11:58:20 +0000 Subject: [PATCH] get rid of supportsSearching() by using a proper feature svn path=/trunk/playground/graphics/okular/; revision=624587 --- core/document.cpp | 4 ++-- core/generator.cpp | 5 ----- core/generator.h | 6 +----- core/textdocumentgenerator.cpp | 10 ++++++++-- core/textdocumentgenerator.h | 2 +- generators/chm/generator_chm.cpp | 10 ++++++++-- generators/chm/generator_chm.h | 2 +- generators/dvi/generator_dvi.cpp | 11 +++++++++++ generators/dvi/generator_dvi.h | 3 +-- generators/poppler/generator_pdf.cpp | 11 ++++++++--- generators/poppler/generator_pdf.h | 2 -- 11 files changed, 41 insertions(+), 25 deletions(-) diff --git a/core/document.cpp b/core/document.cpp index 01df08844..5badb9898 100644 --- a/core/document.cpp +++ b/core/document.cpp @@ -1079,7 +1079,7 @@ bool Document::isAllowed( Permissions flags ) const bool Document::supportsSearching() const { - return d->m_generator ? d->m_generator->supportsSearching() : false; + return d->m_generator ? d->m_generator->hasFeature( Generator::TextExtraction ) : false; } bool Document::supportsPageSizes() const @@ -1468,7 +1468,7 @@ bool Document::searchText( int searchID, const QString & text, bool fromStart, Q SearchType type, bool moveViewport, const QColor & color, bool noDialogs ) { // safety checks: don't perform searches on empty or unsearchable docs - if ( !d->m_generator || !d->m_generator->supportsSearching() || d->m_pagesVector.isEmpty() ) + if ( !d->m_generator || !d->m_generator->hasFeature( Generator::TextExtraction ) || d->m_pagesVector.isEmpty() ) return false; // if searchID search not recorded, create new descriptor and init params diff --git a/core/generator.cpp b/core/generator.cpp index 45d0dc29d..19815bfaf 100644 --- a/core/generator.cpp +++ b/core/generator.cpp @@ -75,11 +75,6 @@ bool Generator::isAllowed( Permissions ) const return true; } -bool Generator::supportsSearching() const -{ - return false; -} - void Generator::rotationChanged( Rotation, Rotation ) { } diff --git a/core/generator.h b/core/generator.h index c47ef3249..e743b6fba 100644 --- a/core/generator.h +++ b/core/generator.h @@ -140,6 +140,7 @@ class OKULAR_EXPORT Generator : public QObject public: enum GeneratorFeature { + TextExtraction, ///< Whether the Generator can extract text from the document in the form of TextPage's ReadRawData ///< Whether the Generator can read a document directly from its raw data. }; @@ -248,11 +249,6 @@ class OKULAR_EXPORT Generator : public QObject */ virtual bool isAllowed( Permissions action ) const; - /** - * This method returns whether the generator supports searching. Default is false. - */ - virtual bool supportsSearching() const; - /** * This method is called when the orientation has been changed by the user. */ diff --git a/core/textdocumentgenerator.cpp b/core/textdocumentgenerator.cpp index d94c4c094..25b3937b9 100644 --- a/core/textdocumentgenerator.cpp +++ b/core/textdocumentgenerator.cpp @@ -308,9 +308,15 @@ void TextDocumentGenerator::generateSyncTextPage( Okular::Page * page ) page->setTextPage( d->createTextPage( page->number() ) ); } -bool TextDocumentGenerator::supportsSearching() const +bool TextDocumentGenerator::hasFeature( GeneratorFeature feature ) const { - return true; + switch ( feature ) + { + case TextExtraction: + return true; + default: ; + } + return false; } bool TextDocumentGenerator::print( KPrinter& printer ) diff --git a/core/textdocumentgenerator.h b/core/textdocumentgenerator.h index add3d0437..299d018b1 100644 --- a/core/textdocumentgenerator.h +++ b/core/textdocumentgenerator.h @@ -98,7 +98,7 @@ class OKULAR_EXPORT TextDocumentGenerator : public Generator void generatePixmap( Okular::PixmapRequest * request ); void generateSyncTextPage( Okular::Page * page ); - bool supportsSearching() const; + bool hasFeature( GeneratorFeature feature ) const; // [INHERITED] print document using already configured kprinter bool print( KPrinter& printer ); diff --git a/generators/chm/generator_chm.cpp b/generators/chm/generator_chm.cpp index adc7dffe0..267f2bfdd 100644 --- a/generators/chm/generator_chm.cpp +++ b/generators/chm/generator_chm.cpp @@ -364,9 +364,15 @@ void CHMGenerator::generateSyncTextPage( Okular::Page * page ) syncLock.unlock(); } -bool CHMGenerator::supportsSearching() const +bool CHMGenerator::hasFeature( GeneratorFeature feature ) const { - return true; + switch ( feature ) + { + case TextExtraction: + return true; + default: ; + } + return false; } QVariant CHMGenerator::metaData( const QString &key, const QVariant &option ) const diff --git a/generators/chm/generator_chm.h b/generators/chm/generator_chm.h index 54ac498c0..82b56a7c6 100644 --- a/generators/chm/generator_chm.h +++ b/generators/chm/generator_chm.h @@ -43,7 +43,7 @@ class CHMGenerator : public Okular::Generator void generateSyncTextPage( Okular::Page * page ); - bool supportsSearching() const; + bool hasFeature( GeneratorFeature feature ) const; QVariant metaData( const QString & key, const QVariant & option ) const; diff --git a/generators/dvi/generator_dvi.cpp b/generators/dvi/generator_dvi.cpp index 434bdbfa9..29ce15d54 100644 --- a/generators/dvi/generator_dvi.cpp +++ b/generators/dvi/generator_dvi.cpp @@ -369,6 +369,17 @@ const Okular::DocumentSynopsis *DviGenerator::generateDocumentSynopsis() return m_docSynopsis; } +bool DviGenerator::hasFeature( GeneratorFeature feature ) const +{ + switch ( feature ) + { + case TextExtraction: + return true; + default: ; + } + return false; +} + void DviGenerator::loadPages( QVector< Okular::Page * > &pagesVector, int orientation ) { QSize pageRequiredSize; diff --git a/generators/dvi/generator_dvi.h b/generators/dvi/generator_dvi.h index a8bc1e890..13ca024d7 100644 --- a/generators/dvi/generator_dvi.h +++ b/generators/dvi/generator_dvi.h @@ -40,8 +40,7 @@ class DviGenerator : public Okular::Generator // table of contents const Okular::DocumentSynopsis *generateDocumentSynopsis(); - // searching - bool supportsSearching() const { return true; }; + bool hasFeature( GeneratorFeature feature ) const; private: double m_resolution; diff --git a/generators/poppler/generator_pdf.cpp b/generators/poppler/generator_pdf.cpp index 556bd97e1..0ad165e81 100644 --- a/generators/poppler/generator_pdf.cpp +++ b/generators/poppler/generator_pdf.cpp @@ -769,11 +769,16 @@ bool PDFGenerator::print( KPrinter& printer ) bool PDFGenerator::hasFeature( GeneratorFeature feature ) const { + switch ( feature ) + { + case TextExtraction: #ifdef HAVE_POPPLER_HEAD - return feature == Okular::Generator::ReadRawData; -#else - return false; + case ReadRawData: #endif + return true; + default: ; + } + return false; } QVariant PDFGenerator::metaData( const QString & key, const QVariant & option ) const diff --git a/generators/poppler/generator_pdf.h b/generators/poppler/generator_pdf.h index 24c264651..48c325c9b 100644 --- a/generators/poppler/generator_pdf.h +++ b/generators/poppler/generator_pdf.h @@ -75,8 +75,6 @@ class PDFGenerator : public Okular::Generator, public Okular::ConfigInterface void generatePixmap( Okular::PixmapRequest * request ); void generateSyncTextPage( Okular::Page * page ); - bool supportsSearching() const { return true; }; - // [INHERITED] print page using an already configured kprinter bool print( KPrinter& printer );