您最多能選擇 25 個主題 主題必須以字母或數字為開頭,可包含連接號「-」且最長為 35 個字元。
tdelibs/tdespell2/backgroundchecker.cpp

180 行
4.7 KiB

/**
* backgroundchecker.cpp
*
* Copyright (C) 2004 Zack Rusin <zack@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#include "backgroundchecker.h"
#include "broker.h"
#include "backgroundengine.h"
//#include "backgroundthread.h"
//#include "threadevents.h"
#include <kdebug.h>
using namespace KSpell2;
class BackgroundChecker::Private
{
public:
//BackgroundThread thread;
BackgroundEngine *engine;
TQString currentText;
};
BackgroundChecker::BackgroundChecker( const Broker::Ptr& broker, TQObject* parent,
const char *name )
: TQObject( parent, name )
{
d = new Private;
//d->thread.setReceiver( this );
//d->thread.setBroker( broker );
d->engine = new BackgroundEngine( this );
d->engine->setBroker( broker );
connect( d->engine, TQ_SIGNAL(misspelling( const TQString&, int )),
TQ_SIGNAL(misspelling( const TQString&, int )) );
connect( d->engine, TQ_SIGNAL(done()),
TQ_SLOT(slotEngineDone()) );
}
BackgroundChecker::~BackgroundChecker()
{
delete d;
}
void BackgroundChecker::checkText( const TQString& text )
{
d->currentText = text;
//d->thread.setText( text );
d->engine->setText( text );
d->engine->start();
}
void BackgroundChecker::start()
{
d->currentText = getMoreText();
// ## what if d->currentText.isEmpty()?
//kdDebug()<<"KSpell BackgroundChecker: starting with : \"" << d->currentText << "\""<<endl;
//d->thread.setText( d->currentText );
d->engine->setText( d->currentText );
d->engine->start();
}
void BackgroundChecker::stop()
{
//d->thread.stop();
d->engine->stop();
}
TQString BackgroundChecker::getMoreText()
{
return TQString::null;
}
void BackgroundChecker::finishedCurrentFeed()
{
}
void BackgroundChecker::setFilter( Filter *filter )
{
//d->thread.setFilter( filter );
d->engine->setFilter( filter );
}
Filter *BackgroundChecker::filter() const
{
//return d->thread.filter();
return d->engine->filter();
}
Broker *BackgroundChecker::broker() const
{
//return d->thread.broker();
return d->engine->broker();
}
bool BackgroundChecker::checkWord( const TQString& word )
{
//kdDebug()<<"checking word \""<<word<< "\""<<endl;
return d->engine->checkWord( word );
}
bool BackgroundChecker::addWord( const TQString& word )
{
return d->engine->addWord( word );
}
TQStringList BackgroundChecker::suggest( const TQString& word ) const
{
//return d->thread.suggest( word );
return d->engine->suggest( word );
}
void BackgroundChecker::changeLanguage( const TQString& lang )
{
//d->thread.changeLanguage( lang );
d->engine->changeLanguage( lang );
}
void BackgroundChecker::continueChecking()
{
d->engine->continueChecking();
}
void BackgroundChecker::slotEngineDone()
{
finishedCurrentFeed();
d->currentText = getMoreText();
if ( d->currentText.isNull() ) {
emit done();
} else {
//d->thread.setText( d->currentText );
d->engine->setText( d->currentText );
d->engine->start();
}
}
//////////////////////////////////////////////////////////////////
#if 0
void BackgroundChecker::customEvent( TQCustomEvent *event )
{
if ( (int)event->type() == FoundMisspelling ) {
MisspellingEvent *me = static_cast<MisspellingEvent*>( event );
kdDebug()<<"Found misspelling of \"" << me->word() << "\"" <<endl;
TQString currentWord = d->currentText.mid( me->position(), me->word().length() );
if ( currentWord == me->word() )
emit misspelling( me->word(), me->position() );
else {
kdDebug()<<"Cleaning up misspelling for old text which is \""<<currentWord
<<"\" and should be \""<<me->word()<<"\""<<endl;
}
} else if ( (int)event->type() == FinishedChecking ) {
d->currentText = getMoreText();
if ( d->currentText.isEmpty() )
emit done();
else
d->thread.setText( d->currentText );
} else {
TQObject::customEvent( event );
}
}
#endif
#include "backgroundchecker.moc"