• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

Nepomuk-Core

  • sources
  • kde-4.12
  • kdelibs
  • nepomuk-core
  • server
nepomukserver.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE Project
2  Copyright (c) 2007 Sebastian Trueg <trueg@kde.org>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License version 2 as published by the Free Software Foundation.
7 
8  This library is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  Library General Public License for more details.
12 
13  You should have received a copy of the GNU Library General Public License
14  along with this library; see the file COPYING.LIB. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 #include "nepomukserver.h"
20 #include "nepomukserveradaptor.h"
21 #include "nepomukserversettings.h"
22 #include "servicemanager.h"
23 #include "servicemanageradaptor.h"
24 
25 #include <Soprano/Global>
26 
27 #include <KConfig>
28 #include <KConfigGroup>
29 #include <KDebug>
30 #include <KGlobal>
31 #include <KStandardDirs>
32 
33 #include <QtDBus/QDBusConnection>
34 
35 
36 Nepomuk2::Server* Nepomuk2::Server::s_self = 0;
37 
38 Nepomuk2::Server::Server( bool noServices, QObject* parent )
39  : QObject( parent ),
40  m_fileIndexerServiceName( "nepomukfileindexer" ),
41  m_noServices(noServices),
42  m_currentState(StateDisabled)
43 {
44  s_self = this;
45 
46  m_config = KSharedConfig::openConfig( "nepomukserverrc" );
47 
48  QDBusConnection::sessionBus().registerService( "org.kde.NepomukServer" );
49 
50  // register the nepomuk server adaptor
51  (void)new NepomukServerAdaptor( this );
52  QDBusConnection::sessionBus().registerObject( "/nepomukserver", this );
53 
54  // create the service manager.
55  m_serviceManager = new ServiceManager( this );
56  connect(m_serviceManager, SIGNAL(serviceInitialized(QString)),
57  this, SLOT(slotServiceInitialized(QString)));
58  connect(m_serviceManager, SIGNAL(serviceStopped(QString)),
59  this, SLOT(slotServiceStopped(QString)));
60  (void)new ServiceManagerAdaptor( m_serviceManager );
61 
62  // initialize according to config
63  init();
64 
65  // Quit the server if Nepomuk is not running
66  if( m_currentState == StateDisabled ) {
67  quit();
68  }
69 }
70 
71 
72 Nepomuk2::Server::~Server()
73 {
74  NepomukServerSettings::self()->writeConfig();
75  QDBusConnection::sessionBus().unregisterService( "org.kde.NepomukServer" );
76 }
77 
78 
79 void Nepomuk2::Server::init()
80 {
81  // no need to start the file indexer explicitly. it is done in enableNepomuk
82  enableNepomuk( NepomukServerSettings::self()->startNepomuk() );
83 }
84 
85 
86 void Nepomuk2::Server::enableNepomuk( bool enabled )
87 {
88  kDebug() << "enableNepomuk" << enabled;
89  if ( enabled != isNepomukEnabled() ) {
90  if ( enabled ) {
91  // update the server state
92  m_currentState = StateEnabling;
93 
94  // start all autostart services
95  if( !m_noServices )
96  m_serviceManager->startAllServices();
97 
98  // register the service manager interface
99  QDBusConnection::sessionBus().registerObject( "/servicemanager", m_serviceManager );
100  }
101  else {
102  // update the server state
103  m_currentState = StateDisabling;
104 
105  // stop all running services
106  m_serviceManager->stopAllServices();
107  connect(this, SIGNAL(nepomukDisabled()),
108  QCoreApplication::instance(), SLOT(quit()));
109 
110  // unregister the service manager interface
111  QDBusConnection::sessionBus().unregisterObject( "/servicemanager" );
112  }
113  }
114 }
115 
116 
117 void Nepomuk2::Server::enableFileIndexer( bool enabled )
118 {
119  kDebug() << enabled;
120  if ( isNepomukEnabled() ) {
121  if ( enabled ) {
122  m_serviceManager->startService( m_fileIndexerServiceName );
123  }
124  else {
125  m_serviceManager->stopService( m_fileIndexerServiceName );
126  }
127  }
128 }
129 
130 
131 bool Nepomuk2::Server::isNepomukEnabled() const
132 {
133  return m_currentState == StateEnabled || m_currentState == StateEnabling;
134 }
135 
136 
137 bool Nepomuk2::Server::isFileIndexerEnabled() const
138 {
139  return m_serviceManager->runningServices().contains( m_fileIndexerServiceName );
140 }
141 
142 
143 QString Nepomuk2::Server::defaultRepository() const
144 {
145  return QLatin1String("main");
146 }
147 
148 
149 void Nepomuk2::Server::reconfigure()
150 {
151  NepomukServerSettings::self()->config()->sync();
152  NepomukServerSettings::self()->readConfig();
153  init();
154 }
155 
156 
157 void Nepomuk2::Server::quit()
158 {
159  if( isNepomukEnabled() &&
160  !m_serviceManager->runningServices().isEmpty() ) {
161  enableNepomuk(false);
162  }
163  else {
164  // We use a QTimer because the event loop might not be running when
165  // this is called, in that case 'quit' will do nothing
166  QTimer::singleShot( 0, QCoreApplication::instance(), SLOT(quit()) );
167  }
168 }
169 
170 
171 KSharedConfig::Ptr Nepomuk2::Server::config() const
172 {
173  return m_config;
174 }
175 
176 
177 Nepomuk2::Server* Nepomuk2::Server::self()
178 {
179  return s_self;
180 }
181 
182 void Nepomuk2::Server::slotServiceStopped(const QString &name)
183 {
184  Q_UNUSED(name);
185 
186  kDebug() << name;
187 
188  if(m_currentState == StateDisabling &&
189  m_serviceManager->runningServices().isEmpty()) {
190  m_currentState = StateDisabled;
191  emit nepomukDisabled();
192  }
193  else {
194  kDebug() << "Services still running:" << m_serviceManager->runningServices();
195  }
196 }
197 
198 void Nepomuk2::Server::slotServiceInitialized(const QString &name)
199 {
200  Q_UNUSED(name);
201 
202  if(m_currentState == StateEnabling &&
203  m_serviceManager->pendingServices().isEmpty()) {
204  m_currentState = StateEnabled;
205  emit nepomukEnabled();
206  }
207 }
208 
209 #include "nepomukserver.moc"
Nepomuk2::Server::enableFileIndexer
void enableFileIndexer(bool enabled)
Definition: nepomukserver.cpp:117
nepomukserver.h
QObject
Nepomuk2::Server::quit
void quit()
Asyncronically quits the server by first stopping all services and then calling QCoreApplication::qui...
Definition: nepomukserver.cpp:157
servicemanager.h
Nepomuk2::Server::~Server
virtual ~Server()
Definition: nepomukserver.cpp:72
Nepomuk2::Server::isFileIndexerEnabled
bool isFileIndexerEnabled() const
Definition: nepomukserver.cpp:137
Nepomuk2::ServiceManager
Manages all Nepomuk services.
Definition: servicemanager.h:34
Nepomuk2::Server::reconfigure
void reconfigure()
Definition: nepomukserver.cpp:149
Nepomuk2::Server::isNepomukEnabled
bool isNepomukEnabled() const
Definition: nepomukserver.cpp:131
Nepomuk2::Server::self
static Server * self()
Definition: nepomukserver.cpp:177
NepomukServerSettings::self
static NepomukServerSettings * self()
Definition: nepomukserversettings.cpp:17
nepomukserversettings.h
Nepomuk2::Server
Definition: nepomukserver.h:34
Nepomuk2::Server::enableNepomuk
void enableNepomuk(bool enabled)
Definition: nepomukserver.cpp:86
Nepomuk2::Server::Server
Server(bool noServices, QObject *parent=0)
Definition: nepomukserver.cpp:38
Nepomuk2::Server::config
KSharedConfig::Ptr config() const
Definition: nepomukserver.cpp:171
Nepomuk2::Server::defaultRepository
QString defaultRepository() const
Definition: nepomukserver.cpp:143
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Nepomuk-Core

Skip menu "Nepomuk-Core"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal