introduce a SearchLineWidget, which is a SearchLineEdit + AnimatedWidget

this small widget is useful for providing a search line edit with an animated widget next to it, with the latter shown while the search is in progress
currently, the animation is slightly delayed, so we avoid very quick results (ie the next occurrence is on the same page) to show the animation for a very short time

svn path=/trunk/KDE/kdegraphics/okular/; revision=926299
This commit is contained in:
Pino Toscano 2009-02-15 00:32:10 +00:00
parent e7ce996372
commit d89901852c
2 changed files with 59 additions and 0 deletions

View file

@ -11,10 +11,12 @@
#include "searchlineedit.h" #include "searchlineedit.h"
// local includes // local includes
#include "animatedwidget.h"
#include "core/document.h" #include "core/document.h"
// qt/kde includes // qt/kde includes
#include <qapplication.h> #include <qapplication.h>
#include <qlayout.h>
#include <qtimer.h> #include <qtimer.h>
#include <kcolorscheme.h> #include <kcolorscheme.h>
@ -189,4 +191,42 @@ void SearchLineEdit::searchFinished( int id, Okular::Document::SearchStatus endS
emit searchStopped(); emit searchStopped();
} }
SearchLineWidget::SearchLineWidget( QWidget * parent, Okular::Document * document )
: QWidget( parent )
{
QHBoxLayout *layout = new QHBoxLayout( this );
layout->setMargin( 0 );
m_edit = new SearchLineEdit( this, document );
layout->addWidget( m_edit );
m_anim = new AnimatedWidget( "process-working", this );
m_anim->setFixedSize( 22, 22 );
layout->addWidget( m_anim );
m_timer = new QTimer( this );
m_timer->setSingleShot( true );
connect( m_timer, SIGNAL( timeout() ), m_anim, SLOT( start() ) );
connect( m_edit, SIGNAL( searchStarted() ), this, SLOT( slotSearchStarted() ) );
connect( m_edit, SIGNAL( searchStopped() ), this, SLOT( slotSearchStopped() ) );
}
SearchLineEdit* SearchLineWidget::lineEdit() const
{
return m_edit;
}
void SearchLineWidget::slotSearchStarted()
{
m_timer->start( 100 );
}
void SearchLineWidget::slotSearchStopped()
{
m_timer->stop();
m_anim->stop();
}
#include "searchlineedit.moc" #include "searchlineedit.moc"

View file

@ -16,6 +16,7 @@
#include <klineedit.h> #include <klineedit.h>
class QTimer; class QTimer;
class AnimatedWidget;
/** /**
* @short A line edit for find-as-you-type search. Outputs to the Document. * @short A line edit for find-as-you-type search. Outputs to the Document.
@ -63,4 +64,22 @@ class SearchLineEdit : public KLineEdit
void searchFinished( int id, Okular::Document::SearchStatus endStatus ); void searchFinished( int id, Okular::Document::SearchStatus endStatus );
}; };
class SearchLineWidget : public QWidget
{
Q_OBJECT
public:
SearchLineWidget( QWidget *parent, Okular::Document *document );
SearchLineEdit* lineEdit() const;
private slots:
void slotSearchStarted();
void slotSearchStopped();
private:
SearchLineEdit *m_edit;
AnimatedWidget* m_anim;
QTimer *m_timer;
};
#endif #endif