NepomukDaemons
strigiservice.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "strigiservice.h"
00020 #include "strigiserviceadaptor.h"
00021 #include "priority.h"
00022 #include "indexscheduler.h"
00023 #include "eventmonitor.h"
00024 #include "systray.h"
00025 #include "config.h"
00026 #include "statuswidget.h"
00027 #include "nepomukstorageinterface.h"
00028
00029 #include <KDebug>
00030
00031 #include <strigi/indexpluginloader.h>
00032 #include <strigi/indexmanager.h>
00033
00034 #include <nepomuk/resourcemanager.h>
00035
00036
00037 Nepomuk::StrigiService::StrigiService( QObject* parent, const QList<QVariant>& )
00038 : Service( parent, true )
00039 {
00040
00041 ResourceManager::instance()->setOverrideMainModel( mainModel() );
00042
00043
00044
00045 if ( !lowerPriority() )
00046 kDebug() << "Failed to lower priority.";
00047 if ( !lowerSchedulingPriority() )
00048 kDebug() << "Failed to lower scheduling priority.";
00049 if ( !lowerIOPriority() )
00050 kDebug() << "Failed to lower io priority.";
00051
00052
00053
00054
00055 if ( org::kde::nepomuk::Storage( "org.kde.NepomukStorage",
00056 "/nepomukstorage",
00057 QDBusConnection::sessionBus() )
00058 .usedSopranoBackend().value() != QString::fromLatin1( "redland" ) ) {
00059
00060
00061 if ( ( m_indexManager = Strigi::IndexPluginLoader::createIndexManager( "sopranobackend", 0 ) ) ) {
00062 m_indexScheduler = new IndexScheduler( m_indexManager, this );
00063
00064 ( void )new EventMonitor( m_indexScheduler, this );
00065 ( void )new StrigiServiceAdaptor( m_indexScheduler, this );
00066 StatusWidget* sw = new StatusWidget( mainModel(), m_indexScheduler );
00067 ( new SystemTray( m_indexScheduler, sw ) )->show();
00068
00069 m_indexScheduler->start();
00070 }
00071 else {
00072 kDebug() << "Failed to load sopranobackend Strigi index manager.";
00073 }
00074
00075
00076
00077
00078 setServiceInitialized( m_indexManager != 0 );
00079 }
00080 else {
00081 kDebug() << "Will not start when using redland Soprano backend due to horrible performance.";
00082 setServiceInitialized( false );
00083 }
00084 }
00085
00086
00087 Nepomuk::StrigiService::~StrigiService()
00088 {
00089 if ( m_indexManager ) {
00090 m_indexScheduler->stop();
00091 m_indexScheduler->wait();
00092 Strigi::IndexPluginLoader::deleteIndexManager( m_indexManager );
00093 }
00094 }
00095
00096
00097 #include <kpluginfactory.h>
00098 #include <kpluginloader.h>
00099
00100 NEPOMUK_EXPORT_SERVICE( Nepomuk::StrigiService, "nepomukstrigiservice" )
00101
00102 #include "strigiservice.moc"
00103