133
133
Nepomuk::ServerConfigModule::ServerConfigModule( QWidget* parent, const QVariantList& args )
134
134
: KCModule( NepomukConfigModuleFactory::componentData(), parent, args ),
135
135
m_serverInterface( 0 ),
136
m_strigiInterface( 0 ),
136
m_fileIndexerInterface( 0 ),
137
137
m_failedToInitialize( false )
139
139
KAboutData *about = new KAboutData(
153
153
m_indexFolderSelectionDialog = new IndexFolderSelectionDialog( this );
155
155
QDBusServiceWatcher * watcher = new QDBusServiceWatcher( this );
156
watcher->addWatchedService( QLatin1String("org.kde.nepomuk.services.nepomukstrigiservice") );
156
watcher->addWatchedService( QLatin1String("org.kde.nepomuk.services.nepomukfileindexer") );
157
157
watcher->addWatchedService( QLatin1String("org.kde.NepomukServer") );
158
158
watcher->setConnection( QDBusConnection::sessionBus() );
159
159
watcher->setWatchMode( QDBusServiceWatcher::WatchForRegistration | QDBusServiceWatcher::WatchForUnregistration );
166
166
recreateInterfaces();
168
connect( m_checkEnableStrigi, SIGNAL( toggled(bool) ),
168
connect( m_checkEnableFileIndexer, SIGNAL( toggled(bool) ),
169
169
this, SLOT( changed() ) );
170
170
connect( m_checkEnableNepomuk, SIGNAL( toggled(bool) ),
171
171
this, SLOT( changed() ) );
248
248
// 1. basic setup
249
249
KConfig config( "nepomukserverrc" );
250
250
m_checkEnableNepomuk->setChecked( config.group( "Basic Settings" ).readEntry( "Start Nepomuk", true ) );
251
m_checkEnableStrigi->setChecked( config.group( "Service-nepomukstrigiservice" ).readEntry( "autostart", true ) );
254
// 2. strigi settings
255
KConfig strigiConfig( "nepomukstrigirc" );
256
m_indexFolderSelectionDialog->setIndexHiddenFolders( strigiConfig.group( "General" ).readEntry( "index hidden folders", false ) );
257
m_indexFolderSelectionDialog->setFolders( strigiConfig.group( "General" ).readPathEntry( "folders", defaultFolders() ),
258
strigiConfig.group( "General" ).readPathEntry( "exclude folders", QStringList() ) );
259
m_indexFolderSelectionDialog->setExcludeFilters( strigiConfig.group( "General" ).readEntry( "exclude filters", Nepomuk::defaultExcludeFilterList() ) );
261
const bool indexNewlyMounted = strigiConfig.group( "RemovableMedia" ).readEntry( "index newly mounted", false );
262
const bool askIndividually = strigiConfig.group( "RemovableMedia" ).readEntry( "ask user", false );
251
m_checkEnableFileIndexer->setChecked( config.group( "Service-nepomukfileindexer" ).readEntry( "autostart", true ) );
254
// 2. file indexer settings
255
KConfig fileIndexerConfig( "nepomukstrigirc" );
256
m_indexFolderSelectionDialog->setIndexHiddenFolders( fileIndexerConfig.group( "General" ).readEntry( "index hidden folders", false ) );
257
m_indexFolderSelectionDialog->setFolders( fileIndexerConfig.group( "General" ).readPathEntry( "folders", defaultFolders() ),
258
fileIndexerConfig.group( "General" ).readPathEntry( "exclude folders", QStringList() ) );
259
m_indexFolderSelectionDialog->setExcludeFilters( fileIndexerConfig.group( "General" ).readEntry( "exclude filters", Nepomuk::defaultExcludeFilterList() ) );
261
const bool indexNewlyMounted = fileIndexerConfig.group( "RemovableMedia" ).readEntry( "index newly mounted", false );
262
const bool askIndividually = fileIndexerConfig.group( "RemovableMedia" ).readEntry( "ask user", false );
263
263
// combobox items: 0 - ignore, 1 - index all, 2 - ask user
264
264
m_comboRemovableMediaHandling->setCurrentIndex(int(indexNewlyMounted) + int(askIndividually));
303
303
m_labelIndexFolders->setText( buildFolderLabel( m_indexFolderSelectionDialog->includeFolders(),
304
304
m_indexFolderSelectionDialog->excludeFolders() ) );
305
305
recreateInterfaces();
306
updateStrigiStatus();
306
updateFileIndexerStatus();
307
307
updateNepomukServerStatus();
309
309
// 7. all values loaded -> no changes
322
322
// 1. change the settings (in case the server is not running)
323
323
KConfig config( "nepomukserverrc" );
324
324
config.group( "Basic Settings" ).writeEntry( "Start Nepomuk", m_checkEnableNepomuk->isChecked() );
325
config.group( "Service-nepomukstrigiservice" ).writeEntry( "autostart", m_checkEnableStrigi->isChecked() );
325
config.group( "Service-nepomukfileindexer" ).writeEntry( "autostart", m_checkEnableFileIndexer->isChecked() );
326
326
config.group( "main Settings" ).writeEntry( "Maximum memory", m_sliderMemoryUsage->value() );
329
// 2. update Strigi config
330
KConfig strigiConfig( "nepomukstrigirc" );
331
strigiConfig.group( "General" ).writePathEntry( "folders", includeFolders );
332
strigiConfig.group( "General" ).writePathEntry( "exclude folders", excludeFolders );
333
strigiConfig.group( "General" ).writeEntry( "exclude filters", m_indexFolderSelectionDialog->excludeFilters() );
334
strigiConfig.group( "General" ).writeEntry( "index hidden folders", m_indexFolderSelectionDialog->indexHiddenFolders() );
329
// 2. update file indexer config
330
KConfig fileIndexerConfig( "nepomukstrigirc" );
331
fileIndexerConfig.group( "General" ).writePathEntry( "folders", includeFolders );
332
fileIndexerConfig.group( "General" ).writePathEntry( "exclude folders", excludeFolders );
333
fileIndexerConfig.group( "General" ).writeEntry( "exclude filters", m_indexFolderSelectionDialog->excludeFilters() );
334
fileIndexerConfig.group( "General" ).writeEntry( "index hidden folders", m_indexFolderSelectionDialog->indexHiddenFolders() );
336
336
// combobox items: 0 - ignore, 1 - index all, 2 - ask user
337
strigiConfig.group( "RemovableMedia" ).writeEntry( "index newly mounted", m_comboRemovableMediaHandling->currentIndex() > 0 );
338
strigiConfig.group( "RemovableMedia" ).writeEntry( "ask user", m_comboRemovableMediaHandling->currentIndex() == 2 );
337
fileIndexerConfig.group( "RemovableMedia" ).writeEntry( "index newly mounted", m_comboRemovableMediaHandling->currentIndex() > 0 );
338
fileIndexerConfig.group( "RemovableMedia" ).writeEntry( "ask user", m_comboRemovableMediaHandling->currentIndex() == 2 );
341
341
// 3. update kio_nepomuksearch config
357
357
// 5. update the current state of the nepomuk server
358
358
if ( m_serverInterface->isValid() ) {
359
359
m_serverInterface->enableNepomuk( m_checkEnableNepomuk->isChecked() );
360
m_serverInterface->enableStrigi( m_checkEnableStrigi->isChecked() );
360
m_serverInterface->enableFileIndexer( m_checkEnableFileIndexer->isChecked() );
362
362
else if( m_checkEnableNepomuk->isChecked() ) {
363
363
if ( !QProcess::startDetached( QLatin1String( "nepomukserver" ) ) ) {
385
385
if ( !m_nepomukAvailable )
388
m_checkEnableStrigi->setChecked( true );
388
m_checkEnableFileIndexer->setChecked( true );
389
389
m_checkEnableNepomuk->setChecked( true );
390
390
m_indexFolderSelectionDialog->setIndexHiddenFolders( false );
391
391
m_indexFolderSelectionDialog->setExcludeFilters( Nepomuk::defaultExcludeFilterList() );
412
void Nepomuk::ServerConfigModule::updateStrigiStatus()
412
void Nepomuk::ServerConfigModule::updateFileIndexerStatus()
414
if ( QDBusConnection::sessionBus().interface()->isServiceRegistered( "org.kde.nepomuk.services.nepomukstrigiservice" ) ) {
415
if ( org::kde::nepomuk::ServiceControl( "org.kde.nepomuk.services.nepomukstrigiservice", "/servicecontrol", QDBusConnection::sessionBus() ).isInitialized() ) {
416
QString status = m_strigiInterface->userStatusString();
414
if ( QDBusConnection::sessionBus().interface()->isServiceRegistered( "org.kde.nepomuk.services.nepomukfileindexer" ) ) {
415
if ( org::kde::nepomuk::ServiceControl( "org.kde.nepomuk.services.nepomukfileindexer", "/servicecontrol", QDBusConnection::sessionBus() ).isInitialized() ) {
416
QString status = m_fileIndexerInterface->userStatusString();
417
417
if ( status.isEmpty() ) {
418
m_labelStrigiStatus->setText( i18nc( "@info:status %1 is an error message returned by a dbus interface.",
419
"Failed to contact Strigi indexer (%1)",
420
m_strigiInterface->lastError().message() ) );
418
m_labelFileIndexerStatus->setText( i18nc( "@info:status %1 is an error message returned by a dbus interface.",
419
"Failed to contact File Indexer service (%1)",
420
m_fileIndexerInterface->lastError().message() ) );
423
423
m_failedToInitialize = false;
424
m_labelStrigiStatus->setText( status );
424
m_labelFileIndexerStatus->setText( status );
428
428
m_failedToInitialize = true;
429
m_labelStrigiStatus->setText( i18nc( "@info:status", "File indexing service failed to initialize, most likely due to an installation problem." ) );
429
m_labelFileIndexerStatus->setText( i18nc( "@info:status", "File indexing service failed to initialize, most likely due to an installation problem." ) );
432
432
else if ( !m_failedToInitialize ) {
433
m_labelStrigiStatus->setText( i18nc( "@info:status", "File indexing service not running." ) );
433
m_labelFileIndexerStatus->setText( i18nc( "@info:status", "File indexing service not running." ) );
457
457
void Nepomuk::ServerConfigModule::recreateInterfaces()
459
delete m_strigiInterface;
459
delete m_fileIndexerInterface;
460
460
delete m_serverInterface;
462
m_strigiInterface = new org::kde::nepomuk::Strigi( "org.kde.nepomuk.services.nepomukstrigiservice", "/nepomukstrigiservice", QDBusConnection::sessionBus() );
462
m_fileIndexerInterface = new org::kde::nepomuk::FileIndexer( "org.kde.nepomuk.services.nepomukfileindexer", "/nepomukfileindexer", QDBusConnection::sessionBus() );
463
463
m_serverInterface = new org::kde::NepomukServer( "org.kde.NepomukServer", "/nepomukserver", QDBusConnection::sessionBus() );
465
connect( m_strigiInterface, SIGNAL( statusChanged() ),
466
this, SLOT( updateStrigiStatus() ) );
465
connect( m_fileIndexerInterface, SIGNAL( statusChanged() ),
466
this, SLOT( updateFileIndexerStatus() ) );