diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /kspell2/backgroundchecker.cpp | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kspell2/backgroundchecker.cpp')
-rw-r--r-- | kspell2/backgroundchecker.cpp | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/kspell2/backgroundchecker.cpp b/kspell2/backgroundchecker.cpp new file mode 100644 index 000000000..cf02e0714 --- /dev/null +++ b/kspell2/backgroundchecker.cpp @@ -0,0 +1,179 @@ +/** + * 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; + QString currentText; +}; + +BackgroundChecker::BackgroundChecker( const Broker::Ptr& broker, QObject* parent, + const char *name ) + : QObject( 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, SIGNAL(misspelling( const QString&, int )), + SIGNAL(misspelling( const QString&, int )) ); + connect( d->engine, SIGNAL(done()), + SLOT(slotEngineDone()) ); +} + +BackgroundChecker::~BackgroundChecker() +{ + delete d; +} + +void BackgroundChecker::checkText( const QString& 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(); +} + +QString BackgroundChecker::getMoreText() +{ + return QString::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 QString& word ) +{ + //kdDebug()<<"checking word \""<<word<< "\""<<endl; + return d->engine->checkWord( word ); +} + +bool BackgroundChecker::addWord( const QString& word ) +{ + return d->engine->addWord( word ); +} + +QStringList BackgroundChecker::suggest( const QString& word ) const +{ + //return d->thread.suggest( word ); + return d->engine->suggest( word ); +} + +void BackgroundChecker::changeLanguage( const QString& 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( QCustomEvent *event ) +{ + if ( (int)event->type() == FoundMisspelling ) { + MisspellingEvent *me = static_cast<MisspellingEvent*>( event ); + kdDebug()<<"Found misspelling of \"" << me->word() << "\"" <<endl; + QString 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 { + QObject::customEvent( event ); + } +} +#endif + +#include "backgroundchecker.moc" |