diff options
Diffstat (limited to 'tdespell2/backgroundengine.cpp')
-rw-r--r-- | tdespell2/backgroundengine.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/tdespell2/backgroundengine.cpp b/tdespell2/backgroundengine.cpp new file mode 100644 index 000000000..9eafe1b2e --- /dev/null +++ b/tdespell2/backgroundengine.cpp @@ -0,0 +1,138 @@ +/** + * backgroundengine.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 "backgroundengine.h" + +#include "defaultdictionary.h" +#include "dictionary.h" +#include "filter.h" + +#include <kdebug.h> + +#include <tqtimer.h> + +using namespace KSpell2; + +BackgroundEngine::BackgroundEngine( TQObject *parent ) + : TQObject( parent ) +{ + m_filter = Filter::defaultFilter(); + m_dict = 0; +} + +BackgroundEngine::~BackgroundEngine() +{ + delete m_dict; m_dict = 0; +} + +void BackgroundEngine::setBroker( const Broker::Ptr& broker ) +{ + m_broker = broker; + delete m_dict; + m_defaultDict = m_broker->defaultDictionary(); + m_filter->setSettings( m_broker->settings() ); +} + +void BackgroundEngine::setText( const TQString& text ) +{ + m_filter->setBuffer( text ); +} + +TQString BackgroundEngine::text() const +{ + return m_filter->buffer(); +} + +void BackgroundEngine::changeLanguage( const TQString& lang ) +{ + delete m_dict; + if ( lang.isEmpty() ) { + m_dict = 0; + } else { + m_dict = m_broker->dictionary( lang ); + } +} + +TQString BackgroundEngine::language() const +{ + if ( m_dict ) + return m_dict->language(); + else + return m_defaultDict->language(); +} + +void BackgroundEngine::setFilter( Filter *filter ) +{ + TQString oldText = m_filter->buffer(); + m_filter = filter; + m_filter->setBuffer( oldText ); +} + +void BackgroundEngine::start() +{ + TQTimer::singleShot( 0, this, TQT_SLOT(checkNext()) ); +} + +void BackgroundEngine::stop() +{ +} + +void BackgroundEngine::continueChecking() +{ + TQTimer::singleShot( 0, this, TQT_SLOT(checkNext()) ); +} + +void BackgroundEngine::checkNext() +{ + Word w = m_filter->nextWord(); + if ( w.end ) { + emit done(); + return; + } + + Dictionary *dict = ( m_dict ) ? m_dict : static_cast<Dictionary*>( m_defaultDict ); + + if ( !dict->check( w.word ) ) { + //kdDebug()<<"found misspelling "<< w.word <<endl; + emit misspelling( w.word, w.start ); + //wait for the handler. the parent will decide itself when to continue + } else + continueChecking(); +} + +bool BackgroundEngine::checkWord( const TQString& word ) +{ + Dictionary *dict = ( m_dict ) ? m_dict : static_cast<Dictionary*>( m_defaultDict ); + return dict->check( word ); +} + +bool BackgroundEngine::addWord( const TQString& word ) +{ + Dictionary *dict = ( m_dict ) ? m_dict : static_cast<Dictionary*>( m_defaultDict ); + return dict->addToPersonal( word ); +} + +TQStringList BackgroundEngine::suggest( const TQString& word ) +{ + Dictionary *dict = ( m_dict ) ? m_dict : static_cast<Dictionary*>( m_defaultDict ); + return dict->suggest( word ); +} + +#include "backgroundengine.moc" |