summaryrefslogtreecommitdiffstats
path: root/kspell2/broker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kspell2/broker.cpp')
-rw-r--r--kspell2/broker.cpp252
1 files changed, 0 insertions, 252 deletions
diff --git a/kspell2/broker.cpp b/kspell2/broker.cpp
deleted file mode 100644
index 6d17c403f..000000000
--- a/kspell2/broker.cpp
+++ /dev/null
@@ -1,252 +0,0 @@
-// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*-
-/**
- * broker.cpp
- *
- * Copyright (C) 2003 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 "broker.h"
-#include "settings.h"
-#include "client.h"
-#include "defaultdictionary.h"
-#include "dictionary.h"
-
-#include <kparts/plugin.h>
-#include <kparts/componentfactory.h>
-
-#include <kplugininfo.h>
-#include <ktrader.h>
-#include <kconfig.h>
-
-#include <kdebug.h>
-
-#include <tqptrdict.h>
-#include <tqmap.h>
-
-#define DEFAULT_CONFIG_FILE "kspellrc"
-
-namespace KSpell2
-{
-
-class Broker::Private
-{
-public:
- KPluginInfo::List plugins;
- Settings *settings;
-
- // <language, Clients with that language >
- TQMap<TQString, TQPtrList<Client> > languageClients;
- TQStringList clients;
- DefaultDictionary *defaultDictionary;
-};
-
-TQPtrDict<Broker> *Broker::s_brokers = 0;
-
-Broker *Broker::openBroker( KSharedConfig *config )
-{
- KSharedConfig::Ptr preventDeletion;
- if ( !config ) {
- preventDeletion = KSharedConfig::openConfig( DEFAULT_CONFIG_FILE );
- } else
- preventDeletion = config;
-
- if ( s_brokers ) {
- Broker *broker = s_brokers->find( preventDeletion );
- if ( broker )
- return broker;
- }
-
- Broker *broker = new Broker( preventDeletion );
- return broker;
-}
-
-Broker::Broker( KSharedConfig *config )
-{
- KSharedConfig::Ptr preventDeletion( config );
- Q_UNUSED( preventDeletion );
-
- if ( !s_brokers )
- s_brokers = new TQPtrDict<Broker>;
- s_brokers->insert( config, this );
-
- d = new Private;
- d->settings = new Settings( this, config );
- loadPlugins();
-
- d->defaultDictionary = new DefaultDictionary( d->settings->defaultLanguage(),
- this );
-}
-
-Broker::~Broker()
-{
- kdDebug()<<"Removing broker : "<< this << endl;
- s_brokers->remove( d->settings->sharedConfig() );
- KPluginInfo::List::iterator it = d->plugins.begin();
- while ( it != d->plugins.end() ) {
- KPluginInfo *pluginInfo = *it;
- it = d->plugins.remove( it );
- delete pluginInfo;
- }
-
- delete d->settings; d->settings = 0;
- delete d; d = 0;
-}
-
-DefaultDictionary* Broker::defaultDictionary() const
-{
- return d->defaultDictionary;
-}
-
-Dictionary* Broker::dictionary( const TQString& language, const TQString& clientName ) const
-{
- TQString pclient = clientName;
- TQString plang = language;
- bool ddefault = false;
-
- if ( plang.isEmpty() ) {
- plang = d->settings->defaultLanguage();
- }
- if ( clientName == d->settings->defaultClient() &&
- plang == d->settings->defaultLanguage() ) {
- ddefault = true;
- }
-
- TQPtrList<Client> lClients = d->languageClients[ plang ];
-
- if ( lClients.isEmpty() ) {
- kdError()<<"No language dictionaries for the language : "<< plang <<endl;
- return 0;
- }
-
- TQPtrListIterator<Client> itr( lClients );
- while ( itr.current() ) {
- if ( !pclient.isEmpty() ) {
- if ( pclient == itr.current()->name() ) {
- Dictionary *dict = itr.current()->dictionary( plang );
- if ( dict ) //remove the if if the assert proves ok
- dict->m_default = ddefault;
- return dict;
- }
- } else {
- //the first one is the one with the highest
- //reliability
- Dictionary *dict = itr.current()->dictionary( plang );
- Q_ASSERT( dict );
- if ( dict ) //remove the if if the assert proves ok
- dict->m_default = ddefault;
- return dict;
- }
- ++itr;
- }
-
- return 0;
-}
-
-TQStringList Broker::clients() const
-{
- return d->clients;
-}
-
-TQStringList Broker::languages() const
-{
- return d->languageClients.keys();
-}
-
-Settings* Broker::settings() const
-{
- return d->settings;
-}
-
-void Broker::loadPlugins()
-{
- d->plugins = KPluginInfo::fromServices(
- KTrader::self()->query( "KSpell/Client" ) );
-
- for ( KPluginInfo::List::Iterator itr = d->plugins.begin();
- itr != d->plugins.end(); ++itr ) {
- loadPlugin( ( *itr )->pluginName() );
- }
-}
-
-void Broker::loadPlugin( const TQString& pluginId )
-{
- int error = 0;
-
- kdDebug()<<"Loading plugin " << pluginId << endl;
-
- Client *client = KParts::ComponentFactory::createInstanceFromQuery<Client>(
- TQString::fromLatin1( "KSpell/Client" ),
- TQString::fromLatin1( "[X-TDE-PluginInfo-Name]=='%1'" ).arg( pluginId ),
- this, 0, TQStringList(), &error );
-
- if ( client )
- {
- TQStringList languages = client->languages();
- d->clients.append( client->name() );
-
- for ( TQStringList::Iterator itr = languages.begin();
- itr != languages.end(); ++itr ) {
- if ( !d->languageClients[ *itr ].isEmpty() &&
- client->reliability() < d->languageClients[ *itr ].first()->reliability() )
- d->languageClients[ *itr ].append( client );
- else
- d->languageClients[ *itr ].prepend( client );
- }
-
- kdDebug() << k_funcinfo << "Successfully loaded plugin '"
- << pluginId << "'" << endl;
- }
- else
- {
- switch( error )
- {
- case KParts::ComponentFactory::ErrNoServiceFound:
- kdDebug() << k_funcinfo << "No service implementing the given mimetype "
- << "and fullfilling the given constraint expression can be found."
- << endl;
- break;
- case KParts::ComponentFactory::ErrServiceProvidesNoLibrary:
- kdDebug() << "the specified service provides no shared library." << endl;
- break;
- case KParts::ComponentFactory::ErrNoLibrary:
- kdDebug() << "the specified library could not be loaded." << endl;
- break;
- case KParts::ComponentFactory::ErrNoFactory:
- kdDebug() << "the library does not export a factory for creating components."
- << endl;
- break;
- case KParts::ComponentFactory::ErrNoComponent:
- kdDebug() << "the factory does not support creating "
- << "components of the specified type."
- << endl;
- break;
- }
-
- kdDebug() << k_funcinfo << "Loading plugin '" << pluginId
- << "' failed, KLibLoader reported error: '" << endl
- << KLibLoader::self()->lastErrorMessage() << "'" << endl;
- }
-}
-
-void Broker::changed()
-{
- emit configurationChanged();
-}
-
-}
-
-#include "broker.moc"