search line edit:

- save and get wether a search is running
- add a method to cancel a running one

svn path=/trunk/KDE/kdegraphics/okular/; revision=965457
remotes/origin/KDE/4.3
Pino Toscano 17 years ago
parent 23f93e3a71
commit 3a31169487
  1. 24
      ui/searchlineedit.cpp
  2. 4
      ui/searchlineedit.h

@ -24,7 +24,8 @@ SearchLineEdit::SearchLineEdit( QWidget * parent, Okular::Document * document )
: KLineEdit( parent ), m_document( document ), m_minLength( 0 ), : KLineEdit( parent ), m_document( document ), m_minLength( 0 ),
m_caseSensitivity( Qt::CaseInsensitive ), m_caseSensitivity( Qt::CaseInsensitive ),
m_searchType( Okular::Document::AllDocument ), m_id( -1 ), m_searchType( Okular::Document::AllDocument ), m_id( -1 ),
m_moveViewport( false ), m_changed( false ), m_fromStart( true ) m_moveViewport( false ), m_changed( false ), m_fromStart( true ),
m_searchRunning( false )
{ {
setObjectName( "SearchLineEdit" ); setObjectName( "SearchLineEdit" );
setClearButtonShown( true ); setClearButtonShown( true );
@ -87,6 +88,11 @@ void SearchLineEdit::setSearchFromStart( bool fromStart )
m_fromStart = fromStart; m_fromStart = fromStart;
} }
bool SearchLineEdit::isSearchRunning() const
{
return m_searchRunning;
}
void SearchLineEdit::restartSearch() void SearchLineEdit::restartSearch()
{ {
m_inputDelayTimer->stop(); m_inputDelayTimer->stop();
@ -94,6 +100,18 @@ void SearchLineEdit::restartSearch()
m_changed = true; m_changed = true;
} }
void SearchLineEdit::stopSearch()
{
if ( m_id == -1 || !m_searchRunning )
return;
m_inputDelayTimer->stop();
// ### this should just cancel the search with id m_id, not all of them
m_document->cancelSearch();
// flagging as "changed" so the search will be reset at the next one
m_changed = true;
}
void SearchLineEdit::findNext() void SearchLineEdit::findNext()
{ {
if ( m_id == -1 || m_searchType != Okular::Document::NextMatch ) if ( m_id == -1 || m_searchType != Okular::Document::NextMatch )
@ -102,6 +120,7 @@ void SearchLineEdit::findNext()
if ( !m_changed ) if ( !m_changed )
{ {
emit searchStarted(); emit searchStarted();
m_searchRunning = true;
m_document->continueSearch( m_id, m_searchType ); m_document->continueSearch( m_id, m_searchType );
} }
else else
@ -116,6 +135,7 @@ void SearchLineEdit::findPrev()
if ( !m_changed ) if ( !m_changed )
{ {
emit searchStarted(); emit searchStarted();
m_searchRunning = true;
m_document->continueSearch( m_id, m_searchType ); m_document->continueSearch( m_id, m_searchType );
} }
else else
@ -157,6 +177,7 @@ void SearchLineEdit::startSearch()
if ( thistext.length() >= qMax( m_minLength, 1 ) ) if ( thistext.length() >= qMax( m_minLength, 1 ) )
{ {
emit searchStarted(); emit searchStarted();
m_searchRunning = true;
m_document->searchText( m_id, thistext, m_fromStart, m_caseSensitivity, m_document->searchText( m_id, thistext, m_fromStart, m_caseSensitivity,
m_searchType, m_moveViewport, m_color ); m_searchType, m_moveViewport, m_color );
} }
@ -188,6 +209,7 @@ void SearchLineEdit::searchFinished( int id, Okular::Document::SearchStatus endS
setPalette( pal ); setPalette( pal );
} }
m_searchRunning = false;
emit searchStopped(); emit searchStopped();
} }

@ -37,12 +37,15 @@ class SearchLineEdit : public KLineEdit
void setSearchMoveViewport( bool move ); void setSearchMoveViewport( bool move );
void setSearchFromStart( bool fromStart ); void setSearchFromStart( bool fromStart );
bool isSearchRunning() const;
signals: signals:
void searchStarted(); void searchStarted();
void searchStopped(); void searchStopped();
public slots: public slots:
void restartSearch(); void restartSearch();
void stopSearch();
void findNext(); void findNext();
void findPrev(); void findPrev();
@ -57,6 +60,7 @@ class SearchLineEdit : public KLineEdit
bool m_moveViewport; bool m_moveViewport;
bool m_changed; bool m_changed;
bool m_fromStart; bool m_fromStart;
bool m_searchRunning;
private slots: private slots:
void slotTextChanged( const QString & text ); void slotTextChanged( const QString & text );

Loading…
Cancel
Save